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:
Коммит
e6bee325e4
|
@ -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
|
||||
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
|
||||
M: Thomas Dahlmann <dahlmann.thomas@arcor.de>
|
||||
L: linux-geode@lists.infradead.org (moderated for non-subscribers)
|
||||
|
@ -2833,7 +2843,7 @@ F: mm/hwpoison-inject.c
|
|||
HYPERVISOR VIRTUAL CONSOLE DRIVER
|
||||
L: linuxppc-dev@lists.ozlabs.org
|
||||
S: Odd Fixes
|
||||
F: drivers/char/hvc_*
|
||||
F: drivers/tty/hvc/
|
||||
|
||||
iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
|
||||
M: Peter Jones <pjones@redhat.com>
|
||||
|
@ -3448,7 +3458,7 @@ M: Jiri Kosina <jkosina@suse.cz>
|
|||
M: David Sterba <dsterba@suse.cz>
|
||||
S: Maintained
|
||||
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
|
||||
M: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
|
||||
|
@ -6102,7 +6112,7 @@ M: Chris Metcalf <cmetcalf@tilera.com>
|
|||
W: http://www.tilera.com/scm/
|
||||
S: Supported
|
||||
F: arch/tile/
|
||||
F: drivers/char/hvc_tile.c
|
||||
F: drivers/tty/hvc/hvc_tile.c
|
||||
F: drivers/net/tile/
|
||||
|
||||
TLAN NETWORK DRIVER
|
||||
|
|
|
@ -94,6 +94,7 @@
|
|||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||
#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 TIOCVHANGUP 0x5437
|
||||
|
||||
#define TIOCSERCONFIG 0x5453
|
||||
#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,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
static int rs_ioctl(struct tty_struct *tty, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
if ((cmd != TIOCGSERIAL) && (cmd != TIOCSSERIAL) &&
|
||||
(cmd != TIOCSERCONFIG) && (cmd != TIOCSERGSTRUCT) &&
|
||||
|
|
|
@ -554,14 +554,6 @@ config MVME147_SCC
|
|||
This is the driver for the serial ports on the Motorola MVME147
|
||||
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
|
||||
bool "SCC support for MVME162 serial ports"
|
||||
depends on MVME16x && BROKEN
|
||||
|
|
|
@ -85,6 +85,7 @@
|
|||
#define TIOCSPTLCK _IOW('T', 0x31, int) /* Lock/unlock Pty */
|
||||
#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 TIOCVHANGUP 0x5437
|
||||
|
||||
/* I hope the range from 0x5480 on is free ... */
|
||||
#define TIOCSCTTY 0x5480 /* become controlling tty */
|
||||
|
|
|
@ -54,6 +54,7 @@
|
|||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||
#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 TIOCVHANGUP 0x5437
|
||||
|
||||
#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
|
||||
#define FIOCLEX 0x5451
|
||||
|
|
|
@ -96,6 +96,7 @@
|
|||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||
#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 TIOCVHANGUP 0x5437
|
||||
|
||||
#define TIOCSERCONFIG 0x5453
|
||||
#define TIOCSERGWILD 0x5454
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
||||
#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 TIOCVHANGUP _IO('T', 0x37)
|
||||
|
||||
#define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */
|
||||
#define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#define TCSETSW2 _IOW('T', 14, struct termios2)
|
||||
#define TCSETSF2 _IOW('T', 15, struct termios2)
|
||||
#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
|
||||
* 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 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 TIOCVHANGUP _IO('T', 0x37)
|
||||
|
||||
#define TIOCSERCONFIG _IO('T', 83)
|
||||
#define TIOCSERGWILD _IOR('T', 84, int)
|
||||
|
|
|
@ -51,32 +51,32 @@ struct ath_struct {
|
|||
|
||||
static int ath_wakeup_ar3k(struct tty_struct *tty)
|
||||
{
|
||||
struct termios settings;
|
||||
int status = tty->driver->ops->tiocmget(tty, NULL);
|
||||
struct ktermios ktermios;
|
||||
int status = tty->driver->ops->tiocmget(tty);
|
||||
|
||||
if (status & TIOCM_CTS)
|
||||
return status;
|
||||
|
||||
/* Disable Automatic RTSCTS */
|
||||
n_tty_ioctl_helper(tty, NULL, TCGETS, (unsigned long)&settings);
|
||||
settings.c_cflag &= ~CRTSCTS;
|
||||
n_tty_ioctl_helper(tty, NULL, TCSETS, (unsigned long)&settings);
|
||||
memcpy(&ktermios, tty->termios, sizeof(ktermios));
|
||||
ktermios.c_cflag &= ~CRTSCTS;
|
||||
tty_set_termios(tty, &ktermios);
|
||||
|
||||
/* Clear RTS first */
|
||||
status = tty->driver->ops->tiocmget(tty, NULL);
|
||||
tty->driver->ops->tiocmset(tty, NULL, 0x00, TIOCM_RTS);
|
||||
status = tty->driver->ops->tiocmget(tty);
|
||||
tty->driver->ops->tiocmset(tty, 0x00, TIOCM_RTS);
|
||||
mdelay(20);
|
||||
|
||||
/* Set RTS, wake up board */
|
||||
status = tty->driver->ops->tiocmget(tty, NULL);
|
||||
tty->driver->ops->tiocmset(tty, NULL, TIOCM_RTS, 0x00);
|
||||
status = tty->driver->ops->tiocmget(tty);
|
||||
tty->driver->ops->tiocmset(tty, TIOCM_RTS, 0x00);
|
||||
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);
|
||||
settings.c_cflag |= CRTSCTS;
|
||||
n_tty_ioctl_helper(tty, NULL, TCSETS, (unsigned long)&settings);
|
||||
/* Disable Automatic RTSCTS */
|
||||
ktermios.c_cflag |= CRTSCTS;
|
||||
status = tty_set_termios(tty, &ktermios);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
|
|
@ -4,89 +4,7 @@
|
|||
|
||||
menu "Character devices"
|
||||
|
||||
config VT
|
||||
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>.
|
||||
source "drivers/tty/Kconfig"
|
||||
|
||||
config DEVKMEM
|
||||
bool "/dev/kmem virtual device support"
|
||||
|
@ -97,253 +15,6 @@ config DEVKMEM
|
|||
kind of kernel debugging operations.
|
||||
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
|
||||
bool "Stallion multiport serial support"
|
||||
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
|
||||
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
|
||||
bool "SGI Altix system controller communication support"
|
||||
depends on (IA64_SGI_SN2 || IA64_GENERIC)
|
||||
|
@ -428,71 +51,6 @@ config SGI_MBCS
|
|||
|
||||
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
|
||||
bool "TTY driver to output user messages via printk"
|
||||
depends on EXPERT
|
||||
|
@ -612,84 +170,7 @@ config PPDEV
|
|||
|
||||
If unsure, say N.
|
||||
|
||||
config HVC_DRIVER
|
||||
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.
|
||||
source "drivers/tty/hvc/Kconfig"
|
||||
|
||||
config VIRTIO_CONSOLE
|
||||
tristate "Virtio console"
|
||||
|
@ -707,23 +188,6 @@ config VIRTIO_CONSOLE
|
|||
the port which can be used by udev scripts to create a
|
||||
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
|
||||
tristate "IBM POWER Barrier Synchronization Register support"
|
||||
depends on PPC_PSERIES
|
||||
|
|
|
@ -5,31 +5,7 @@
|
|||
obj-y += mem.o random.o
|
||||
obj-$(CONFIG_TTY_PRINTK) += ttyprintk.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_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_RAW_DRIVER) += raw.o
|
||||
obj-$(CONFIG_SGI_SNSC) += snsc.o snsc_event.o
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
# Makefile for the Linux PCMCIA char device drivers.
|
||||
#
|
||||
|
||||
obj-y += ipwireless/
|
||||
|
||||
obj-$(CONFIG_SYNCLINK_CS) += synclink_cs.o
|
||||
obj-$(CONFIG_CARDMAN_4000) += cm4000_cs.o
|
||||
obj-$(CONFIG_CARDMAN_4040) += cm4040_cs.o
|
||||
|
|
|
@ -418,9 +418,9 @@ static void bh_status(MGSLPC_INFO *info);
|
|||
/*
|
||||
* ioctl handlers
|
||||
*/
|
||||
static int tiocmget(struct tty_struct *tty, struct file *file);
|
||||
static int tiocmset(struct tty_struct *tty, struct file *file,
|
||||
unsigned int set, unsigned int clear);
|
||||
static int tiocmget(struct tty_struct *tty);
|
||||
static int tiocmset(struct tty_struct *tty,
|
||||
unsigned int set, unsigned int clear);
|
||||
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 set_params(MGSLPC_INFO *info, MGSL_PARAMS __user *new_params, struct tty_struct *tty);
|
||||
|
@ -2114,7 +2114,7 @@ static int modem_input_wait(MGSLPC_INFO *info,int arg)
|
|||
|
||||
/* 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;
|
||||
unsigned int result;
|
||||
|
@ -2139,7 +2139,7 @@ static int tiocmget(struct tty_struct *tty, struct file *file)
|
|||
|
||||
/* 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)
|
||||
{
|
||||
MGSLPC_INFO *info = (MGSLPC_INFO *)tty->driver_data;
|
||||
|
@ -2222,13 +2222,12 @@ static int mgslpc_get_icount(struct tty_struct *tty,
|
|||
* Arguments:
|
||||
*
|
||||
* tty pointer to tty instance data
|
||||
* file pointer to associated file object for device
|
||||
* cmd IOCTL command code
|
||||
* arg command argument/context
|
||||
*
|
||||
* 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)
|
||||
{
|
||||
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.
|
||||
*/
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
int error = 0;
|
||||
switch (cmd) {
|
||||
default:
|
||||
error = n_tty_ioctl_helper(tty, file, cmd, arg);
|
||||
break;
|
||||
}
|
||||
return error;
|
||||
return -ENOIOCTLCMD;
|
||||
}
|
||||
|
||||
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 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);
|
||||
static int if_write_room(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_unthrottle(struct tty_struct *tty);
|
||||
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_tiocmset(struct tty_struct *tty, struct file *file,
|
||||
static int if_tiocmget(struct tty_struct *tty);
|
||||
static int if_tiocmset(struct tty_struct *tty,
|
||||
unsigned int set, unsigned int clear);
|
||||
static int if_write(struct tty_struct *tty,
|
||||
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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
struct cardstate *cs;
|
||||
|
@ -280,7 +280,7 @@ static int if_ioctl(struct tty_struct *tty, struct file *file,
|
|||
return retval;
|
||||
}
|
||||
|
||||
static int if_tiocmget(struct tty_struct *tty, struct file *file)
|
||||
static int if_tiocmget(struct tty_struct *tty)
|
||||
{
|
||||
struct cardstate *cs;
|
||||
int retval;
|
||||
|
@ -303,7 +303,7 @@ static int if_tiocmget(struct tty_struct *tty, struct file *file)
|
|||
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)
|
||||
{
|
||||
struct cardstate *cs;
|
||||
|
|
|
@ -440,7 +440,7 @@ static int gigaset_set_modem_ctrl(struct cardstate *cs, unsigned old_state,
|
|||
if (!set && !clear)
|
||||
return 0;
|
||||
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)
|
||||
|
|
|
@ -1345,7 +1345,7 @@ isdn_tty_get_lsr_info(modem_info * info, uint __user * value)
|
|||
|
||||
|
||||
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;
|
||||
u_char control, status;
|
||||
|
@ -1372,7 +1372,7 @@ isdn_tty_tiocmget(struct tty_struct *tty, struct file *file)
|
|||
}
|
||||
|
||||
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)
|
||||
{
|
||||
modem_info *info = (modem_info *) tty->driver_data;
|
||||
|
@ -1413,8 +1413,7 @@ isdn_tty_tiocmset(struct tty_struct *tty, struct file *file,
|
|||
}
|
||||
|
||||
static int
|
||||
isdn_tty_ioctl(struct tty_struct *tty, struct file *file,
|
||||
uint cmd, ulong arg)
|
||||
isdn_tty_ioctl(struct tty_struct *tty, uint cmd, ulong arg)
|
||||
{
|
||||
modem_info *info = (modem_info *) tty->driver_data;
|
||||
int retval;
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <linux/mutex.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/ctype.h>
|
||||
#include <linux/dmi.h>
|
||||
|
||||
#define PHUB_STATUS 0x00 /* Status Register offset */
|
||||
#define PHUB_CONTROL 0x04 /* Control Register offset */
|
||||
|
@ -46,6 +47,17 @@
|
|||
#define PCH_MINOR_NOS 1
|
||||
#define CLKCFG_CAN_50MHZ 0x12000000
|
||||
#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 */
|
||||
#define PCI_VENDOR_ID_ROHM 0x10db
|
||||
|
@ -618,6 +630,14 @@ static int __devinit pch_phub_probe(struct pci_dev *pdev,
|
|||
CLKCFG_CAN_50MHZ,
|
||||
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 */
|
||||
iowrite32(0x000affaa, chip->pch_phub_base_address + 0x14);
|
||||
/* set the interrupt delay value */
|
||||
|
|
|
@ -956,7 +956,7 @@ static int sdio_uart_break_ctl(struct tty_struct *tty, int break_state)
|
|||
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;
|
||||
int result;
|
||||
|
@ -970,7 +970,7 @@ static int sdio_uart_tiocmget(struct tty_struct *tty, struct file *file)
|
|||
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)
|
||||
{
|
||||
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
|
||||
*/
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -324,7 +324,7 @@ struct hso_device {
|
|||
/* Prototypes */
|
||||
/*****************************************************************************/
|
||||
/* 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);
|
||||
static void ctrl_callback(struct urb *urb);
|
||||
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 */
|
||||
if (result)
|
||||
hso_serial_tiocmset(tty, NULL, TIOCM_RTS | TIOCM_DTR, 0);
|
||||
hso_serial_tiocmset(tty, TIOCM_RTS | TIOCM_DTR, 0);
|
||||
err_out:
|
||||
mutex_unlock(&serial->parent->mutex);
|
||||
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;
|
||||
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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
int val = 0;
|
||||
|
@ -1730,7 +1730,7 @@ static int hso_serial_tiocmset(struct tty_struct *tty, struct file *file,
|
|||
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)
|
||||
{
|
||||
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_on(pc300dev_t *pc300dev, unsigned char);
|
||||
|
||||
static int pc300_tiocmset(struct tty_struct *, struct file *,
|
||||
unsigned int, unsigned int);
|
||||
static int pc300_tiocmget(struct tty_struct *, struct file *);
|
||||
static int pc300_tiocmset(struct tty_struct *, unsigned int, unsigned int);
|
||||
static int pc300_tiocmget(struct tty_struct *);
|
||||
|
||||
/* functions called by PC300 driver */
|
||||
void cpc_tty_init(pc300dev_t *dev);
|
||||
|
@ -543,7 +542,7 @@ static int cpc_tty_chars_in_buffer(struct tty_struct *tty)
|
|||
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)
|
||||
{
|
||||
st_cpc_tty_area *cpc_tty;
|
||||
|
@ -570,7 +569,7 @@ static int pc300_tiocmset(struct tty_struct *tty, struct file *file,
|
|||
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 char status;
|
||||
|
|
|
@ -455,9 +455,7 @@ do_kdgkb_ioctl(struct kbd_data *kbd, struct kbsentry __user *u_kbs,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
kbd_ioctl(struct kbd_data *kbd, struct file *file,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
int kbd_ioctl(struct kbd_data *kbd, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
void __user *argp;
|
||||
unsigned int ct;
|
||||
|
|
|
@ -36,7 +36,7 @@ void kbd_free(struct kbd_data *);
|
|||
void kbd_ascebc(struct kbd_data *, unsigned char *);
|
||||
|
||||
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.
|
||||
|
|
|
@ -1718,9 +1718,8 @@ tty3270_wait_until_sent(struct tty_struct *tty, int timeout)
|
|||
{
|
||||
}
|
||||
|
||||
static int
|
||||
tty3270_ioctl(struct tty_struct *tty, struct file *file,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
static int tty3270_ioctl(struct tty_struct *tty, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
struct tty3270 *tp;
|
||||
|
||||
|
@ -1729,13 +1728,12 @@ tty3270_ioctl(struct tty_struct *tty, struct file *file,
|
|||
return -ENODEV;
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
return -EIO;
|
||||
return kbd_ioctl(tp->kbd, file, cmd, arg);
|
||||
return kbd_ioctl(tp->kbd, cmd, arg);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_COMPAT
|
||||
static long
|
||||
tty3270_compat_ioctl(struct tty_struct *tty, struct file *file,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
static long tty3270_compat_ioctl(struct tty_struct *tty,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct tty3270 *tp;
|
||||
|
||||
|
@ -1744,7 +1742,7 @@ tty3270_compat_ioctl(struct tty_struct *tty, struct file *file,
|
|||
return -ENODEV;
|
||||
if (tty->flags & (1 << TTY_IO_ERROR))
|
||||
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
|
||||
|
||||
|
|
|
@ -41,6 +41,10 @@ config 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/slicoss/Kconfig"
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
# fix for build system bug...
|
||||
obj-$(CONFIG_STAGING) += staging.o
|
||||
|
||||
obj-y += tty/
|
||||
obj-y += generic_serial/
|
||||
obj-$(CONFIG_ET131X) += et131x/
|
||||
obj-$(CONFIG_SLICOSS) += slicoss/
|
||||
obj-$(CONFIG_VIDEO_GO7007) += go7007/
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
@ -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
|
|
@ -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.
|
||||
*/
|
||||
|
||||
spin_lock_irqsave(&port->driver_lock, flags);
|
||||
spin_lock(&port->driver_lock);
|
||||
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);
|
||||
|
||||
/* close has no way of returning "EINTR", so discard return value */
|
|
@ -133,8 +133,8 @@ static void a2232_hungup(void *ptr);
|
|||
/* END GENERIC_SERIAL PROTOTYPES */
|
||||
|
||||
/* Functions that the TTY driver struct expects */
|
||||
static int a2232_ioctl(struct tty_struct *tty, struct file *file,
|
||||
unsigned int cmd, unsigned long arg);
|
||||
static int a2232_ioctl(struct tty_struct *tty,
|
||||
unsigned int cmd, unsigned long arg);
|
||||
static void a2232_throttle(struct tty_struct *tty);
|
||||
static void a2232_unthrottle(struct tty_struct *tty);
|
||||
static int a2232_open(struct tty_struct * tty, struct file * filp);
|
||||
|
@ -447,7 +447,7 @@ static void a2232_hungup(void *ptr)
|
|||
/*** END OF REAL_DRIVER FUNCTIONS ***/
|
||||
|
||||
/*** 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)
|
||||
{
|
||||
return -ENOIOCTLCMD;
|
|
@ -1873,14 +1873,14 @@ static int sx_break(struct tty_struct *tty, int flag)
|
|||
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;
|
||||
return sx_getsignals(port);
|
||||
}
|
||||
|
||||
static int sx_tiocmset(struct tty_struct *tty, struct file *file,
|
||||
unsigned int set, unsigned int clear)
|
||||
static int sx_tiocmset(struct tty_struct *tty,
|
||||
unsigned int set, unsigned int clear)
|
||||
{
|
||||
struct sx_port *port = tty->driver_data;
|
||||
int rts = -1, dtr = -1;
|
||||
|
@ -1899,7 +1899,7 @@ static int sx_tiocmset(struct tty_struct *tty, struct file *file,
|
|||
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)
|
||||
{
|
||||
int rc;
|
|
@ -75,7 +75,7 @@ static void scc_hungup(void *ptr);
|
|||
static void scc_close(void *ptr);
|
||||
static int scc_chars_in_buffer(void * ptr);
|
||||
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);
|
||||
static void scc_throttle(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)
|
||||
{
|
||||
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
|
||||
* 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)
|
||||
{
|
||||
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 *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)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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,
|
||||
struct usb_serial_port *port,
|
||||
struct file *file, struct usb_serial *serial)
|
||||
struct usb_serial *serial)
|
||||
{
|
||||
|
||||
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,
|
||||
struct usb_serial_port *port,
|
||||
struct file *file,
|
||||
struct usb_serial *serial,
|
||||
unsigned int value)
|
||||
{
|
||||
|
@ -1462,7 +1461,7 @@ static inline int qt_real_tiocmset(struct tty_struct *tty,
|
|||
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 *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->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);
|
||||
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)
|
||||
{
|
||||
|
||||
|
@ -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 - 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);
|
||||
return retval;
|
||||
|
|
|
@ -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.
|
||||
|
|
@ -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/
|
|
@ -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 void epcaparam(struct tty_struct *, struct channel *);
|
||||
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);
|
||||
static int info_ioctl(struct tty_struct *, struct file *,
|
||||
static int info_ioctl(struct tty_struct *,
|
||||
unsigned int, unsigned long);
|
||||
static void pc_set_termios(struct tty_struct *, struct ktermios *);
|
||||
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);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
switch (cmd) {
|
||||
|
@ -1982,7 +1982,7 @@ static int info_ioctl(struct tty_struct *tty, struct file *file,
|
|||
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 board_chan __iomem *bc;
|
||||
|
@ -2015,7 +2015,7 @@ static int pc_tiocmget(struct tty_struct *tty, struct file *file)
|
|||
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)
|
||||
{
|
||||
struct channel *ch = tty->driver_data;
|
||||
|
@ -2057,7 +2057,7 @@ static int pc_tiocmset(struct tty_struct *tty, struct file *file,
|
|||
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)
|
||||
{
|
||||
digiflow_t dflow;
|
||||
|
@ -2074,14 +2074,14 @@ static int pc_ioctl(struct tty_struct *tty, struct file *file,
|
|||
return -EINVAL;
|
||||
switch (cmd) {
|
||||
case TIOCMODG:
|
||||
mflag = pc_tiocmget(tty, file);
|
||||
mflag = pc_tiocmget(tty);
|
||||
if (put_user(mflag, (unsigned long __user *)argp))
|
||||
return -EFAULT;
|
||||
break;
|
||||
case TIOCMODS:
|
||||
if (get_user(mstat, (unsigned __user *)argp))
|
||||
return -EFAULT;
|
||||
return pc_tiocmset(tty, file, mstat, ~mstat);
|
||||
return pc_tiocmset(tty, mstat, ~mstat);
|
||||
case TIOCSDTR:
|
||||
spin_lock_irqsave(&epca_lock, flags);
|
||||
ch->omodem |= ch->m_dtr;
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче