mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
Merge branch 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6
* 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6: (76 commits) pch_uart: reference clock on CM-iTC pch_phub: add new device ML7213 n_gsm: fix UIH control byte : P bit should be 0 n_gsm: add a documentation serial: msm_serial_hs: Add MSM high speed UART driver tty_audit: fix tty_audit_add_data live lock on audit disabled tty: move cd1865.h to drivers/staging/tty/ Staging: tty: fix build with epca.c driver pcmcia: synclink_cs: fix prototype for mgslpc_ioctl() Staging: generic_serial: fix double locking bug nozomi: don't use flush_scheduled_work() tty/serial: Relax the device_type restriction from of_serial MAINTAINERS: Update HVC file patterns tty: phase out of ioctl file pointer for tty3270 as well tty: forgot to remove ipwireless from drivers/char/pcmcia/Makefile pch_uart: Fix DMA channel miss-setting issue. pch_uart: fix exclusive access issue pch_uart: fix auto flow control miss-setting issue pch_uart: fix uart clock setting issue pch_uart : Use dev_xxx not pr_xxx ... Fix up trivial conflicts in drivers/misc/pch_phub.c (same patch applied twice, then changes to the same area in one branch)
This commit is contained in:
commit
e6bee325e4
89
Documentation/serial/n_gsm.txt
Normal file
89
Documentation/serial/n_gsm.txt
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
n_gsm.c GSM 0710 tty multiplexor HOWTO
|
||||||
|
===================================================
|
||||||
|
|
||||||
|
This line discipline implements the GSM 07.10 multiplexing protocol
|
||||||
|
detailed in the following 3GPP document :
|
||||||
|
http://www.3gpp.org/ftp/Specs/archive/07_series/07.10/0710-720.zip
|
||||||
|
|
||||||
|
This document give some hints on how to use this driver with GPRS and 3G
|
||||||
|
modems connected to a physical serial port.
|
||||||
|
|
||||||
|
How to use it
|
||||||
|
-------------
|
||||||
|
1- initialize the modem in 0710 mux mode (usually AT+CMUX= command) through
|
||||||
|
its serial port. Depending on the modem used, you can pass more or less
|
||||||
|
parameters to this command,
|
||||||
|
2- switch the serial line to using the n_gsm line discipline by using
|
||||||
|
TIOCSETD ioctl,
|
||||||
|
3- configure the mux using GSMIOC_GETCONF / GSMIOC_SETCONF ioctl,
|
||||||
|
|
||||||
|
Major parts of the initialization program :
|
||||||
|
(a good starting point is util-linux-ng/sys-utils/ldattach.c)
|
||||||
|
#include <linux/gsmmux.h>
|
||||||
|
#define N_GSM0710 21 /* GSM 0710 Mux */
|
||||||
|
#define DEFAULT_SPEED B115200
|
||||||
|
#define SERIAL_PORT /dev/ttyS0
|
||||||
|
|
||||||
|
int ldisc = N_GSM0710;
|
||||||
|
struct gsm_config c;
|
||||||
|
struct termios configuration;
|
||||||
|
|
||||||
|
/* open the serial port connected to the modem */
|
||||||
|
fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||||
|
|
||||||
|
/* configure the serial port : speed, flow control ... */
|
||||||
|
|
||||||
|
/* send the AT commands to switch the modem to CMUX mode
|
||||||
|
and check that it's succesful (should return OK) */
|
||||||
|
write(fd, "AT+CMUX=0\r", 10);
|
||||||
|
|
||||||
|
/* experience showed that some modems need some time before
|
||||||
|
being able to answer to the first MUX packet so a delay
|
||||||
|
may be needed here in some case */
|
||||||
|
sleep(3);
|
||||||
|
|
||||||
|
/* use n_gsm line discipline */
|
||||||
|
ioctl(fd, TIOCSETD, &ldisc);
|
||||||
|
|
||||||
|
/* get n_gsm configuration */
|
||||||
|
ioctl(fd, GSMIOC_GETCONF, &c);
|
||||||
|
/* we are initiator and need encoding 0 (basic) */
|
||||||
|
c.initiator = 1;
|
||||||
|
c.encapsulation = 0;
|
||||||
|
/* our modem defaults to a maximum size of 127 bytes */
|
||||||
|
c.mru = 127;
|
||||||
|
c.mtu = 127;
|
||||||
|
/* set the new configuration */
|
||||||
|
ioctl(fd, GSMIOC_SETCONF, &c);
|
||||||
|
|
||||||
|
/* and wait for ever to keep the line discipline enabled */
|
||||||
|
daemon(0,0);
|
||||||
|
pause();
|
||||||
|
|
||||||
|
4- create the devices corresponding to the "virtual" serial ports (take care,
|
||||||
|
each modem has its configuration and some DLC have dedicated functions,
|
||||||
|
for example GPS), starting with minor 1 (DLC0 is reserved for the management
|
||||||
|
of the mux)
|
||||||
|
|
||||||
|
MAJOR=`cat /proc/devices |grep gsmtty | awk '{print $1}`
|
||||||
|
for i in `seq 1 4`; do
|
||||||
|
mknod /dev/ttygsm$i c $MAJOR $i
|
||||||
|
done
|
||||||
|
|
||||||
|
5- use these devices as plain serial ports.
|
||||||
|
for example, it's possible :
|
||||||
|
- and to use gnokii to send / receive SMS on ttygsm1
|
||||||
|
- to use ppp to establish a datalink on ttygsm2
|
||||||
|
|
||||||
|
6- first close all virtual ports before closing the physical port.
|
||||||
|
|
||||||
|
Additional Documentation
|
||||||
|
------------------------
|
||||||
|
More practical details on the protocol and how it's supported by industrial
|
||||||
|
modems can be found in the following documents :
|
||||||
|
http://www.telit.com/module/infopool/download.php?id=616
|
||||||
|
http://www.u-blox.com/images/downloads/Product_Docs/LEON-G100-G200-MuxImplementation_ApplicationNote_%28GSM%20G1-CS-10002%29.pdf
|
||||||
|
http://www.sierrawireless.com/Support/Downloads/AirPrime/WMP_Series/~/media/Support_Downloads/AirPrime/Application_notes/CMUX_Feature_Application_Note-Rev004.ashx
|
||||||
|
http://wm.sim.com/sim/News/photo/2010721161442.pdf
|
||||||
|
|
||||||
|
11-03-08 - Eric Bénard - <eric@eukrea.com>
|
16
MAINTAINERS
16
MAINTAINERS
@ -465,6 +465,16 @@ M: Matt Turner <mattst88@gmail.com>
|
|||||||
L: linux-alpha@vger.kernel.org
|
L: linux-alpha@vger.kernel.org
|
||||||
F: arch/alpha/
|
F: arch/alpha/
|
||||||
|
|
||||||
|
ALTERA UART/JTAG UART SERIAL DRIVERS
|
||||||
|
M: Tobias Klauser <tklauser@distanz.ch>
|
||||||
|
L: linux-serial@vger.kernel.org
|
||||||
|
L: nios2-dev@sopc.et.ntust.edu.tw (moderated for non-subscribers)
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/tty/serial/altera_uart.c
|
||||||
|
F: drivers/tty/serial/altera_jtaguart.c
|
||||||
|
F: include/linux/altera_uart.h
|
||||||
|
F: include/linux/altera_jtaguart.h
|
||||||
|
|
||||||
AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
|
AMD GEODE CS5536 USB DEVICE CONTROLLER DRIVER
|
||||||
M: Thomas Dahlmann <dahlmann.thomas@arcor.de>
|
M: Thomas Dahlmann <dahlmann.thomas@arcor.de>
|
||||||
L: linux-geode@lists.infradead.org (moderated for non-subscribers)
|
L: linux-geode@lists.infradead.org (moderated for non-subscribers)
|
||||||
@ -2833,7 +2843,7 @@ F: mm/hwpoison-inject.c
|
|||||||
HYPERVISOR VIRTUAL CONSOLE DRIVER
|
HYPERVISOR VIRTUAL CONSOLE DRIVER
|
||||||
L: linuxppc-dev@lists.ozlabs.org
|
L: linuxppc-dev@lists.ozlabs.org
|
||||||
S: Odd Fixes
|
S: Odd Fixes
|
||||||
F: drivers/char/hvc_*
|
F: drivers/tty/hvc/
|
||||||
|
|
||||||
iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
|
iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
|
||||||
M: Peter Jones <pjones@redhat.com>
|
M: Peter Jones <pjones@redhat.com>
|
||||||
@ -3448,7 +3458,7 @@ M: Jiri Kosina <jkosina@suse.cz>
|
|||||||
M: David Sterba <dsterba@suse.cz>
|
M: David Sterba <dsterba@suse.cz>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git
|
||||||
F: drivers/char/pcmcia/ipwireless/
|
F: drivers/tty/ipwireless/
|
||||||
|
|
||||||
IPX NETWORK LAYER
|
IPX NETWORK LAYER
|
||||||
M: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
M: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
||||||
@ -6102,7 +6112,7 @@ M: Chris Metcalf <cmetcalf@tilera.com>
|
|||||||
W: http://www.tilera.com/scm/
|
W: http://www.tilera.com/scm/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: arch/tile/
|
F: arch/tile/
|
||||||
F: drivers/char/hvc_tile.c
|
F: drivers/tty/hvc/hvc_tile.c
|
||||||
F: drivers/net/tile/
|
F: drivers/net/tile/
|
||||||
|
|
||||||
TLAN NETWORK DRIVER
|
TLAN NETWORK DRIVER
|
||||||
|
@ -94,6 +94,7 @@
|
|||||||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||||
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
||||||
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
||||||
|
#define TIOCVHANGUP 0x5437
|
||||||
|
|
||||||
#define TIOCSERCONFIG 0x5453
|
#define TIOCSERCONFIG 0x5453
|
||||||
#define TIOCSERGWILD 0x5454
|
#define TIOCSERGWILD 0x5454
|
||||||
|
@ -390,8 +390,7 @@ static void rs_unthrottle(struct tty_struct * tty)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int rs_ioctl(struct tty_struct *tty, struct file * file,
|
static int rs_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
|
||||||
unsigned int cmd, unsigned long arg)
|
|
||||||
{
|
{
|
||||||
if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
|
if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
|
||||||
(cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) &&
|
(cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) &&
|
||||||
|
@ -554,14 +554,6 @@ config MVME147_SCC
|
|||||||
This is the driver for the serial ports on the Motorola MVME147
|
This is the driver for the serial ports on the Motorola MVME147
|
||||||
boards. Everyone using one of these boards should say Y here.
|
boards. Everyone using one of these boards should say Y here.
|
||||||
|
|
||||||
config SERIAL167
|
|
||||||
bool "CD2401 support for MVME166/7 serial ports"
|
|
||||||
depends on MVME16x
|
|
||||||
help
|
|
||||||
This is the driver for the serial ports on the Motorola MVME166,
|
|
||||||
167, and 172 boards. Everyone using one of these boards should say
|
|
||||||
Y here.
|
|
||||||
|
|
||||||
config MVME162_SCC
|
config MVME162_SCC
|
||||||
bool "SCC support for MVME162 serial ports"
|
bool "SCC support for MVME162 serial ports"
|
||||||
depends on MVME16x && BROKEN
|
depends on MVME16x && BROKEN
|
||||||
|
@ -85,6 +85,7 @@
|
|||||||
#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
|
#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
|
||||||
#define TIOCGDEV _IOR('T', 0x32, unsigned int) /* Get primary device node of /dev/console */
|
#define TIOCGDEV _IOR('T', 0x32, unsigned int) /* Get primary device node of /dev/console */
|
||||||
#define TIOCSIG _IOW('T', 0x36, int) /* Generate signal on Pty slave */
|
#define TIOCSIG _IOW('T', 0x36, int) /* Generate signal on Pty slave */
|
||||||
|
#define TIOCVHANGUP 0x5437
|
||||||
|
|
||||||
/* I hope the range from 0x5480 on is free ... */
|
/* I hope the range from 0x5480 on is free ... */
|
||||||
#define TIOCSCTTY 0x5480 /* become controlling tty */
|
#define TIOCSCTTY 0x5480 /* become controlling tty */
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||||
#define TIOCGDEV _IOR('T',0x32, int) /* Get primary device node of /dev/console */
|
#define TIOCGDEV _IOR('T',0x32, int) /* Get primary device node of /dev/console */
|
||||||
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
||||||
|
#define TIOCVHANGUP 0x5437
|
||||||
|
|
||||||
#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
|
#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
|
||||||
#define FIOCLEX 0x5451
|
#define FIOCLEX 0x5451
|
||||||
|
@ -96,6 +96,7 @@
|
|||||||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||||
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
||||||
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
||||||
|
#define TIOCVHANGUP 0x5437
|
||||||
|
|
||||||
#define TIOCSERCONFIG 0x5453
|
#define TIOCSERCONFIG 0x5453
|
||||||
#define TIOCSERGWILD 0x5454
|
#define TIOCSERGWILD 0x5454
|
||||||
|
@ -87,6 +87,7 @@
|
|||||||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||||
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
||||||
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
||||||
|
#define TIOCVHANGUP _IO('T', 0x37)
|
||||||
|
|
||||||
#define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */
|
#define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */
|
||||||
#define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */
|
#define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
#define TCSETSW2 _IOW('T', 14, struct termios2)
|
#define TCSETSW2 _IOW('T', 14, struct termios2)
|
||||||
#define TCSETSF2 _IOW('T', 15, struct termios2)
|
#define TCSETSF2 _IOW('T', 15, struct termios2)
|
||||||
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
||||||
|
#define TIOCVHANGUP _IO('T', 0x37)
|
||||||
|
|
||||||
/* Note that all the ioctls that are not available in Linux have a
|
/* Note that all the ioctls that are not available in Linux have a
|
||||||
* double underscore on the front to: a) avoid some programs to
|
* double underscore on the front to: a) avoid some programs to
|
||||||
|
@ -100,6 +100,7 @@
|
|||||||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||||
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
||||||
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
||||||
|
#define TIOCVHANGUP _IO('T', 0x37)
|
||||||
|
|
||||||
#define TIOCSERCONFIG _IO('T', 83)
|
#define TIOCSERCONFIG _IO('T', 83)
|
||||||
#define TIOCSERGWILD _IOR('T', 84, int)
|
#define TIOCSERGWILD _IOR('T', 84, int)
|
||||||
|
@ -51,32 +51,32 @@ struct ath_struct {
|
|||||||
|
|
||||||
static int ath_wakeup_ar3k(struct tty_struct *tty)
|
static int ath_wakeup_ar3k(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
struct termios settings;
|
struct ktermios ktermios;
|
||||||
int status = tty->driver->ops->tiocmget(tty, NULL);
|
int status = tty->driver->ops->tiocmget(tty);
|
||||||
|
|
||||||
if (status & TIOCM_CTS)
|
if (status & TIOCM_CTS)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
/* Disable Automatic RTSCTS */
|
/* Disable Automatic RTSCTS */
|
||||||
n_tty_ioctl_helper(tty, NULL, TCGETS, (unsigned long)&settings);
|
memcpy(&ktermios, tty->termios, sizeof(ktermios));
|
||||||
settings.c_cflag &= ~CRTSCTS;
|
ktermios.c_cflag &= ~CRTSCTS;
|
||||||
n_tty_ioctl_helper(tty, NULL, TCSETS, (unsigned long)&settings);
|
tty_set_termios(tty, &ktermios);
|
||||||
|
|
||||||
/* Clear RTS first */
|
/* Clear RTS first */
|
||||||
status = tty->driver->ops->tiocmget(tty, NULL);
|
status = tty->driver->ops->tiocmget(tty);
|
||||||
tty->driver->ops->tiocmset(tty, NULL, 0x00, TIOCM_RTS);
|
tty->driver->ops->tiocmset(tty, 0x00, TIOCM_RTS);
|
||||||
mdelay(20);
|
mdelay(20);
|
||||||
|
|
||||||
/* Set RTS, wake up board */
|
/* Set RTS, wake up board */
|
||||||
status = tty->driver->ops->tiocmget(tty, NULL);
|
status = tty->driver->ops->tiocmget(tty);
|
||||||
tty->driver->ops->tiocmset(tty, NULL, TIOCM_RTS, 0x00);
|
tty->driver->ops->tiocmset(tty, TIOCM_RTS, 0x00);
|
||||||
mdelay(20);
|
mdelay(20);
|
||||||
|
|
||||||
status = tty->driver->ops->tiocmget(tty, NULL);
|
status = tty->driver->ops->tiocmget(tty);
|
||||||
|
|
||||||
n_tty_ioctl_helper(tty, NULL, TCGETS, (unsigned long)&settings);
|
/* Disable Automatic RTSCTS */
|
||||||
settings.c_cflag |= CRTSCTS;
|
ktermios.c_cflag |= CRTSCTS;
|
||||||
n_tty_ioctl_helper(tty, NULL, TCSETS, (unsigned long)&settings);
|
status = tty_set_termios(tty, &ktermios);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -4,89 +4,7 @@
|
|||||||
|
|
||||||
menu "Character devices"
|
menu "Character devices"
|
||||||
|
|
||||||
config VT
|
source "drivers/tty/Kconfig"
|
||||||
bool "Virtual terminal" if EXPERT
|
|
||||||
depends on !S390
|
|
||||||
select INPUT
|
|
||||||
default y
|
|
||||||
---help---
|
|
||||||
If you say Y here, you will get support for terminal devices with
|
|
||||||
display and keyboard devices. These are called "virtual" because you
|
|
||||||
can run several virtual terminals (also called virtual consoles) on
|
|
||||||
one physical terminal. This is rather useful, for example one
|
|
||||||
virtual terminal can collect system messages and warnings, another
|
|
||||||
one can be used for a text-mode user session, and a third could run
|
|
||||||
an X session, all in parallel. Switching between virtual terminals
|
|
||||||
is done with certain key combinations, usually Alt-<function key>.
|
|
||||||
|
|
||||||
The setterm command ("man setterm") can be used to change the
|
|
||||||
properties (such as colors or beeping) of a virtual terminal. The
|
|
||||||
man page console_codes(4) ("man console_codes") contains the special
|
|
||||||
character sequences that can be used to change those properties
|
|
||||||
directly. The fonts used on virtual terminals can be changed with
|
|
||||||
the setfont ("man setfont") command and the key bindings are defined
|
|
||||||
with the loadkeys ("man loadkeys") command.
|
|
||||||
|
|
||||||
You need at least one virtual terminal device in order to make use
|
|
||||||
of your keyboard and monitor. Therefore, only people configuring an
|
|
||||||
embedded system would want to say N here in order to save some
|
|
||||||
memory; the only way to log into such a system is then via a serial
|
|
||||||
or network connection.
|
|
||||||
|
|
||||||
If unsure, say Y, or else you won't be able to do much with your new
|
|
||||||
shiny Linux system :-)
|
|
||||||
|
|
||||||
config CONSOLE_TRANSLATIONS
|
|
||||||
depends on VT
|
|
||||||
default y
|
|
||||||
bool "Enable character translations in console" if EXPERT
|
|
||||||
---help---
|
|
||||||
This enables support for font mapping and Unicode translation
|
|
||||||
on virtual consoles.
|
|
||||||
|
|
||||||
config VT_CONSOLE
|
|
||||||
bool "Support for console on virtual terminal" if EXPERT
|
|
||||||
depends on VT
|
|
||||||
default y
|
|
||||||
---help---
|
|
||||||
The system console is the device which receives all kernel messages
|
|
||||||
and warnings and which allows logins in single user mode. If you
|
|
||||||
answer Y here, a virtual terminal (the device used to interact with
|
|
||||||
a physical terminal) can be used as system console. This is the most
|
|
||||||
common mode of operations, so you should say Y here unless you want
|
|
||||||
the kernel messages be output only to a serial port (in which case
|
|
||||||
you should say Y to "Console on serial port", below).
|
|
||||||
|
|
||||||
If you do say Y here, by default the currently visible virtual
|
|
||||||
terminal (/dev/tty0) will be used as system console. You can change
|
|
||||||
that with a kernel command line option such as "console=tty3" which
|
|
||||||
would use the third virtual terminal as system console. (Try "man
|
|
||||||
bootparam" or see the documentation of your boot loader (lilo or
|
|
||||||
loadlin) about how to pass options to the kernel at boot time.)
|
|
||||||
|
|
||||||
If unsure, say Y.
|
|
||||||
|
|
||||||
config HW_CONSOLE
|
|
||||||
bool
|
|
||||||
depends on VT && !S390 && !UML
|
|
||||||
default y
|
|
||||||
|
|
||||||
config VT_HW_CONSOLE_BINDING
|
|
||||||
bool "Support for binding and unbinding console drivers"
|
|
||||||
depends on HW_CONSOLE
|
|
||||||
default n
|
|
||||||
---help---
|
|
||||||
The virtual terminal is the device that interacts with the physical
|
|
||||||
terminal through console drivers. On these systems, at least one
|
|
||||||
console driver is loaded. In other configurations, additional console
|
|
||||||
drivers may be enabled, such as the framebuffer console. If more than
|
|
||||||
1 console driver is enabled, setting this to 'y' will allow you to
|
|
||||||
select the console driver that will serve as the backend for the
|
|
||||||
virtual terminals.
|
|
||||||
|
|
||||||
See <file:Documentation/console/console.txt> for more
|
|
||||||
information. For framebuffer console users, please refer to
|
|
||||||
<file:Documentation/fb/fbcon.txt>.
|
|
||||||
|
|
||||||
config DEVKMEM
|
config DEVKMEM
|
||||||
bool "/dev/kmem virtual device support"
|
bool "/dev/kmem virtual device support"
|
||||||
@ -97,253 +15,6 @@ config DEVKMEM
|
|||||||
kind of kernel debugging operations.
|
kind of kernel debugging operations.
|
||||||
When in doubt, say "N".
|
When in doubt, say "N".
|
||||||
|
|
||||||
config BFIN_JTAG_COMM
|
|
||||||
tristate "Blackfin JTAG Communication"
|
|
||||||
depends on BLACKFIN
|
|
||||||
help
|
|
||||||
Add support for emulating a TTY device over the Blackfin JTAG.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called bfin_jtag_comm.
|
|
||||||
|
|
||||||
config BFIN_JTAG_COMM_CONSOLE
|
|
||||||
bool "Console on Blackfin JTAG"
|
|
||||||
depends on BFIN_JTAG_COMM=y
|
|
||||||
|
|
||||||
config SERIAL_NONSTANDARD
|
|
||||||
bool "Non-standard serial port support"
|
|
||||||
depends on HAS_IOMEM
|
|
||||||
---help---
|
|
||||||
Say Y here if you have any non-standard serial boards -- boards
|
|
||||||
which aren't supported using the standard "dumb" serial driver.
|
|
||||||
This includes intelligent serial boards such as Cyclades,
|
|
||||||
Digiboards, etc. These are usually used for systems that need many
|
|
||||||
serial ports because they serve many terminals or dial-in
|
|
||||||
connections.
|
|
||||||
|
|
||||||
Note that the answer to this question won't directly affect the
|
|
||||||
kernel: saying N will just cause the configurator to skip all
|
|
||||||
the questions about non-standard serial boards.
|
|
||||||
|
|
||||||
Most people can say N here.
|
|
||||||
|
|
||||||
config COMPUTONE
|
|
||||||
tristate "Computone IntelliPort Plus serial support"
|
|
||||||
depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
|
|
||||||
---help---
|
|
||||||
This driver supports the entire family of Intelliport II/Plus
|
|
||||||
controllers with the exception of the MicroChannel controllers and
|
|
||||||
products previous to the Intelliport II. These are multiport cards,
|
|
||||||
which give you many serial ports. You would need something like this
|
|
||||||
to connect more than two modems to your Linux box, for instance in
|
|
||||||
order to become a dial-in server. If you have a card like that, say
|
|
||||||
Y here and read <file:Documentation/serial/computone.txt>.
|
|
||||||
|
|
||||||
To compile this driver as module, choose M here: the
|
|
||||||
module will be called ip2.
|
|
||||||
|
|
||||||
config ROCKETPORT
|
|
||||||
tristate "Comtrol RocketPort support"
|
|
||||||
depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
|
|
||||||
help
|
|
||||||
This driver supports Comtrol RocketPort and RocketModem PCI boards.
|
|
||||||
These boards provide 2, 4, 8, 16, or 32 high-speed serial ports or
|
|
||||||
modems. For information about the RocketPort/RocketModem boards
|
|
||||||
and this driver read <file:Documentation/serial/rocket.txt>.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called rocket.
|
|
||||||
|
|
||||||
If you want to compile this driver into the kernel, say Y here. If
|
|
||||||
you don't have a Comtrol RocketPort/RocketModem card installed, say N.
|
|
||||||
|
|
||||||
config CYCLADES
|
|
||||||
tristate "Cyclades async mux support"
|
|
||||||
depends on SERIAL_NONSTANDARD && (PCI || ISA)
|
|
||||||
select FW_LOADER
|
|
||||||
---help---
|
|
||||||
This driver supports Cyclades Z and Y multiserial boards.
|
|
||||||
You would need something like this to connect more than two modems to
|
|
||||||
your Linux box, for instance in order to become a dial-in server.
|
|
||||||
|
|
||||||
For information about the Cyclades-Z card, read
|
|
||||||
<file:Documentation/serial/README.cycladesZ>.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called cyclades.
|
|
||||||
|
|
||||||
If you haven't heard about it, it's safe to say N.
|
|
||||||
|
|
||||||
config CYZ_INTR
|
|
||||||
bool "Cyclades-Z interrupt mode operation (EXPERIMENTAL)"
|
|
||||||
depends on EXPERIMENTAL && CYCLADES
|
|
||||||
help
|
|
||||||
The Cyclades-Z family of multiport cards allows 2 (two) driver op
|
|
||||||
modes: polling and interrupt. In polling mode, the driver will check
|
|
||||||
the status of the Cyclades-Z ports every certain amount of time
|
|
||||||
(which is called polling cycle and is configurable). In interrupt
|
|
||||||
mode, it will use an interrupt line (IRQ) in order to check the
|
|
||||||
status of the Cyclades-Z ports. The default op mode is polling. If
|
|
||||||
unsure, say N.
|
|
||||||
|
|
||||||
config DIGIEPCA
|
|
||||||
tristate "Digiboard Intelligent Async Support"
|
|
||||||
depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
|
|
||||||
---help---
|
|
||||||
This is a driver for Digi International's Xx, Xeve, and Xem series
|
|
||||||
of cards which provide multiple serial ports. You would need
|
|
||||||
something like this to connect more than two modems to your Linux
|
|
||||||
box, for instance in order to become a dial-in server. This driver
|
|
||||||
supports the original PC (ISA) boards as well as PCI, and EISA. If
|
|
||||||
you have a card like this, say Y here and read the file
|
|
||||||
<file:Documentation/serial/digiepca.txt>.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called epca.
|
|
||||||
|
|
||||||
config MOXA_INTELLIO
|
|
||||||
tristate "Moxa Intellio support"
|
|
||||||
depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
|
|
||||||
select FW_LOADER
|
|
||||||
help
|
|
||||||
Say Y here if you have a Moxa Intellio multiport serial card.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called moxa.
|
|
||||||
|
|
||||||
config MOXA_SMARTIO
|
|
||||||
tristate "Moxa SmartIO support v. 2.0"
|
|
||||||
depends on SERIAL_NONSTANDARD && (PCI || EISA || ISA)
|
|
||||||
help
|
|
||||||
Say Y here if you have a Moxa SmartIO multiport serial card and/or
|
|
||||||
want to help develop a new version of this driver.
|
|
||||||
|
|
||||||
This is upgraded (1.9.1) driver from original Moxa drivers with
|
|
||||||
changes finally resulting in PCI probing.
|
|
||||||
|
|
||||||
This driver can also be built as a module. The module will be called
|
|
||||||
mxser. If you want to do that, say M here.
|
|
||||||
|
|
||||||
config ISI
|
|
||||||
tristate "Multi-Tech multiport card support (EXPERIMENTAL)"
|
|
||||||
depends on SERIAL_NONSTANDARD && PCI
|
|
||||||
select FW_LOADER
|
|
||||||
help
|
|
||||||
This is a driver for the Multi-Tech cards which provide several
|
|
||||||
serial ports. The driver is experimental and can currently only be
|
|
||||||
built as a module. The module will be called isicom.
|
|
||||||
If you want to do that, choose M here.
|
|
||||||
|
|
||||||
config SYNCLINK
|
|
||||||
tristate "Microgate SyncLink card support"
|
|
||||||
depends on SERIAL_NONSTANDARD && PCI && ISA_DMA_API
|
|
||||||
help
|
|
||||||
Provides support for the SyncLink ISA and PCI multiprotocol serial
|
|
||||||
adapters. These adapters support asynchronous and HDLC bit
|
|
||||||
synchronous communication up to 10Mbps (PCI adapter).
|
|
||||||
|
|
||||||
This driver can only be built as a module ( = code which can be
|
|
||||||
inserted in and removed from the running kernel whenever you want).
|
|
||||||
The module will be called synclink. If you want to do that, say M
|
|
||||||
here.
|
|
||||||
|
|
||||||
config SYNCLINKMP
|
|
||||||
tristate "SyncLink Multiport support"
|
|
||||||
depends on SERIAL_NONSTANDARD && PCI
|
|
||||||
help
|
|
||||||
Enable support for the SyncLink Multiport (2 or 4 ports)
|
|
||||||
serial adapter, running asynchronous and HDLC communications up
|
|
||||||
to 2.048Mbps. Each ports is independently selectable for
|
|
||||||
RS-232, V.35, RS-449, RS-530, and X.21
|
|
||||||
|
|
||||||
This driver may be built as a module ( = code which can be
|
|
||||||
inserted in and removed from the running kernel whenever you want).
|
|
||||||
The module will be called synclinkmp. If you want to do that, say M
|
|
||||||
here.
|
|
||||||
|
|
||||||
config SYNCLINK_GT
|
|
||||||
tristate "SyncLink GT/AC support"
|
|
||||||
depends on SERIAL_NONSTANDARD && PCI
|
|
||||||
help
|
|
||||||
Support for SyncLink GT and SyncLink AC families of
|
|
||||||
synchronous and asynchronous serial adapters
|
|
||||||
manufactured by Microgate Systems, Ltd. (www.microgate.com)
|
|
||||||
|
|
||||||
config N_HDLC
|
|
||||||
tristate "HDLC line discipline support"
|
|
||||||
depends on SERIAL_NONSTANDARD
|
|
||||||
help
|
|
||||||
Allows synchronous HDLC communications with tty device drivers that
|
|
||||||
support synchronous HDLC such as the Microgate SyncLink adapter.
|
|
||||||
|
|
||||||
This driver can be built as a module ( = code which can be
|
|
||||||
inserted in and removed from the running kernel whenever you want).
|
|
||||||
The module will be called n_hdlc. If you want to do that, say M
|
|
||||||
here.
|
|
||||||
|
|
||||||
config N_GSM
|
|
||||||
tristate "GSM MUX line discipline support (EXPERIMENTAL)"
|
|
||||||
depends on EXPERIMENTAL
|
|
||||||
depends on NET
|
|
||||||
help
|
|
||||||
This line discipline provides support for the GSM MUX protocol and
|
|
||||||
presents the mux as a set of 61 individual tty devices.
|
|
||||||
|
|
||||||
config RISCOM8
|
|
||||||
tristate "SDL RISCom/8 card support"
|
|
||||||
depends on SERIAL_NONSTANDARD
|
|
||||||
help
|
|
||||||
This is a driver for the SDL Communications RISCom/8 multiport card,
|
|
||||||
which gives you many serial ports. You would need something like
|
|
||||||
this to connect more than two modems to your Linux box, for instance
|
|
||||||
in order to become a dial-in server. If you have a card like that,
|
|
||||||
say Y here and read the file <file:Documentation/serial/riscom8.txt>.
|
|
||||||
|
|
||||||
Also it's possible to say M here and compile this driver as kernel
|
|
||||||
loadable module; the module will be called riscom8.
|
|
||||||
|
|
||||||
config SPECIALIX
|
|
||||||
tristate "Specialix IO8+ card support"
|
|
||||||
depends on SERIAL_NONSTANDARD
|
|
||||||
help
|
|
||||||
This is a driver for the Specialix IO8+ multiport card (both the
|
|
||||||
ISA and the PCI version) which gives you many serial ports. You
|
|
||||||
would need something like this to connect more than two modems to
|
|
||||||
your Linux box, for instance in order to become a dial-in server.
|
|
||||||
|
|
||||||
If you have a card like that, say Y here and read the file
|
|
||||||
<file:Documentation/serial/specialix.txt>. Also it's possible to say
|
|
||||||
M here and compile this driver as kernel loadable module which will be
|
|
||||||
called specialix.
|
|
||||||
|
|
||||||
config SX
|
|
||||||
tristate "Specialix SX (and SI) card support"
|
|
||||||
depends on SERIAL_NONSTANDARD && (PCI || EISA || ISA) && BROKEN
|
|
||||||
help
|
|
||||||
This is a driver for the SX and SI multiport serial cards.
|
|
||||||
Please read the file <file:Documentation/serial/sx.txt> for details.
|
|
||||||
|
|
||||||
This driver can only be built as a module ( = code which can be
|
|
||||||
inserted in and removed from the running kernel whenever you want).
|
|
||||||
The module will be called sx. If you want to do that, say M here.
|
|
||||||
|
|
||||||
config RIO
|
|
||||||
tristate "Specialix RIO system support"
|
|
||||||
depends on SERIAL_NONSTANDARD && BROKEN
|
|
||||||
help
|
|
||||||
This is a driver for the Specialix RIO, a smart serial card which
|
|
||||||
drives an outboard box that can support up to 128 ports. Product
|
|
||||||
information is at <http://www.perle.com/support/documentation.html#multiport>.
|
|
||||||
There are both ISA and PCI versions.
|
|
||||||
|
|
||||||
config RIO_OLDPCI
|
|
||||||
bool "Support really old RIO/PCI cards"
|
|
||||||
depends on RIO
|
|
||||||
help
|
|
||||||
Older RIO PCI cards need some initialization-time configuration to
|
|
||||||
determine the IRQ and some control addresses. If you have a RIO and
|
|
||||||
this doesn't seem to work, try setting this to Y.
|
|
||||||
|
|
||||||
config STALDRV
|
config STALDRV
|
||||||
bool "Stallion multiport serial support"
|
bool "Stallion multiport serial support"
|
||||||
depends on SERIAL_NONSTANDARD
|
depends on SERIAL_NONSTANDARD
|
||||||
@ -356,54 +27,6 @@ config STALDRV
|
|||||||
in this case. If you have never heard about all this, it's safe to
|
in this case. If you have never heard about all this, it's safe to
|
||||||
say N.
|
say N.
|
||||||
|
|
||||||
config STALLION
|
|
||||||
tristate "Stallion EasyIO or EC8/32 support"
|
|
||||||
depends on STALDRV && (ISA || EISA || PCI)
|
|
||||||
help
|
|
||||||
If you have an EasyIO or EasyConnection 8/32 multiport Stallion
|
|
||||||
card, then this is for you; say Y. Make sure to read
|
|
||||||
<file:Documentation/serial/stallion.txt>.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called stallion.
|
|
||||||
|
|
||||||
config ISTALLION
|
|
||||||
tristate "Stallion EC8/64, ONboard, Brumby support"
|
|
||||||
depends on STALDRV && (ISA || EISA || PCI)
|
|
||||||
help
|
|
||||||
If you have an EasyConnection 8/64, ONboard, Brumby or Stallion
|
|
||||||
serial multiport card, say Y here. Make sure to read
|
|
||||||
<file:Documentation/serial/stallion.txt>.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called istallion.
|
|
||||||
|
|
||||||
config NOZOMI
|
|
||||||
tristate "HSDPA Broadband Wireless Data Card - Globe Trotter"
|
|
||||||
depends on PCI && EXPERIMENTAL
|
|
||||||
help
|
|
||||||
If you have a HSDPA driver Broadband Wireless Data Card -
|
|
||||||
Globe Trotter PCMCIA card, say Y here.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here, the module
|
|
||||||
will be called nozomi.
|
|
||||||
|
|
||||||
config A2232
|
|
||||||
tristate "Commodore A2232 serial support (EXPERIMENTAL)"
|
|
||||||
depends on EXPERIMENTAL && ZORRO && BROKEN
|
|
||||||
---help---
|
|
||||||
This option supports the 2232 7-port serial card shipped with the
|
|
||||||
Amiga 2000 and other Zorro-bus machines, dating from 1989. At
|
|
||||||
a max of 19,200 bps, the ports are served by a 6551 ACIA UART chip
|
|
||||||
each, plus a 8520 CIA, and a master 6502 CPU and buffer as well. The
|
|
||||||
ports were connected with 8 pin DIN connectors on the card bracket,
|
|
||||||
for which 8 pin to DB25 adapters were supplied. The card also had
|
|
||||||
jumpers internally to toggle various pinning configurations.
|
|
||||||
|
|
||||||
This driver can be built as a module; but then "generic_serial"
|
|
||||||
will also be built as a module. This has to be loaded before
|
|
||||||
"ser_a2232". If you want to do this, answer M here.
|
|
||||||
|
|
||||||
config SGI_SNSC
|
config SGI_SNSC
|
||||||
bool "SGI Altix system controller communication support"
|
bool "SGI Altix system controller communication support"
|
||||||
depends on (IA64_SGI_SN2 || IA64_GENERIC)
|
depends on (IA64_SGI_SN2 || IA64_GENERIC)
|
||||||
@ -428,71 +51,6 @@ config SGI_MBCS
|
|||||||
|
|
||||||
source "drivers/tty/serial/Kconfig"
|
source "drivers/tty/serial/Kconfig"
|
||||||
|
|
||||||
config UNIX98_PTYS
|
|
||||||
bool "Unix98 PTY support" if EXPERT
|
|
||||||
default y
|
|
||||||
---help---
|
|
||||||
A pseudo terminal (PTY) is a software device consisting of two
|
|
||||||
halves: a master and a slave. The slave device behaves identical to
|
|
||||||
a physical terminal; the master device is used by a process to
|
|
||||||
read data from and write data to the slave, thereby emulating a
|
|
||||||
terminal. Typical programs for the master side are telnet servers
|
|
||||||
and xterms.
|
|
||||||
|
|
||||||
Linux has traditionally used the BSD-like names /dev/ptyxx for
|
|
||||||
masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
|
|
||||||
has a number of problems. The GNU C library glibc 2.1 and later,
|
|
||||||
however, supports the Unix98 naming standard: in order to acquire a
|
|
||||||
pseudo terminal, a process opens /dev/ptmx; the number of the pseudo
|
|
||||||
terminal is then made available to the process and the pseudo
|
|
||||||
terminal slave can be accessed as /dev/pts/<number>. What was
|
|
||||||
traditionally /dev/ttyp2 will then be /dev/pts/2, for example.
|
|
||||||
|
|
||||||
All modern Linux systems use the Unix98 ptys. Say Y unless
|
|
||||||
you're on an embedded system and want to conserve memory.
|
|
||||||
|
|
||||||
config DEVPTS_MULTIPLE_INSTANCES
|
|
||||||
bool "Support multiple instances of devpts"
|
|
||||||
depends on UNIX98_PTYS
|
|
||||||
default n
|
|
||||||
---help---
|
|
||||||
Enable support for multiple instances of devpts filesystem.
|
|
||||||
If you want to have isolated PTY namespaces (eg: in containers),
|
|
||||||
say Y here. Otherwise, say N. If enabled, each mount of devpts
|
|
||||||
filesystem with the '-o newinstance' option will create an
|
|
||||||
independent PTY namespace.
|
|
||||||
|
|
||||||
config LEGACY_PTYS
|
|
||||||
bool "Legacy (BSD) PTY support"
|
|
||||||
default y
|
|
||||||
---help---
|
|
||||||
A pseudo terminal (PTY) is a software device consisting of two
|
|
||||||
halves: a master and a slave. The slave device behaves identical to
|
|
||||||
a physical terminal; the master device is used by a process to
|
|
||||||
read data from and write data to the slave, thereby emulating a
|
|
||||||
terminal. Typical programs for the master side are telnet servers
|
|
||||||
and xterms.
|
|
||||||
|
|
||||||
Linux has traditionally used the BSD-like names /dev/ptyxx
|
|
||||||
for masters and /dev/ttyxx for slaves of pseudo
|
|
||||||
terminals. This scheme has a number of problems, including
|
|
||||||
security. This option enables these legacy devices; on most
|
|
||||||
systems, it is safe to say N.
|
|
||||||
|
|
||||||
|
|
||||||
config LEGACY_PTY_COUNT
|
|
||||||
int "Maximum number of legacy PTY in use"
|
|
||||||
depends on LEGACY_PTYS
|
|
||||||
range 0 256
|
|
||||||
default "256"
|
|
||||||
---help---
|
|
||||||
The maximum number of legacy PTYs that can be used at any one time.
|
|
||||||
The default is 256, and should be more than enough. Embedded
|
|
||||||
systems may want to reduce this to save memory.
|
|
||||||
|
|
||||||
When not in use, each legacy PTY occupies 12 bytes on 32-bit
|
|
||||||
architectures and 24 bytes on 64-bit architectures.
|
|
||||||
|
|
||||||
config TTY_PRINTK
|
config TTY_PRINTK
|
||||||
bool "TTY driver to output user messages via printk"
|
bool "TTY driver to output user messages via printk"
|
||||||
depends on EXPERT
|
depends on EXPERT
|
||||||
@ -612,84 +170,7 @@ config PPDEV
|
|||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
config HVC_DRIVER
|
source "drivers/tty/hvc/Kconfig"
|
||||||
bool
|
|
||||||
help
|
|
||||||
Generic "hypervisor virtual console" infrastructure for various
|
|
||||||
hypervisors (pSeries, iSeries, Xen, lguest).
|
|
||||||
It will automatically be selected if one of the back-end console drivers
|
|
||||||
is selected.
|
|
||||||
|
|
||||||
config HVC_IRQ
|
|
||||||
bool
|
|
||||||
|
|
||||||
config HVC_CONSOLE
|
|
||||||
bool "pSeries Hypervisor Virtual Console support"
|
|
||||||
depends on PPC_PSERIES
|
|
||||||
select HVC_DRIVER
|
|
||||||
select HVC_IRQ
|
|
||||||
help
|
|
||||||
pSeries machines when partitioned support a hypervisor virtual
|
|
||||||
console. This driver allows each pSeries partition to have a console
|
|
||||||
which is accessed via the HMC.
|
|
||||||
|
|
||||||
config HVC_ISERIES
|
|
||||||
bool "iSeries Hypervisor Virtual Console support"
|
|
||||||
depends on PPC_ISERIES
|
|
||||||
default y
|
|
||||||
select HVC_DRIVER
|
|
||||||
select HVC_IRQ
|
|
||||||
select VIOPATH
|
|
||||||
help
|
|
||||||
iSeries machines support a hypervisor virtual console.
|
|
||||||
|
|
||||||
config HVC_RTAS
|
|
||||||
bool "IBM RTAS Console support"
|
|
||||||
depends on PPC_RTAS
|
|
||||||
select HVC_DRIVER
|
|
||||||
help
|
|
||||||
IBM Console device driver which makes use of RTAS
|
|
||||||
|
|
||||||
config HVC_BEAT
|
|
||||||
bool "Toshiba's Beat Hypervisor Console support"
|
|
||||||
depends on PPC_CELLEB
|
|
||||||
select HVC_DRIVER
|
|
||||||
help
|
|
||||||
Toshiba's Cell Reference Set Beat Console device driver
|
|
||||||
|
|
||||||
config HVC_IUCV
|
|
||||||
bool "z/VM IUCV Hypervisor console support (VM only)"
|
|
||||||
depends on S390
|
|
||||||
select HVC_DRIVER
|
|
||||||
select IUCV
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
This driver provides a Hypervisor console (HVC) back-end to access
|
|
||||||
a Linux (console) terminal via a z/VM IUCV communication path.
|
|
||||||
|
|
||||||
config HVC_XEN
|
|
||||||
bool "Xen Hypervisor Console support"
|
|
||||||
depends on XEN
|
|
||||||
select HVC_DRIVER
|
|
||||||
select HVC_IRQ
|
|
||||||
default y
|
|
||||||
help
|
|
||||||
Xen virtual console device driver
|
|
||||||
|
|
||||||
config HVC_UDBG
|
|
||||||
bool "udbg based fake hypervisor console"
|
|
||||||
depends on PPC && EXPERIMENTAL
|
|
||||||
select HVC_DRIVER
|
|
||||||
default n
|
|
||||||
|
|
||||||
config HVC_DCC
|
|
||||||
bool "ARM JTAG DCC console"
|
|
||||||
depends on ARM
|
|
||||||
select HVC_DRIVER
|
|
||||||
help
|
|
||||||
This console uses the JTAG DCC on ARM to create a console under the HVC
|
|
||||||
driver. This console is used through a JTAG only on ARM. If you don't have
|
|
||||||
a JTAG then you probably don't want this option.
|
|
||||||
|
|
||||||
config VIRTIO_CONSOLE
|
config VIRTIO_CONSOLE
|
||||||
tristate "Virtio console"
|
tristate "Virtio console"
|
||||||
@ -707,23 +188,6 @@ config VIRTIO_CONSOLE
|
|||||||
the port which can be used by udev scripts to create a
|
the port which can be used by udev scripts to create a
|
||||||
symlink to the device.
|
symlink to the device.
|
||||||
|
|
||||||
config HVCS
|
|
||||||
tristate "IBM Hypervisor Virtual Console Server support"
|
|
||||||
depends on PPC_PSERIES && HVC_CONSOLE
|
|
||||||
help
|
|
||||||
Partitionable IBM Power5 ppc64 machines allow hosting of
|
|
||||||
firmware virtual consoles from one Linux partition by
|
|
||||||
another Linux partition. This driver allows console data
|
|
||||||
from Linux partitions to be accessed through TTY device
|
|
||||||
interfaces in the device tree of a Linux partition running
|
|
||||||
this driver.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called hvcs. Additionally, this module
|
|
||||||
will depend on arch specific APIs exported from hvcserver.ko
|
|
||||||
which will also be compiled when this driver is built as a
|
|
||||||
module.
|
|
||||||
|
|
||||||
config IBM_BSR
|
config IBM_BSR
|
||||||
tristate "IBM POWER Barrier Synchronization Register support"
|
tristate "IBM POWER Barrier Synchronization Register support"
|
||||||
depends on PPC_PSERIES
|
depends on PPC_PSERIES
|
||||||
|
@ -5,31 +5,7 @@
|
|||||||
obj-y += mem.o random.o
|
obj-y += mem.o random.o
|
||||||
obj-$(CONFIG_TTY_PRINTK) += ttyprintk.o
|
obj-$(CONFIG_TTY_PRINTK) += ttyprintk.o
|
||||||
obj-y += misc.o
|
obj-y += misc.o
|
||||||
obj-$(CONFIG_BFIN_JTAG_COMM) += bfin_jtag_comm.o
|
|
||||||
obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
|
|
||||||
obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
|
|
||||||
obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
|
|
||||||
obj-$(CONFIG_ROCKETPORT) += rocket.o
|
|
||||||
obj-$(CONFIG_SERIAL167) += serial167.o
|
|
||||||
obj-$(CONFIG_CYCLADES) += cyclades.o
|
|
||||||
obj-$(CONFIG_STALLION) += stallion.o
|
|
||||||
obj-$(CONFIG_ISTALLION) += istallion.o
|
|
||||||
obj-$(CONFIG_NOZOMI) += nozomi.o
|
|
||||||
obj-$(CONFIG_DIGIEPCA) += epca.o
|
|
||||||
obj-$(CONFIG_SPECIALIX) += specialix.o
|
|
||||||
obj-$(CONFIG_MOXA_INTELLIO) += moxa.o
|
|
||||||
obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
|
|
||||||
obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
|
obj-$(CONFIG_ATARI_DSP56K) += dsp56k.o
|
||||||
obj-$(CONFIG_MOXA_SMARTIO) += mxser.o
|
|
||||||
obj-$(CONFIG_COMPUTONE) += ip2/
|
|
||||||
obj-$(CONFIG_RISCOM8) += riscom8.o
|
|
||||||
obj-$(CONFIG_ISI) += isicom.o
|
|
||||||
obj-$(CONFIG_SYNCLINK) += synclink.o
|
|
||||||
obj-$(CONFIG_SYNCLINKMP) += synclinkmp.o
|
|
||||||
obj-$(CONFIG_SYNCLINK_GT) += synclink_gt.o
|
|
||||||
obj-$(CONFIG_AMIGA_BUILTIN_SERIAL) += amiserial.o
|
|
||||||
obj-$(CONFIG_SX) += sx.o generic_serial.o
|
|
||||||
obj-$(CONFIG_RIO) += rio/ generic_serial.o
|
|
||||||
obj-$(CONFIG_VIRTIO_CONSOLE) += virtio_console.o
|
obj-$(CONFIG_VIRTIO_CONSOLE) += virtio_console.o
|
||||||
obj-$(CONFIG_RAW_DRIVER) += raw.o
|
obj-$(CONFIG_RAW_DRIVER) += raw.o
|
||||||
obj-$(CONFIG_SGI_SNSC) += snsc.o snsc_event.o
|
obj-$(CONFIG_SGI_SNSC) += snsc.o snsc_event.o
|
||||||
|
@ -4,8 +4,6 @@
|
|||||||
# Makefile for the Linux PCMCIA char device drivers.
|
# Makefile for the Linux PCMCIA char device drivers.
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-y += ipwireless/
|
|
||||||
|
|
||||||
obj-$(CONFIG_SYNCLINK_CS) += synclink_cs.o
|
obj-$(CONFIG_SYNCLINK_CS) += synclink_cs.o
|
||||||
obj-$(CONFIG_CARDMAN_4000) += cm4000_cs.o
|
obj-$(CONFIG_CARDMAN_4000) += cm4000_cs.o
|
||||||
obj-$(CONFIG_CARDMAN_4040) += cm4040_cs.o
|
obj-$(CONFIG_CARDMAN_4040) += cm4040_cs.o
|
||||||
|
@ -418,8 +418,8 @@ static void bh_status(MGSLPC_INFO *info);
|
|||||||
/*
|
/*
|
||||||
* ioctl handlers
|
* ioctl handlers
|
||||||
*/
|
*/
|
||||||
static int tiocmget(struct tty_struct *tty, struct file *file);
|
static int tiocmget(struct tty_struct *tty);
|
||||||
static int tiocmset(struct tty_struct *tty, struct file *file,
|
static int tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear);
|
unsigned int set, unsigned int clear);
|
||||||
static int get_stats(MGSLPC_INFO *info, struct mgsl_icount __user *user_icount);
|
static int get_stats(MGSLPC_INFO *info, struct mgsl_icount __user *user_icount);
|
||||||
static int get_params(MGSLPC_INFO *info, MGSL_PARAMS __user *user_params);
|
static int get_params(MGSLPC_INFO *info, MGSL_PARAMS __user *user_params);
|
||||||
@ -2114,7 +2114,7 @@ static int modem_input_wait(MGSLPC_INFO *info,int arg)
|
|||||||
|
|
||||||
/* return the state of the serial control and status signals
|
/* return the state of the serial control and status signals
|
||||||
*/
|
*/
|
||||||
static int tiocmget(struct tty_struct *tty, struct file *file)
|
static int tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
MGSLPC_INFO *info = (MGSLPC_INFO *)tty->driver_data;
|
MGSLPC_INFO *info = (MGSLPC_INFO *)tty->driver_data;
|
||||||
unsigned int result;
|
unsigned int result;
|
||||||
@ -2139,7 +2139,7 @@ static int tiocmget(struct tty_struct *tty, struct file *file)
|
|||||||
|
|
||||||
/* set modem control signals (DTR/RTS)
|
/* set modem control signals (DTR/RTS)
|
||||||
*/
|
*/
|
||||||
static int tiocmset(struct tty_struct *tty, struct file *file,
|
static int tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
MGSLPC_INFO *info = (MGSLPC_INFO *)tty->driver_data;
|
MGSLPC_INFO *info = (MGSLPC_INFO *)tty->driver_data;
|
||||||
@ -2222,13 +2222,12 @@ static int mgslpc_get_icount(struct tty_struct *tty,
|
|||||||
* Arguments:
|
* Arguments:
|
||||||
*
|
*
|
||||||
* tty pointer to tty instance data
|
* tty pointer to tty instance data
|
||||||
* file pointer to associated file object for device
|
|
||||||
* cmd IOCTL command code
|
* cmd IOCTL command code
|
||||||
* arg command argument/context
|
* arg command argument/context
|
||||||
*
|
*
|
||||||
* Return Value: 0 if success, otherwise error code
|
* Return Value: 0 if success, otherwise error code
|
||||||
*/
|
*/
|
||||||
static int mgslpc_ioctl(struct tty_struct *tty, struct file * file,
|
static int mgslpc_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
MGSLPC_INFO * info = (MGSLPC_INFO *)tty->driver_data;
|
MGSLPC_INFO * info = (MGSLPC_INFO *)tty->driver_data;
|
||||||
|
@ -144,7 +144,7 @@ static int tpk_write_room(struct tty_struct *tty)
|
|||||||
/*
|
/*
|
||||||
* TTY operations ioctl function.
|
* TTY operations ioctl function.
|
||||||
*/
|
*/
|
||||||
static int tpk_ioctl(struct tty_struct *tty, struct file *file,
|
static int tpk_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct ttyprintk_port *tpkp = tty->driver_data;
|
struct ttyprintk_port *tpkp = tty->driver_data;
|
||||||
|
@ -1219,16 +1219,10 @@ static int capinc_tty_chars_in_buffer(struct tty_struct *tty)
|
|||||||
return mp->outbytes;
|
return mp->outbytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int capinc_tty_ioctl(struct tty_struct *tty, struct file * file,
|
static int capinc_tty_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
int error = 0;
|
return -ENOIOCTLCMD;
|
||||||
switch (cmd) {
|
|
||||||
default:
|
|
||||||
error = n_tty_ioctl_helper(tty, file, cmd, arg);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void capinc_tty_set_termios(struct tty_struct *tty, struct ktermios * old)
|
static void capinc_tty_set_termios(struct tty_struct *tty, struct ktermios * old)
|
||||||
|
@ -115,15 +115,15 @@ static int if_config(struct cardstate *cs, int *arg)
|
|||||||
|
|
||||||
static int if_open(struct tty_struct *tty, struct file *filp);
|
static int if_open(struct tty_struct *tty, struct file *filp);
|
||||||
static void if_close(struct tty_struct *tty, struct file *filp);
|
static void if_close(struct tty_struct *tty, struct file *filp);
|
||||||
static int if_ioctl(struct tty_struct *tty, struct file *file,
|
static int if_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg);
|
unsigned int cmd, unsigned long arg);
|
||||||
static int if_write_room(struct tty_struct *tty);
|
static int if_write_room(struct tty_struct *tty);
|
||||||
static int if_chars_in_buffer(struct tty_struct *tty);
|
static int if_chars_in_buffer(struct tty_struct *tty);
|
||||||
static void if_throttle(struct tty_struct *tty);
|
static void if_throttle(struct tty_struct *tty);
|
||||||
static void if_unthrottle(struct tty_struct *tty);
|
static void if_unthrottle(struct tty_struct *tty);
|
||||||
static void if_set_termios(struct tty_struct *tty, struct ktermios *old);
|
static void if_set_termios(struct tty_struct *tty, struct ktermios *old);
|
||||||
static int if_tiocmget(struct tty_struct *tty, struct file *file);
|
static int if_tiocmget(struct tty_struct *tty);
|
||||||
static int if_tiocmset(struct tty_struct *tty, struct file *file,
|
static int if_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear);
|
unsigned int set, unsigned int clear);
|
||||||
static int if_write(struct tty_struct *tty,
|
static int if_write(struct tty_struct *tty,
|
||||||
const unsigned char *buf, int count);
|
const unsigned char *buf, int count);
|
||||||
@ -205,7 +205,7 @@ static void if_close(struct tty_struct *tty, struct file *filp)
|
|||||||
module_put(cs->driver->owner);
|
module_put(cs->driver->owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int if_ioctl(struct tty_struct *tty, struct file *file,
|
static int if_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct cardstate *cs;
|
struct cardstate *cs;
|
||||||
@ -280,7 +280,7 @@ static int if_ioctl(struct tty_struct *tty, struct file *file,
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int if_tiocmget(struct tty_struct *tty, struct file *file)
|
static int if_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
struct cardstate *cs;
|
struct cardstate *cs;
|
||||||
int retval;
|
int retval;
|
||||||
@ -303,7 +303,7 @@ static int if_tiocmget(struct tty_struct *tty, struct file *file)
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int if_tiocmset(struct tty_struct *tty, struct file *file,
|
static int if_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
struct cardstate *cs;
|
struct cardstate *cs;
|
||||||
|
@ -440,7 +440,7 @@ static int gigaset_set_modem_ctrl(struct cardstate *cs, unsigned old_state,
|
|||||||
if (!set && !clear)
|
if (!set && !clear)
|
||||||
return 0;
|
return 0;
|
||||||
gig_dbg(DEBUG_IF, "tiocmset set %x clear %x", set, clear);
|
gig_dbg(DEBUG_IF, "tiocmset set %x clear %x", set, clear);
|
||||||
return tty->ops->tiocmset(tty, NULL, set, clear);
|
return tty->ops->tiocmset(tty, set, clear);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gigaset_baud_rate(struct cardstate *cs, unsigned cflag)
|
static int gigaset_baud_rate(struct cardstate *cs, unsigned cflag)
|
||||||
|
@ -1345,7 +1345,7 @@ isdn_tty_get_lsr_info(modem_info * info, uint __user * value)
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
isdn_tty_tiocmget(struct tty_struct *tty, struct file *file)
|
isdn_tty_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
modem_info *info = (modem_info *) tty->driver_data;
|
modem_info *info = (modem_info *) tty->driver_data;
|
||||||
u_char control, status;
|
u_char control, status;
|
||||||
@ -1372,7 +1372,7 @@ isdn_tty_tiocmget(struct tty_struct *tty, struct file *file)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
isdn_tty_tiocmset(struct tty_struct *tty, struct file *file,
|
isdn_tty_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
modem_info *info = (modem_info *) tty->driver_data;
|
modem_info *info = (modem_info *) tty->driver_data;
|
||||||
@ -1413,8 +1413,7 @@ isdn_tty_tiocmset(struct tty_struct *tty, struct file *file,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
isdn_tty_ioctl(struct tty_struct *tty, struct file *file,
|
isdn_tty_ioctl(struct tty_struct *tty, uint cmd, ulong arg)
|
||||||
uint cmd, ulong arg)
|
|
||||||
{
|
{
|
||||||
modem_info *info = (modem_info *) tty->driver_data;
|
modem_info *info = (modem_info *) tty->driver_data;
|
||||||
int retval;
|
int retval;
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/if_ether.h>
|
#include <linux/if_ether.h>
|
||||||
#include <linux/ctype.h>
|
#include <linux/ctype.h>
|
||||||
|
#include <linux/dmi.h>
|
||||||
|
|
||||||
#define PHUB_STATUS 0x00 /* Status Register offset */
|
#define PHUB_STATUS 0x00 /* Status Register offset */
|
||||||
#define PHUB_CONTROL 0x04 /* Control Register offset */
|
#define PHUB_CONTROL 0x04 /* Control Register offset */
|
||||||
@ -46,6 +47,17 @@
|
|||||||
#define PCH_MINOR_NOS 1
|
#define PCH_MINOR_NOS 1
|
||||||
#define CLKCFG_CAN_50MHZ 0x12000000
|
#define CLKCFG_CAN_50MHZ 0x12000000
|
||||||
#define CLKCFG_CANCLK_MASK 0xFF000000
|
#define CLKCFG_CANCLK_MASK 0xFF000000
|
||||||
|
#define CLKCFG_UART_MASK 0xFFFFFF
|
||||||
|
|
||||||
|
/* CM-iTC */
|
||||||
|
#define CLKCFG_UART_48MHZ (1 << 16)
|
||||||
|
#define CLKCFG_BAUDDIV (2 << 20)
|
||||||
|
#define CLKCFG_PLL2VCO (8 << 9)
|
||||||
|
#define CLKCFG_UARTCLKSEL (1 << 18)
|
||||||
|
|
||||||
|
/* Macros for ML7213 */
|
||||||
|
#define PCI_VENDOR_ID_ROHM 0x10db
|
||||||
|
#define PCI_DEVICE_ID_ROHM_ML7213_PHUB 0x801A
|
||||||
|
|
||||||
/* Macros for ML7213 */
|
/* Macros for ML7213 */
|
||||||
#define PCI_VENDOR_ID_ROHM 0x10db
|
#define PCI_VENDOR_ID_ROHM 0x10db
|
||||||
@ -618,6 +630,14 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev,
|
|||||||
CLKCFG_CAN_50MHZ,
|
CLKCFG_CAN_50MHZ,
|
||||||
CLKCFG_CANCLK_MASK);
|
CLKCFG_CANCLK_MASK);
|
||||||
|
|
||||||
|
/* quirk for CM-iTC board */
|
||||||
|
if (strstr(dmi_get_system_info(DMI_BOARD_NAME), "CM-iTC"))
|
||||||
|
pch_phub_read_modify_write_reg(chip,
|
||||||
|
(unsigned int)CLKCFG_REG_OFFSET,
|
||||||
|
CLKCFG_UART_48MHZ | CLKCFG_BAUDDIV |
|
||||||
|
CLKCFG_PLL2VCO | CLKCFG_UARTCLKSEL,
|
||||||
|
CLKCFG_UART_MASK);
|
||||||
|
|
||||||
/* set the prefech value */
|
/* set the prefech value */
|
||||||
iowrite32(0x000affaa, chip->pch_phub_base_address + 0x14);
|
iowrite32(0x000affaa, chip->pch_phub_base_address + 0x14);
|
||||||
/* set the interrupt delay value */
|
/* set the interrupt delay value */
|
||||||
|
@ -956,7 +956,7 @@ static int sdio_uart_break_ctl(struct tty_struct *tty, int break_state)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sdio_uart_tiocmget(struct tty_struct *tty, struct file *file)
|
static int sdio_uart_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
struct sdio_uart_port *port = tty->driver_data;
|
struct sdio_uart_port *port = tty->driver_data;
|
||||||
int result;
|
int result;
|
||||||
@ -970,7 +970,7 @@ static int sdio_uart_tiocmget(struct tty_struct *tty, struct file *file)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sdio_uart_tiocmset(struct tty_struct *tty, struct file *file,
|
static int sdio_uart_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
struct sdio_uart_port *port = tty->driver_data;
|
struct sdio_uart_port *port = tty->driver_data;
|
||||||
|
@ -167,7 +167,7 @@ static int irtty_set_dtr_rts(struct sir_dev *dev, int dtr, int rts)
|
|||||||
* let's be careful... Jean II
|
* let's be careful... Jean II
|
||||||
*/
|
*/
|
||||||
IRDA_ASSERT(priv->tty->ops->tiocmset != NULL, return -1;);
|
IRDA_ASSERT(priv->tty->ops->tiocmset != NULL, return -1;);
|
||||||
priv->tty->ops->tiocmset(priv->tty, NULL, set, clear);
|
priv->tty->ops->tiocmset(priv->tty, set, clear);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -324,7 +324,7 @@ struct hso_device {
|
|||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/* Serial driver functions */
|
/* Serial driver functions */
|
||||||
static int hso_serial_tiocmset(struct tty_struct *tty, struct file *file,
|
static int hso_serial_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear);
|
unsigned int set, unsigned int clear);
|
||||||
static void ctrl_callback(struct urb *urb);
|
static void ctrl_callback(struct urb *urb);
|
||||||
static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial);
|
static int put_rxbuf_data(struct urb *urb, struct hso_serial *serial);
|
||||||
@ -1335,7 +1335,7 @@ static int hso_serial_open(struct tty_struct *tty, struct file *filp)
|
|||||||
|
|
||||||
/* done */
|
/* done */
|
||||||
if (result)
|
if (result)
|
||||||
hso_serial_tiocmset(tty, NULL, TIOCM_RTS | TIOCM_DTR, 0);
|
hso_serial_tiocmset(tty, TIOCM_RTS | TIOCM_DTR, 0);
|
||||||
err_out:
|
err_out:
|
||||||
mutex_unlock(&serial->parent->mutex);
|
mutex_unlock(&serial->parent->mutex);
|
||||||
return result;
|
return result;
|
||||||
@ -1656,7 +1656,7 @@ static int hso_get_count(struct tty_struct *tty,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int hso_serial_tiocmget(struct tty_struct *tty, struct file *file)
|
static int hso_serial_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
struct hso_serial *serial = get_serial_by_tty(tty);
|
struct hso_serial *serial = get_serial_by_tty(tty);
|
||||||
@ -1687,7 +1687,7 @@ static int hso_serial_tiocmget(struct tty_struct *tty, struct file *file)
|
|||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hso_serial_tiocmset(struct tty_struct *tty, struct file *file,
|
static int hso_serial_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
int val = 0;
|
int val = 0;
|
||||||
@ -1730,7 +1730,7 @@ static int hso_serial_tiocmset(struct tty_struct *tty, struct file *file,
|
|||||||
USB_CTRL_SET_TIMEOUT);
|
USB_CTRL_SET_TIMEOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hso_serial_ioctl(struct tty_struct *tty, struct file *file,
|
static int hso_serial_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct hso_serial *serial = get_serial_by_tty(tty);
|
struct hso_serial *serial = get_serial_by_tty(tty);
|
||||||
|
@ -131,9 +131,8 @@ static void cpc_tty_trace(pc300dev_t *dev, char* buf, int len, char rxtx);
|
|||||||
static void cpc_tty_signal_off(pc300dev_t *pc300dev, unsigned char);
|
static void cpc_tty_signal_off(pc300dev_t *pc300dev, unsigned char);
|
||||||
static void cpc_tty_signal_on(pc300dev_t *pc300dev, unsigned char);
|
static void cpc_tty_signal_on(pc300dev_t *pc300dev, unsigned char);
|
||||||
|
|
||||||
static int pc300_tiocmset(struct tty_struct *, struct file *,
|
static int pc300_tiocmset(struct tty_struct *, unsigned int, unsigned int);
|
||||||
unsigned int, unsigned int);
|
static int pc300_tiocmget(struct tty_struct *);
|
||||||
static int pc300_tiocmget(struct tty_struct *, struct file *);
|
|
||||||
|
|
||||||
/* functions called by PC300 driver */
|
/* functions called by PC300 driver */
|
||||||
void cpc_tty_init(pc300dev_t *dev);
|
void cpc_tty_init(pc300dev_t *dev);
|
||||||
@ -543,7 +542,7 @@ static int cpc_tty_chars_in_buffer(struct tty_struct *tty)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pc300_tiocmset(struct tty_struct *tty, struct file *file,
|
static int pc300_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
st_cpc_tty_area *cpc_tty;
|
st_cpc_tty_area *cpc_tty;
|
||||||
@ -570,7 +569,7 @@ static int pc300_tiocmset(struct tty_struct *tty, struct file *file,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pc300_tiocmget(struct tty_struct *tty, struct file *file)
|
static int pc300_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
unsigned int result;
|
unsigned int result;
|
||||||
unsigned char status;
|
unsigned char status;
|
||||||
|
@ -455,9 +455,7 @@ do_kdgkb_ioctl(struct kbd_data *kbd, struct kbsentry __user *u_kbs,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int kbd_ioctl(struct kbd_data *kbd, unsigned int cmd, unsigned long arg)
|
||||||
kbd_ioctl(struct kbd_data *kbd, struct file *file,
|
|
||||||
unsigned int cmd, unsigned long arg)
|
|
||||||
{
|
{
|
||||||
void __user *argp;
|
void __user *argp;
|
||||||
unsigned int ct;
|
unsigned int ct;
|
||||||
|
@ -36,7 +36,7 @@ void kbd_free(struct kbd_data *);
|
|||||||
void kbd_ascebc(struct kbd_data *, unsigned char *);
|
void kbd_ascebc(struct kbd_data *, unsigned char *);
|
||||||
|
|
||||||
void kbd_keycode(struct kbd_data *, unsigned int);
|
void kbd_keycode(struct kbd_data *, unsigned int);
|
||||||
int kbd_ioctl(struct kbd_data *, struct file *, unsigned int, unsigned long);
|
int kbd_ioctl(struct kbd_data *, unsigned int, unsigned long);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Helper Functions.
|
* Helper Functions.
|
||||||
|
@ -1718,9 +1718,8 @@ tty3270_wait_until_sent(struct tty_struct *tty, int timeout)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int tty3270_ioctl(struct tty_struct *tty, unsigned int cmd,
|
||||||
tty3270_ioctl(struct tty_struct *tty, struct file *file,
|
unsigned long arg)
|
||||||
unsigned int cmd, unsigned long arg)
|
|
||||||
{
|
{
|
||||||
struct tty3270 *tp;
|
struct tty3270 *tp;
|
||||||
|
|
||||||
@ -1729,12 +1728,11 @@ tty3270_ioctl(struct tty_struct *tty, struct file *file,
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
return kbd_ioctl(tp->kbd, file, cmd, arg);
|
return kbd_ioctl(tp->kbd, cmd, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_COMPAT
|
#ifdef CONFIG_COMPAT
|
||||||
static long
|
static long tty3270_compat_ioctl(struct tty_struct *tty,
|
||||||
tty3270_compat_ioctl(struct tty_struct *tty, struct file *file,
|
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct tty3270 *tp;
|
struct tty3270 *tp;
|
||||||
@ -1744,7 +1742,7 @@ tty3270_compat_ioctl(struct tty_struct *tty, struct file *file,
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||||
return -EIO;
|
return -EIO;
|
||||||
return kbd_ioctl(tp->kbd, file, cmd, (unsigned long)compat_ptr(arg));
|
return kbd_ioctl(tp->kbd, cmd, (unsigned long)compat_ptr(arg));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -41,6 +41,10 @@ config STAGING_EXCLUDE_BUILD
|
|||||||
|
|
||||||
if !STAGING_EXCLUDE_BUILD
|
if !STAGING_EXCLUDE_BUILD
|
||||||
|
|
||||||
|
source "drivers/staging/tty/Kconfig"
|
||||||
|
|
||||||
|
source "drivers/staging/generic_serial/Kconfig"
|
||||||
|
|
||||||
source "drivers/staging/et131x/Kconfig"
|
source "drivers/staging/et131x/Kconfig"
|
||||||
|
|
||||||
source "drivers/staging/slicoss/Kconfig"
|
source "drivers/staging/slicoss/Kconfig"
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
# fix for build system bug...
|
# fix for build system bug...
|
||||||
obj-$(CONFIG_STAGING) += staging.o
|
obj-$(CONFIG_STAGING) += staging.o
|
||||||
|
|
||||||
|
obj-y += tty/
|
||||||
|
obj-y += generic_serial/
|
||||||
obj-$(CONFIG_ET131X) += et131x/
|
obj-$(CONFIG_ET131X) += et131x/
|
||||||
obj-$(CONFIG_SLICOSS) += slicoss/
|
obj-$(CONFIG_SLICOSS) += slicoss/
|
||||||
obj-$(CONFIG_VIDEO_GO7007) += go7007/
|
obj-$(CONFIG_VIDEO_GO7007) += go7007/
|
||||||
|
45
drivers/staging/generic_serial/Kconfig
Normal file
45
drivers/staging/generic_serial/Kconfig
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
config A2232
|
||||||
|
tristate "Commodore A2232 serial support (EXPERIMENTAL)"
|
||||||
|
depends on EXPERIMENTAL && ZORRO && BROKEN
|
||||||
|
---help---
|
||||||
|
This option supports the 2232 7-port serial card shipped with the
|
||||||
|
Amiga 2000 and other Zorro-bus machines, dating from 1989. At
|
||||||
|
a max of 19,200 bps, the ports are served by a 6551 ACIA UART chip
|
||||||
|
each, plus a 8520 CIA, and a master 6502 CPU and buffer as well. The
|
||||||
|
ports were connected with 8 pin DIN connectors on the card bracket,
|
||||||
|
for which 8 pin to DB25 adapters were supplied. The card also had
|
||||||
|
jumpers internally to toggle various pinning configurations.
|
||||||
|
|
||||||
|
This driver can be built as a module; but then "generic_serial"
|
||||||
|
will also be built as a module. This has to be loaded before
|
||||||
|
"ser_a2232". If you want to do this, answer M here.
|
||||||
|
|
||||||
|
config SX
|
||||||
|
tristate "Specialix SX (and SI) card support"
|
||||||
|
depends on SERIAL_NONSTANDARD && (PCI || EISA || ISA) && BROKEN
|
||||||
|
help
|
||||||
|
This is a driver for the SX and SI multiport serial cards.
|
||||||
|
Please read the file <file:Documentation/serial/sx.txt> for details.
|
||||||
|
|
||||||
|
This driver can only be built as a module ( = code which can be
|
||||||
|
inserted in and removed from the running kernel whenever you want).
|
||||||
|
The module will be called sx. If you want to do that, say M here.
|
||||||
|
|
||||||
|
config RIO
|
||||||
|
tristate "Specialix RIO system support"
|
||||||
|
depends on SERIAL_NONSTANDARD && BROKEN
|
||||||
|
help
|
||||||
|
This is a driver for the Specialix RIO, a smart serial card which
|
||||||
|
drives an outboard box that can support up to 128 ports. Product
|
||||||
|
information is at <http://www.perle.com/support/documentation.html#multiport>.
|
||||||
|
There are both ISA and PCI versions.
|
||||||
|
|
||||||
|
config RIO_OLDPCI
|
||||||
|
bool "Support really old RIO/PCI cards"
|
||||||
|
depends on RIO
|
||||||
|
help
|
||||||
|
Older RIO PCI cards need some initialization-time configuration to
|
||||||
|
determine the IRQ and some control addresses. If you have a RIO and
|
||||||
|
this doesn't seem to work, try setting this to Y.
|
||||||
|
|
||||||
|
|
6
drivers/staging/generic_serial/Makefile
Normal file
6
drivers/staging/generic_serial/Makefile
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
|
||||||
|
obj-$(CONFIG_MVME162_SCC) += generic_serial.o vme_scc.o
|
||||||
|
obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
|
||||||
|
obj-$(CONFIG_A2232) += ser_a2232.o generic_serial.o
|
||||||
|
obj-$(CONFIG_SX) += sx.o generic_serial.o
|
||||||
|
obj-$(CONFIG_RIO) += rio/ generic_serial.o
|
6
drivers/staging/generic_serial/TODO
Normal file
6
drivers/staging/generic_serial/TODO
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
These are a few tty/serial drivers that either do not build,
|
||||||
|
or work if they do build, or if they seem to work, are for obsolete
|
||||||
|
hardware, or are full of unfixable races and no one uses them anymore.
|
||||||
|
|
||||||
|
If no one steps up to adopt any of these drivers, they will be removed
|
||||||
|
in the 2.6.41 release.
|
@ -566,9 +566,9 @@ void gs_close(struct tty_struct * tty, struct file * filp)
|
|||||||
* line status register.
|
* line status register.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
spin_lock_irqsave(&port->driver_lock, flags);
|
spin_lock(&port->driver_lock);
|
||||||
port->rd->disable_rx_interrupts (port);
|
port->rd->disable_rx_interrupts (port);
|
||||||
spin_unlock_irqrestore(&port->driver_lock, flags);
|
spin_unlock(&port->driver_lock);
|
||||||
spin_unlock_irqrestore(&port->port.lock, flags);
|
spin_unlock_irqrestore(&port->port.lock, flags);
|
||||||
|
|
||||||
/* close has no way of returning "EINTR", so discard return value */
|
/* close has no way of returning "EINTR", so discard return value */
|
@ -133,7 +133,7 @@ static void a2232_hungup(void *ptr);
|
|||||||
/* END GENERIC_SERIAL PROTOTYPES */
|
/* END GENERIC_SERIAL PROTOTYPES */
|
||||||
|
|
||||||
/* Functions that the TTY driver struct expects */
|
/* Functions that the TTY driver struct expects */
|
||||||
static int a2232_ioctl(struct tty_struct *tty, struct file *file,
|
static int a2232_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg);
|
unsigned int cmd, unsigned long arg);
|
||||||
static void a2232_throttle(struct tty_struct *tty);
|
static void a2232_throttle(struct tty_struct *tty);
|
||||||
static void a2232_unthrottle(struct tty_struct *tty);
|
static void a2232_unthrottle(struct tty_struct *tty);
|
||||||
@ -447,7 +447,7 @@ static void a2232_hungup(void *ptr)
|
|||||||
/*** END OF REAL_DRIVER FUNCTIONS ***/
|
/*** END OF REAL_DRIVER FUNCTIONS ***/
|
||||||
|
|
||||||
/*** BEGIN FUNCTIONS EXPECTED BY TTY DRIVER STRUCTS ***/
|
/*** BEGIN FUNCTIONS EXPECTED BY TTY DRIVER STRUCTS ***/
|
||||||
static int a2232_ioctl( struct tty_struct *tty, struct file *file,
|
static int a2232_ioctl( struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return -ENOIOCTLCMD;
|
return -ENOIOCTLCMD;
|
@ -1873,13 +1873,13 @@ static int sx_break(struct tty_struct *tty, int flag)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sx_tiocmget(struct tty_struct *tty, struct file *file)
|
static int sx_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
struct sx_port *port = tty->driver_data;
|
struct sx_port *port = tty->driver_data;
|
||||||
return sx_getsignals(port);
|
return sx_getsignals(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sx_tiocmset(struct tty_struct *tty, struct file *file,
|
static int sx_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
struct sx_port *port = tty->driver_data;
|
struct sx_port *port = tty->driver_data;
|
||||||
@ -1899,7 +1899,7 @@ static int sx_tiocmset(struct tty_struct *tty, struct file *file,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int sx_ioctl(struct tty_struct *tty, struct file *filp,
|
static int sx_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
@ -75,7 +75,7 @@ static void scc_hungup(void *ptr);
|
|||||||
static void scc_close(void *ptr);
|
static void scc_close(void *ptr);
|
||||||
static int scc_chars_in_buffer(void * ptr);
|
static int scc_chars_in_buffer(void * ptr);
|
||||||
static int scc_open(struct tty_struct * tty, struct file * filp);
|
static int scc_open(struct tty_struct * tty, struct file * filp);
|
||||||
static int scc_ioctl(struct tty_struct * tty, struct file * filp,
|
static int scc_ioctl(struct tty_struct * tty,
|
||||||
unsigned int cmd, unsigned long arg);
|
unsigned int cmd, unsigned long arg);
|
||||||
static void scc_throttle(struct tty_struct *tty);
|
static void scc_throttle(struct tty_struct *tty);
|
||||||
static void scc_unthrottle(struct tty_struct *tty);
|
static void scc_unthrottle(struct tty_struct *tty);
|
||||||
@ -1046,7 +1046,7 @@ static void scc_unthrottle (struct tty_struct * tty)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int scc_ioctl(struct tty_struct *tty, struct file *file,
|
static int scc_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
return -ENOIOCTLCMD;
|
return -ENOIOCTLCMD;
|
@ -852,7 +852,7 @@ static int qt2_chars_in_buffer(struct tty_struct *tty)
|
|||||||
* TIOCMGET and TIOCMSET are filtered off to their own methods before they get
|
* TIOCMGET and TIOCMSET are filtered off to their own methods before they get
|
||||||
* here, so we don't have to handle them.
|
* here, so we don't have to handle them.
|
||||||
*/
|
*/
|
||||||
static int qt2_ioctl(struct tty_struct *tty, struct file *file,
|
static int qt2_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct usb_serial_port *port = tty->driver_data;
|
struct usb_serial_port *port = tty->driver_data;
|
||||||
@ -1078,7 +1078,7 @@ static void qt2_set_termios(struct tty_struct *tty,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qt2_tiocmget(struct tty_struct *tty, struct file *file)
|
static int qt2_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
struct usb_serial_port *port = tty->driver_data;
|
struct usb_serial_port *port = tty->driver_data;
|
||||||
struct usb_serial *serial = port->serial;
|
struct usb_serial *serial = port->serial;
|
||||||
@ -1121,7 +1121,7 @@ static int qt2_tiocmget(struct tty_struct *tty, struct file *file)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qt2_tiocmset(struct tty_struct *tty, struct file *file,
|
static int qt2_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
struct usb_serial_port *port = tty->driver_data;
|
struct usb_serial_port *port = tty->driver_data;
|
||||||
|
@ -1191,7 +1191,7 @@ static int qt_write_room(struct tty_struct *tty)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qt_ioctl(struct tty_struct *tty, struct file *file,
|
static int qt_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
struct usb_serial_port *port = tty->driver_data;
|
struct usb_serial_port *port = tty->driver_data;
|
||||||
@ -1383,7 +1383,7 @@ static void qt_break(struct tty_struct *tty, int break_state)
|
|||||||
|
|
||||||
static inline int qt_real_tiocmget(struct tty_struct *tty,
|
static inline int qt_real_tiocmget(struct tty_struct *tty,
|
||||||
struct usb_serial_port *port,
|
struct usb_serial_port *port,
|
||||||
struct file *file, struct usb_serial *serial)
|
struct usb_serial *serial)
|
||||||
{
|
{
|
||||||
|
|
||||||
u8 mcr;
|
u8 mcr;
|
||||||
@ -1425,7 +1425,6 @@ static inline int qt_real_tiocmget(struct tty_struct *tty,
|
|||||||
|
|
||||||
static inline int qt_real_tiocmset(struct tty_struct *tty,
|
static inline int qt_real_tiocmset(struct tty_struct *tty,
|
||||||
struct usb_serial_port *port,
|
struct usb_serial_port *port,
|
||||||
struct file *file,
|
|
||||||
struct usb_serial *serial,
|
struct usb_serial *serial,
|
||||||
unsigned int value)
|
unsigned int value)
|
||||||
{
|
{
|
||||||
@ -1462,7 +1461,7 @@ static inline int qt_real_tiocmset(struct tty_struct *tty,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qt_tiocmget(struct tty_struct *tty, struct file *file)
|
static int qt_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
struct usb_serial_port *port = tty->driver_data;
|
struct usb_serial_port *port = tty->driver_data;
|
||||||
struct usb_serial *serial = get_usb_serial(port, __func__);
|
struct usb_serial *serial = get_usb_serial(port, __func__);
|
||||||
@ -1480,13 +1479,13 @@ static int qt_tiocmget(struct tty_struct *tty, struct file *file)
|
|||||||
dbg("%s - port %d\n", __func__, port->number);
|
dbg("%s - port %d\n", __func__, port->number);
|
||||||
dbg("%s - port->RxHolding = %d\n", __func__, qt_port->RxHolding);
|
dbg("%s - port->RxHolding = %d\n", __func__, qt_port->RxHolding);
|
||||||
|
|
||||||
retval = qt_real_tiocmget(tty, port, file, serial);
|
retval = qt_real_tiocmget(tty, port, serial);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&qt_port->lock, flags);
|
spin_unlock_irqrestore(&qt_port->lock, flags);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int qt_tiocmset(struct tty_struct *tty, struct file *file,
|
static int qt_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -1506,7 +1505,7 @@ static int qt_tiocmset(struct tty_struct *tty, struct file *file,
|
|||||||
dbg("%s - port %d\n", __func__, port->number);
|
dbg("%s - port %d\n", __func__, port->number);
|
||||||
dbg("%s - qt_port->RxHolding = %d\n", __func__, qt_port->RxHolding);
|
dbg("%s - qt_port->RxHolding = %d\n", __func__, qt_port->RxHolding);
|
||||||
|
|
||||||
retval = qt_real_tiocmset(tty, port, file, serial, set);
|
retval = qt_real_tiocmset(tty, port, serial, set);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&qt_port->lock, flags);
|
spin_unlock_irqrestore(&qt_port->lock, flags);
|
||||||
return retval;
|
return retval;
|
||||||
|
87
drivers/staging/tty/Kconfig
Normal file
87
drivers/staging/tty/Kconfig
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
config STALLION
|
||||||
|
tristate "Stallion EasyIO or EC8/32 support"
|
||||||
|
depends on STALDRV && (ISA || EISA || PCI)
|
||||||
|
help
|
||||||
|
If you have an EasyIO or EasyConnection 8/32 multiport Stallion
|
||||||
|
card, then this is for you; say Y. Make sure to read
|
||||||
|
<file:Documentation/serial/stallion.txt>.
|
||||||
|
|
||||||
|
To compile this driver as a module, choose M here: the
|
||||||
|
module will be called stallion.
|
||||||
|
|
||||||
|
config ISTALLION
|
||||||
|
tristate "Stallion EC8/64, ONboard, Brumby support"
|
||||||
|
depends on STALDRV && (ISA || EISA || PCI)
|
||||||
|
help
|
||||||
|
If you have an EasyConnection 8/64, ONboard, Brumby or Stallion
|
||||||
|
serial multiport card, say Y here. Make sure to read
|
||||||
|
<file:Documentation/serial/stallion.txt>.
|
||||||
|
|
||||||
|
To compile this driver as a module, choose M here: the
|
||||||
|
module will be called istallion.
|
||||||
|
|
||||||
|
config DIGIEPCA
|
||||||
|
tristate "Digiboard Intelligent Async Support"
|
||||||
|
depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
|
||||||
|
---help---
|
||||||
|
This is a driver for Digi International's Xx, Xeve, and Xem series
|
||||||
|
of cards which provide multiple serial ports. You would need
|
||||||
|
something like this to connect more than two modems to your Linux
|
||||||
|
box, for instance in order to become a dial-in server. This driver
|
||||||
|
supports the original PC (ISA) boards as well as PCI, and EISA. If
|
||||||
|
you have a card like this, say Y here and read the file
|
||||||
|
<file:Documentation/serial/digiepca.txt>.
|
||||||
|
|
||||||
|
To compile this driver as a module, choose M here: the
|
||||||
|
module will be called epca.
|
||||||
|
|
||||||
|
config RISCOM8
|
||||||
|
tristate "SDL RISCom/8 card support"
|
||||||
|
depends on SERIAL_NONSTANDARD
|
||||||
|
help
|
||||||
|
This is a driver for the SDL Communications RISCom/8 multiport card,
|
||||||
|
which gives you many serial ports. You would need something like
|
||||||
|
this to connect more than two modems to your Linux box, for instance
|
||||||
|
in order to become a dial-in server. If you have a card like that,
|
||||||
|
say Y here and read the file <file:Documentation/serial/riscom8.txt>.
|
||||||
|
|
||||||
|
Also it's possible to say M here and compile this driver as kernel
|
||||||
|
loadable module; the module will be called riscom8.
|
||||||
|
|
||||||
|
config SPECIALIX
|
||||||
|
tristate "Specialix IO8+ card support"
|
||||||
|
depends on SERIAL_NONSTANDARD
|
||||||
|
help
|
||||||
|
This is a driver for the Specialix IO8+ multiport card (both the
|
||||||
|
ISA and the PCI version) which gives you many serial ports. You
|
||||||
|
would need something like this to connect more than two modems to
|
||||||
|
your Linux box, for instance in order to become a dial-in server.
|
||||||
|
|
||||||
|
If you have a card like that, say Y here and read the file
|
||||||
|
<file:Documentation/serial/specialix.txt>. Also it's possible to say
|
||||||
|
M here and compile this driver as kernel loadable module which will be
|
||||||
|
called specialix.
|
||||||
|
|
||||||
|
config COMPUTONE
|
||||||
|
tristate "Computone IntelliPort Plus serial support"
|
||||||
|
depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
|
||||||
|
---help---
|
||||||
|
This driver supports the entire family of Intelliport II/Plus
|
||||||
|
controllers with the exception of the MicroChannel controllers and
|
||||||
|
products previous to the Intelliport II. These are multiport cards,
|
||||||
|
which give you many serial ports. You would need something like this
|
||||||
|
to connect more than two modems to your Linux box, for instance in
|
||||||
|
order to become a dial-in server. If you have a card like that, say
|
||||||
|
Y here and read <file:Documentation/serial/computone.txt>.
|
||||||
|
|
||||||
|
To compile this driver as module, choose M here: the
|
||||||
|
module will be called ip2.
|
||||||
|
|
||||||
|
config SERIAL167
|
||||||
|
bool "CD2401 support for MVME166/7 serial ports"
|
||||||
|
depends on MVME16x
|
||||||
|
help
|
||||||
|
This is the driver for the serial ports on the Motorola MVME166,
|
||||||
|
167, and 172 boards. Everyone using one of these boards should say
|
||||||
|
Y here.
|
||||||
|
|
7
drivers/staging/tty/Makefile
Normal file
7
drivers/staging/tty/Makefile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
obj-$(CONFIG_STALLION) += stallion.o
|
||||||
|
obj-$(CONFIG_ISTALLION) += istallion.o
|
||||||
|
obj-$(CONFIG_DIGIEPCA) += epca.o
|
||||||
|
obj-$(CONFIG_SERIAL167) += serial167.o
|
||||||
|
obj-$(CONFIG_SPECIALIX) += specialix.o
|
||||||
|
obj-$(CONFIG_RISCOM8) += riscom8.o
|
||||||
|
obj-$(CONFIG_COMPUTONE) += ip2/
|
6
drivers/staging/tty/TODO
Normal file
6
drivers/staging/tty/TODO
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
These are a few tty/serial drivers that either do not build,
|
||||||
|
or work if they do build, or if they seem to work, are for obsolete
|
||||||
|
hardware, or are full of unfixable races and no one uses them anymore.
|
||||||
|
|
||||||
|
If no one steps up to adopt any of these drivers, they will be removed
|
||||||
|
in the 2.6.41 release.
|
@ -175,9 +175,9 @@ static unsigned termios2digi_i(struct channel *ch, unsigned);
|
|||||||
static unsigned termios2digi_c(struct channel *ch, unsigned);
|
static unsigned termios2digi_c(struct channel *ch, unsigned);
|
||||||
static void epcaparam(struct tty_struct *, struct channel *);
|
static void epcaparam(struct tty_struct *, struct channel *);
|
||||||
static void receive_data(struct channel *, struct tty_struct *tty);
|
static void receive_data(struct channel *, struct tty_struct *tty);
|
||||||
static int pc_ioctl(struct tty_struct *, struct file *,
|
static int pc_ioctl(struct tty_struct *,
|
||||||
unsigned int, unsigned long);
|
unsigned int, unsigned long);
|
||||||
static int info_ioctl(struct tty_struct *, struct file *,
|
static int info_ioctl(struct tty_struct *,
|
||||||
unsigned int, unsigned long);
|
unsigned int, unsigned long);
|
||||||
static void pc_set_termios(struct tty_struct *, struct ktermios *);
|
static void pc_set_termios(struct tty_struct *, struct ktermios *);
|
||||||
static void do_softint(struct work_struct *work);
|
static void do_softint(struct work_struct *work);
|
||||||
@ -1919,7 +1919,7 @@ static void receive_data(struct channel *ch, struct tty_struct *tty)
|
|||||||
tty_schedule_flip(tty);
|
tty_schedule_flip(tty);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int info_ioctl(struct tty_struct *tty, struct file *file,
|
static int info_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
@ -1982,7 +1982,7 @@ static int info_ioctl(struct tty_struct *tty, struct file *file,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pc_tiocmget(struct tty_struct *tty, struct file *file)
|
static int pc_tiocmget(struct tty_struct *tty)
|
||||||
{
|
{
|
||||||
struct channel *ch = tty->driver_data;
|
struct channel *ch = tty->driver_data;
|
||||||
struct board_chan __iomem *bc;
|
struct board_chan __iomem *bc;
|
||||||
@ -2015,7 +2015,7 @@ static int pc_tiocmget(struct tty_struct *tty, struct file *file)
|
|||||||
return mflag;
|
return mflag;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pc_tiocmset(struct tty_struct *tty, struct file *file,
|
static int pc_tiocmset(struct tty_struct *tty,
|
||||||
unsigned int set, unsigned int clear)
|
unsigned int set, unsigned int clear)
|
||||||
{
|
{
|
||||||
struct channel *ch = tty->driver_data;
|
struct channel *ch = tty->driver_data;
|
||||||
@ -2057,7 +2057,7 @@ static int pc_tiocmset(struct tty_struct *tty, struct file *file,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pc_ioctl(struct tty_struct *tty, struct file *file,
|
static int pc_ioctl(struct tty_struct *tty,
|
||||||
unsigned int cmd, unsigned long arg)
|
unsigned int cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
digiflow_t dflow;
|
digiflow_t dflow;
|
||||||
@ -2074,14 +2074,14 @@ static int pc_ioctl(struct tty_struct *tty, struct file *file,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
switch (cmd) {
|
switch (cmd) {
|
||||||
case TIOCMODG:
|
case TIOCMODG:
|
||||||
mflag = pc_tiocmget(tty, file);
|
mflag = pc_tiocmget(tty);
|
||||||
if (put_user(mflag, (unsigned long __user *)argp))
|
if (put_user(mflag, (unsigned long __user *)argp))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
break;
|
break;
|
||||||
case TIOCMODS:
|
case TIOCMODS:
|
||||||
if (get_user(mstat, (unsigned __user *)argp))
|
if (get_user(mstat, (unsigned __user *)argp))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
return pc_tiocmset(tty, file, mstat, ~mstat);
|
return pc_tiocmset(tty, mstat, ~mstat);
|
||||||
case TIOCSDTR:
|
case TIOCSDTR:
|
||||||
spin_lock_irqsave(&epca_lock, flags);
|
spin_lock_irqsave(&epca_lock, flags);
|
||||||
ch->omodem |= ch->m_dtr;
|
ch->omodem |= ch->m_dtr;
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user