• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_MAGIC		0x53ee
75 #define ESP_XMIT_SIZE		4096
76 
77 struct 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	delta_msr_wait;
100 	wait_queue_head_t	break_wait;
101 	struct async_icount	icount;	/* kernel counters for the 4 input interrupts */
102 	struct hayes_esp_config config; /* port configuration */
103 	struct esp_struct	*next_port; /* For the linked list */
104 };
105 
106 struct esp_pio_buffer {
107 	unsigned char data[1024];
108 	struct esp_pio_buffer *next;
109 };
110 
111 #endif /* __KERNEL__ */
112 
113 
114 #endif /* ESP_H */
115 
116