1#ifndef HAYESESP_H 2#define HAYESESP_H 3 4struct hayes_esp_config { 5 short flow_on; 6 short flow_off; 7 short rx_trigger; 8 short tx_trigger; 9 short pio_threshold; 10 unsigned char rx_timeout; 11 char dma_channel; 12}; 13 14#ifdef __KERNEL__ 15 16#define ESP_DMA_CHANNEL 0 17#define ESP_RX_TRIGGER 768 18#define ESP_TX_TRIGGER 768 19#define ESP_FLOW_OFF 1016 20#define ESP_FLOW_ON 944 21#define ESP_RX_TMOUT 128 22#define ESP_PIO_THRESHOLD 32 23 24#define ESP_IN_MAJOR 57 /* major dev # for dial in */ 25#define ESP_OUT_MAJOR 58 /* major dev # for dial out */ 26#define ESPC_SCALE 3 27#define UART_ESI_BASE 0x00 28#define UART_ESI_SID 0x01 29#define UART_ESI_RX 0x02 30#define UART_ESI_TX 0x02 31#define UART_ESI_CMD1 0x04 32#define UART_ESI_CMD2 0x05 33#define UART_ESI_STAT1 0x04 34#define UART_ESI_STAT2 0x05 35#define UART_ESI_RWS 0x07 36 37#define UART_IER_DMA_TMOUT 0x80 38#define UART_IER_DMA_TC 0x08 39 40#define ESI_SET_IRQ 0x04 41#define ESI_SET_DMA_TMOUT 0x05 42#define ESI_SET_SRV_MASK 0x06 43#define ESI_SET_ERR_MASK 0x07 44#define ESI_SET_FLOW_CNTL 0x08 45#define ESI_SET_FLOW_CHARS 0x09 46#define ESI_SET_FLOW_LVL 0x0a 47#define ESI_SET_TRIGGER 0x0b 48#define ESI_SET_RX_TIMEOUT 0x0c 49#define ESI_SET_FLOW_TMOUT 0x0d 50#define ESI_WRITE_UART 0x0e 51#define ESI_READ_UART 0x0f 52#define ESI_SET_MODE 0x10 53#define ESI_GET_ERR_STAT 0x12 54#define ESI_GET_UART_STAT 0x13 55#define ESI_GET_RX_AVAIL 0x14 56#define ESI_GET_TX_AVAIL 0x15 57#define ESI_START_DMA_RX 0x16 58#define ESI_START_DMA_TX 0x17 59#define ESI_ISSUE_BREAK 0x1a 60#define ESI_FLUSH_RX 0x1b 61#define ESI_FLUSH_TX 0x1c 62#define ESI_SET_BAUD 0x1d 63#define ESI_SET_ENH_IRQ 0x1f 64#define ESI_SET_REINTR 0x20 65#define ESI_SET_PRESCALAR 0x23 66#define ESI_NO_COMMAND 0xff 67 68#define ESP_STAT_RX_TIMEOUT 0x01 69#define ESP_STAT_DMA_RX 0x02 70#define ESP_STAT_DMA_TX 0x04 71#define ESP_STAT_NEVER_DMA 0x08 72#define ESP_STAT_USE_PIO 0x10 73 74#define ESP_MAGIC 0x53ee 75#define ESP_XMIT_SIZE 4096 76 77struct esp_struct { 78 int magic; 79 struct tty_port port; 80 spinlock_t lock; 81 int io_port; 82 int irq; 83 int read_status_mask; 84 int ignore_status_mask; 85 int timeout; 86 int stat_flags; 87 int custom_divisor; 88 int close_delay; 89 unsigned short closing_wait; 90 unsigned short closing_wait2; 91 int IER; /* Interrupt Enable Register */ 92 int MCR; /* Modem control register */ 93 unsigned long last_active; 94 int line; 95 unsigned char *xmit_buf; 96 int xmit_head; 97 int xmit_tail; 98 int xmit_cnt; 99 wait_queue_head_t break_wait; 100 struct async_icount icount; /* kernel counters for the 4 input interrupts */ 101 struct hayes_esp_config config; /* port configuration */ 102 struct esp_struct *next_port; /* For the linked list */ 103}; 104 105struct esp_pio_buffer { 106 unsigned char data[1024]; 107 struct esp_pio_buffer *next; 108}; 109 110#endif /* __KERNEL__ */ 111 112 113#endif /* ESP_H */ 114 115