tty: esp: remove broken driver
The ESP driver has been marked broken for years. It's an old ISA device that clearly nobody cares about any more. Remove it Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
1cceefd3a2
commit
f53a2ade0b
6 changed files with 0 additions and 2816 deletions
|
@ -1,154 +0,0 @@
|
||||||
HAYES ESP DRIVER VERSION 2.1
|
|
||||||
|
|
||||||
A big thanks to the people at Hayes, especially Alan Adamson. Their support
|
|
||||||
has enabled me to provide enhancements to the driver.
|
|
||||||
|
|
||||||
Please report your experiences with this driver to me (arobinso@nyx.net). I
|
|
||||||
am looking for both positive and negative feedback.
|
|
||||||
|
|
||||||
*** IMPORTANT CHANGES FOR 2.1 ***
|
|
||||||
Support for PIO mode. Five situations will cause PIO mode to be used:
|
|
||||||
1) A multiport card is detected. PIO mode will always be used. (8 port cards
|
|
||||||
do not support DMA).
|
|
||||||
2) The DMA channel is set to an invalid value (anything other than 1 or 3).
|
|
||||||
3) The DMA buffer/channel could not be allocated. The port will revert to PIO
|
|
||||||
mode until it is reopened.
|
|
||||||
4) Less than a specified number of bytes need to be transferred to/from the
|
|
||||||
FIFOs. PIO mode will be used for that transfer only.
|
|
||||||
5) A port needs to do a DMA transfer and another port is already using the
|
|
||||||
DMA channel. PIO mode will be used for that transfer only.
|
|
||||||
|
|
||||||
Since the Hayes ESP seems to conflict with other cards (notably sound cards)
|
|
||||||
when using DMA, DMA is turned off by default. To use DMA, it must be turned
|
|
||||||
on explicitly, either with the "dma=" option described below or with
|
|
||||||
setserial. A multiport card can be forced into DMA mode by using setserial;
|
|
||||||
however, most multiport cards don't support DMA.
|
|
||||||
|
|
||||||
The latest version of setserial allows the enhanced configuration of the ESP
|
|
||||||
card to be viewed and modified.
|
|
||||||
***
|
|
||||||
|
|
||||||
This package contains the files needed to compile a module to support the Hayes
|
|
||||||
ESP card. The drivers are basically a modified version of the serial drivers.
|
|
||||||
|
|
||||||
Features:
|
|
||||||
|
|
||||||
- Uses the enhanced mode of the ESP card, allowing a wider range of
|
|
||||||
interrupts and features than compatibility mode
|
|
||||||
- Uses DMA and 16 bit PIO mode to transfer data to and from the ESP's FIFOs,
|
|
||||||
reducing CPU load
|
|
||||||
- Supports primary and secondary ports
|
|
||||||
|
|
||||||
|
|
||||||
If the driver is compiled as a module, the IRQs to use can be specified by
|
|
||||||
using the irq= option. The format is:
|
|
||||||
|
|
||||||
irq=[0x100],[0x140],[0x180],[0x200],[0x240],[0x280],[0x300],[0x380]
|
|
||||||
|
|
||||||
The address in brackets is the base address of the card. The IRQ of
|
|
||||||
nonexistent cards can be set to 0. If an IRQ of a card that does exist is set
|
|
||||||
to 0, the driver will attempt to guess at the correct IRQ. For example, to set
|
|
||||||
the IRQ of the card at address 0x300 to 12, the insmod command would be:
|
|
||||||
|
|
||||||
insmod esp irq=0,0,0,0,0,0,12,0
|
|
||||||
|
|
||||||
The custom divisor can be set by using the divisor= option. The format is the
|
|
||||||
same as for the irq= option. Each divisor value is a series of hex digits,
|
|
||||||
with each digit representing the divisor to use for a corresponding port. The
|
|
||||||
divisor value is constructed RIGHT TO LEFT. Specifying a nonzero divisor value
|
|
||||||
will automatically set the spd_cust flag. To calculate the divisor to use for
|
|
||||||
a certain baud rate, divide the port's base baud (generally 921600) by the
|
|
||||||
desired rate. For example, to set the divisor of the primary port at 0x300 to
|
|
||||||
4 and the divisor of the secondary port at 0x308 to 8, the insmod command would
|
|
||||||
be:
|
|
||||||
|
|
||||||
insmod esp divisor=0,0,0,0,0,0,0x84,0
|
|
||||||
|
|
||||||
The dma= option can be used to set the DMA channel. The channel can be either
|
|
||||||
1 or 3. Specifying any other value will force the driver to use PIO mode.
|
|
||||||
For example, to set the DMA channel to 3, the insmod command would be:
|
|
||||||
|
|
||||||
insmod esp dma=3
|
|
||||||
|
|
||||||
The rx_trigger= and tx_trigger= options can be used to set the FIFO trigger
|
|
||||||
levels. They specify when the ESP card should send an interrupt. Larger
|
|
||||||
values will decrease the number of interrupts; however, a value too high may
|
|
||||||
result in data loss. Valid values are 1 through 1023, with 768 being the
|
|
||||||
default. For example, to set the receive trigger level to 512 bytes and the
|
|
||||||
transmit trigger level to 700 bytes, the insmod command would be:
|
|
||||||
|
|
||||||
insmod esp rx_trigger=512 tx_trigger=700
|
|
||||||
|
|
||||||
The flow_off= and flow_on= options can be used to set the hardware flow off/
|
|
||||||
flow on levels. The flow on level must be lower than the flow off level, and
|
|
||||||
the flow off level should be higher than rx_trigger. Valid values are 1
|
|
||||||
through 1023, with 1016 being the default flow off level and 944 being the
|
|
||||||
default flow on level. For example, to set the flow off level to 1000 bytes
|
|
||||||
and the flow on level to 935 bytes, the insmod command would be:
|
|
||||||
|
|
||||||
insmod esp flow_off=1000 flow_on=935
|
|
||||||
|
|
||||||
The rx_timeout= option can be used to set the receive timeout value. This
|
|
||||||
value indicates how long after receiving the last character that the ESP card
|
|
||||||
should wait before signalling an interrupt. Valid values are 0 though 255,
|
|
||||||
with 128 being the default. A value too high will increase latency, and a
|
|
||||||
value too low will cause unnecessary interrupts. For example, to set the
|
|
||||||
receive timeout to 255, the insmod command would be:
|
|
||||||
|
|
||||||
insmod esp rx_timeout=255
|
|
||||||
|
|
||||||
The pio_threshold= option sets the threshold (in number of characters) for
|
|
||||||
using PIO mode instead of DMA mode. For example, if this value is 32,
|
|
||||||
transfers of 32 bytes or less will always use PIO mode.
|
|
||||||
|
|
||||||
insmod esp pio_threshold=32
|
|
||||||
|
|
||||||
Multiple options can be listed on the insmod command line by separating each
|
|
||||||
option with a space. For example:
|
|
||||||
|
|
||||||
insmod esp dma=3 trigger=512
|
|
||||||
|
|
||||||
The esp module can be automatically loaded when needed. To cause this to
|
|
||||||
happen, add the following lines to /etc/modprobe.conf (replacing the last line
|
|
||||||
with options for your configuration):
|
|
||||||
|
|
||||||
alias char-major-57 esp
|
|
||||||
alias char-major-58 esp
|
|
||||||
options esp irq=0,0,0,0,0,0,3,0 divisor=0,0,0,0,0,0,0x4,0
|
|
||||||
|
|
||||||
You may also need to run 'depmod -a'.
|
|
||||||
|
|
||||||
Devices must be created manually. To create the devices, note the output from
|
|
||||||
the module after it is inserted. The output will appear in the location where
|
|
||||||
kernel messages usually appear (usually /var/adm/messages). Create two devices
|
|
||||||
for each 'tty' mentioned, one with major of 57 and the other with major of 58.
|
|
||||||
The minor number should be the same as the tty number reported. The commands
|
|
||||||
would be (replace ? with the tty number):
|
|
||||||
|
|
||||||
mknod /dev/ttyP? c 57 ?
|
|
||||||
mknod /dev/cup? c 58 ?
|
|
||||||
|
|
||||||
For example, if the following line appears:
|
|
||||||
|
|
||||||
Oct 24 18:17:23 techno kernel: ttyP8 at 0x0140 (irq = 3) is an ESP primary port
|
|
||||||
|
|
||||||
...two devices should be created:
|
|
||||||
|
|
||||||
mknod /dev/ttyP8 c 57 8
|
|
||||||
mknod /dev/cup8 c 58 8
|
|
||||||
|
|
||||||
You may need to set the permissions on the devices:
|
|
||||||
|
|
||||||
chmod 666 /dev/ttyP*
|
|
||||||
chmod 666 /dev/cup*
|
|
||||||
|
|
||||||
The ESP module and the serial module should not conflict (they can be used at
|
|
||||||
the same time). After the ESP module has been loaded the ports on the ESP card
|
|
||||||
will no longer be accessible by the serial driver.
|
|
||||||
|
|
||||||
If I/O errors are experienced when accessing the port, check for IRQ and DMA
|
|
||||||
conflicts ('cat /proc/interrupts' and 'cat /proc/dma' for a list of IRQs and
|
|
||||||
DMAs currently in use).
|
|
||||||
|
|
||||||
Enjoy!
|
|
||||||
Andrew J. Robinson <arobinso@nyx.net>
|
|
|
@ -201,19 +201,6 @@ config DIGIEPCA
|
||||||
To compile this driver as a module, choose M here: the
|
To compile this driver as a module, choose M here: the
|
||||||
module will be called epca.
|
module will be called epca.
|
||||||
|
|
||||||
config ESPSERIAL
|
|
||||||
tristate "Hayes ESP serial port support"
|
|
||||||
depends on SERIAL_NONSTANDARD && ISA && ISA_DMA_API && BROKEN
|
|
||||||
help
|
|
||||||
This is a driver which supports Hayes ESP serial ports. Both single
|
|
||||||
port cards and multiport cards are supported. Make sure to read
|
|
||||||
<file:Documentation/hayes-esp.txt>.
|
|
||||||
|
|
||||||
To compile this driver as a module, choose M here: the
|
|
||||||
module will be called esp.
|
|
||||||
|
|
||||||
If unsure, say N.
|
|
||||||
|
|
||||||
config MOXA_INTELLIO
|
config MOXA_INTELLIO
|
||||||
tristate "Moxa Intellio support"
|
tristate "Moxa Intellio support"
|
||||||
depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
|
depends on SERIAL_NONSTANDARD && (ISA || EISA || PCI)
|
||||||
|
|
|
@ -18,7 +18,6 @@ obj-$(CONFIG_CONSOLE_TRANSLATIONS) += consolemap.o consolemap_deftbl.o
|
||||||
obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o
|
obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o
|
||||||
obj-$(CONFIG_AUDIT) += tty_audit.o
|
obj-$(CONFIG_AUDIT) += tty_audit.o
|
||||||
obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
|
obj-$(CONFIG_MAGIC_SYSRQ) += sysrq.o
|
||||||
obj-$(CONFIG_ESPSERIAL) += esp.o
|
|
||||||
obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
|
obj-$(CONFIG_MVME147_SCC) += generic_serial.o vme_scc.o
|
||||||
obj-$(CONFIG_MVME162_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_BVME6000_SCC) += generic_serial.o vme_scc.o
|
||||||
|
|
2533
drivers/char/esp.c
2533
drivers/char/esp.c
File diff suppressed because it is too large
Load diff
|
@ -214,7 +214,6 @@ unifdef-y += futex.h
|
||||||
unifdef-y += fs.h
|
unifdef-y += fs.h
|
||||||
unifdef-y += gameport.h
|
unifdef-y += gameport.h
|
||||||
unifdef-y += generic_serial.h
|
unifdef-y += generic_serial.h
|
||||||
unifdef-y += hayesesp.h
|
|
||||||
unifdef-y += hdlcdrv.h
|
unifdef-y += hdlcdrv.h
|
||||||
unifdef-y += hdlc.h
|
unifdef-y += hdlc.h
|
||||||
unifdef-y += hdreg.h
|
unifdef-y += hdreg.h
|
||||||
|
|
|
@ -1,114 +0,0 @@
|
||||||
#ifndef HAYESESP_H
|
|
||||||
#define HAYESESP_H
|
|
||||||
|
|
||||||
struct hayes_esp_config {
|
|
||||||
short flow_on;
|
|
||||||
short flow_off;
|
|
||||||
short rx_trigger;
|
|
||||||
short tx_trigger;
|
|
||||||
short pio_threshold;
|
|
||||||
unsigned char rx_timeout;
|
|
||||||
char dma_channel;
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef __KERNEL__
|
|
||||||
|
|
||||||
#define ESP_DMA_CHANNEL 0
|
|
||||||
#define ESP_RX_TRIGGER 768
|
|
||||||
#define ESP_TX_TRIGGER 768
|
|
||||||
#define ESP_FLOW_OFF 1016
|
|
||||||
#define ESP_FLOW_ON 944
|
|
||||||
#define ESP_RX_TMOUT 128
|
|
||||||
#define ESP_PIO_THRESHOLD 32
|
|
||||||
|
|
||||||
#define ESP_IN_MAJOR 57 /* major dev # for dial in */
|
|
||||||
#define ESP_OUT_MAJOR 58 /* major dev # for dial out */
|
|
||||||
#define ESPC_SCALE 3
|
|
||||||
#define UART_ESI_BASE 0x00
|
|
||||||
#define UART_ESI_SID 0x01
|
|
||||||
#define UART_ESI_RX 0x02
|
|
||||||
#define UART_ESI_TX 0x02
|
|
||||||
#define UART_ESI_CMD1 0x04
|
|
||||||
#define UART_ESI_CMD2 0x05
|
|
||||||
#define UART_ESI_STAT1 0x04
|
|
||||||
#define UART_ESI_STAT2 0x05
|
|
||||||
#define UART_ESI_RWS 0x07
|
|
||||||
|
|
||||||
#define UART_IER_DMA_TMOUT 0x80
|
|
||||||
#define UART_IER_DMA_TC 0x08
|
|
||||||
|
|
||||||
#define ESI_SET_IRQ 0x04
|
|
||||||
#define ESI_SET_DMA_TMOUT 0x05
|
|
||||||
#define ESI_SET_SRV_MASK 0x06
|
|
||||||
#define ESI_SET_ERR_MASK 0x07
|
|
||||||
#define ESI_SET_FLOW_CNTL 0x08
|
|
||||||
#define ESI_SET_FLOW_CHARS 0x09
|
|
||||||
#define ESI_SET_FLOW_LVL 0x0a
|
|
||||||
#define ESI_SET_TRIGGER 0x0b
|
|
||||||
#define ESI_SET_RX_TIMEOUT 0x0c
|
|
||||||
#define ESI_SET_FLOW_TMOUT 0x0d
|
|
||||||
#define ESI_WRITE_UART 0x0e
|
|
||||||
#define ESI_READ_UART 0x0f
|
|
||||||
#define ESI_SET_MODE 0x10
|
|
||||||
#define ESI_GET_ERR_STAT 0x12
|
|
||||||
#define ESI_GET_UART_STAT 0x13
|
|
||||||
#define ESI_GET_RX_AVAIL 0x14
|
|
||||||
#define ESI_GET_TX_AVAIL 0x15
|
|
||||||
#define ESI_START_DMA_RX 0x16
|
|
||||||
#define ESI_START_DMA_TX 0x17
|
|
||||||
#define ESI_ISSUE_BREAK 0x1a
|
|
||||||
#define ESI_FLUSH_RX 0x1b
|
|
||||||
#define ESI_FLUSH_TX 0x1c
|
|
||||||
#define ESI_SET_BAUD 0x1d
|
|
||||||
#define ESI_SET_ENH_IRQ 0x1f
|
|
||||||
#define ESI_SET_REINTR 0x20
|
|
||||||
#define ESI_SET_PRESCALAR 0x23
|
|
||||||
#define ESI_NO_COMMAND 0xff
|
|
||||||
|
|
||||||
#define ESP_STAT_RX_TIMEOUT 0x01
|
|
||||||
#define ESP_STAT_DMA_RX 0x02
|
|
||||||
#define ESP_STAT_DMA_TX 0x04
|
|
||||||
#define ESP_STAT_NEVER_DMA 0x08
|
|
||||||
#define ESP_STAT_USE_PIO 0x10
|
|
||||||
|
|
||||||
#define ESP_MAGIC 0x53ee
|
|
||||||
#define ESP_XMIT_SIZE 4096
|
|
||||||
|
|
||||||
struct esp_struct {
|
|
||||||
int magic;
|
|
||||||
struct tty_port port;
|
|
||||||
spinlock_t lock;
|
|
||||||
int io_port;
|
|
||||||
int irq;
|
|
||||||
int read_status_mask;
|
|
||||||
int ignore_status_mask;
|
|
||||||
int timeout;
|
|
||||||
int stat_flags;
|
|
||||||
int custom_divisor;
|
|
||||||
int close_delay;
|
|
||||||
unsigned short closing_wait;
|
|
||||||
unsigned short closing_wait2;
|
|
||||||
int IER; /* Interrupt Enable Register */
|
|
||||||
int MCR; /* Modem control register */
|
|
||||||
unsigned long last_active;
|
|
||||||
int line;
|
|
||||||
unsigned char *xmit_buf;
|
|
||||||
int xmit_head;
|
|
||||||
int xmit_tail;
|
|
||||||
int xmit_cnt;
|
|
||||||
wait_queue_head_t break_wait;
|
|
||||||
struct async_icount icount; /* kernel counters for the 4 input interrupts */
|
|
||||||
struct hayes_esp_config config; /* port configuration */
|
|
||||||
struct esp_struct *next_port; /* For the linked list */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct esp_pio_buffer {
|
|
||||||
unsigned char data[1024];
|
|
||||||
struct esp_pio_buffer *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* ESP_H */
|
|
||||||
|
|
Loading…
Reference in a new issue