#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 */