Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6
[linux-2.6] / include / linux / hayesesp.h
1 #ifndef HAYESESP_H
2 #define HAYESESP_H
3
4 struct 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_EVENT_WRITE_WAKEUP  0
75 #define ESP_MAGIC               0x53ee
76 #define ESP_XMIT_SIZE           4096
77
78 struct esp_struct {
79         int                     magic;
80         spinlock_t              lock;
81         int                     port;
82         int                     irq;
83         int                     flags;          /* defined in tty.h */
84         struct tty_struct       *tty;
85         int                     read_status_mask;
86         int                     ignore_status_mask;
87         int                     timeout;
88         int                     stat_flags;
89         int                     custom_divisor;
90         int                     close_delay;
91         unsigned short          closing_wait;
92         unsigned short          closing_wait2;
93         int                     IER;    /* Interrupt Enable Register */
94         int                     MCR;    /* Modem control register */
95         unsigned long           event;
96         unsigned long           last_active;
97         int                     line;
98         int                     count;      /* # of fd on device */
99         int                     blocked_open; /* # of blocked opens */
100         unsigned char           *xmit_buf;
101         int                     xmit_head;
102         int                     xmit_tail;
103         int                     xmit_cnt;
104         struct work_struct      tqueue;
105         struct work_struct      tqueue_hangup;
106         wait_queue_head_t       open_wait;
107         wait_queue_head_t       close_wait;
108         wait_queue_head_t       delta_msr_wait;
109         wait_queue_head_t       break_wait;
110         struct async_icount     icount; /* kernel counters for the 4 input interrupts */
111         struct hayes_esp_config config; /* port configuration */
112         struct esp_struct       *next_port; /* For the linked list */
113 };
114
115 struct esp_pio_buffer {
116         unsigned char data[1024];
117         struct esp_pio_buffer *next;
118 };
119
120 #endif /* __KERNEL__ */
121
122
123 #endif /* ESP_H */
124