- #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_EVENT_WRITE_WAKEUP 0
- #define ESP_MAGIC 0x53ee
- #define ESP_XMIT_SIZE 4096
- struct esp_struct {
- int magic;
- spinlock_t lock;
- int port;
- int irq;
- int flags; /* defined in tty.h */
- struct tty_struct *tty;
- 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 event;
- unsigned long last_active;
- int line;
- int count; /* # of fd on device */
- int blocked_open; /* # of blocked opens */
- unsigned char *xmit_buf;
- int xmit_head;
- int xmit_tail;
- int xmit_cnt;
- struct work_struct tqueue;
- struct work_struct tqueue_hangup;
- wait_queue_head_t open_wait;
- wait_queue_head_t close_wait;
- wait_queue_head_t delta_msr_wait;
- 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 */