1
2
3
4
5
6
7
8
9
10#ifndef _LINUX_SERIAL_H
11#define _LINUX_SERIAL_H
12
13#include <linux/types.h>
14
15#ifdef __KERNEL__
16#include <asm/page.h>
17
18
19
20
21
22struct async_icount {
23 __u32 cts, dsr, rng, dcd, tx, rx;
24 __u32 frame, parity, overrun, brk;
25 __u32 buf_overrun;
26};
27
28
29
30
31#define SERIAL_XMIT_SIZE PAGE_SIZE
32
33#endif
34
35struct serial_struct {
36 int type;
37 int line;
38 unsigned int port;
39 int irq;
40 int flags;
41 int xmit_fifo_size;
42 int custom_divisor;
43 int baud_base;
44 unsigned short close_delay;
45 char io_type;
46 char reserved_char[1];
47 int hub6;
48 unsigned short closing_wait;
49 unsigned short closing_wait2;
50 unsigned char *iomem_base;
51 unsigned short iomem_reg_shift;
52 unsigned int port_high;
53 unsigned long iomap_base;
54};
55
56
57
58
59
60#define ASYNC_CLOSING_WAIT_INF 0
61#define ASYNC_CLOSING_WAIT_NONE 65535
62
63
64
65
66#define PORT_UNKNOWN 0
67#define PORT_8250 1
68#define PORT_16450 2
69#define PORT_16550 3
70#define PORT_16550A 4
71#define PORT_CIRRUS 5
72#define PORT_16650 6
73#define PORT_16650V2 7
74#define PORT_16750 8
75#define PORT_STARTECH 9
76#define PORT_16C950 10
77#define PORT_16654 11
78#define PORT_16850 12
79#define PORT_RSA 13
80#define PORT_MAX 13
81
82#define SERIAL_IO_PORT 0
83#define SERIAL_IO_HUB6 1
84#define SERIAL_IO_MEM 2
85
86struct serial_uart_config {
87 char *name;
88 int dfl_xmit_fifo_size;
89 int flags;
90};
91
92#define UART_CLEAR_FIFO 0x01
93#define UART_USE_FIFO 0x02
94#define UART_STARTECH 0x04
95#define UART_NATSEMI 0x08
96
97
98
99
100
101
102#define ASYNCB_HUP_NOTIFY 0
103
104#define ASYNCB_FOURPORT 1
105#define ASYNCB_SAK 2
106#define ASYNCB_SPLIT_TERMIOS 3
107#define ASYNCB_SPD_HI 4
108#define ASYNCB_SPD_VHI 5
109#define ASYNCB_SKIP_TEST 6
110#define ASYNCB_AUTO_IRQ 7
111
112#define ASYNCB_SESSION_LOCKOUT 8
113#define ASYNCB_PGRP_LOCKOUT 9
114#define ASYNCB_CALLOUT_NOHUP 10
115#define ASYNCB_HARDPPS_CD 11
116#define ASYNCB_SPD_SHI 12
117#define ASYNCB_LOW_LATENCY 13
118#define ASYNCB_BUGGY_UART 14
119
120#define ASYNCB_AUTOPROBE 15
121#define ASYNCB_LAST_USER 15
122
123
124#define ASYNCB_INITIALIZED 31
125#define ASYNCB_SUSPENDED 30
126#define ASYNCB_NORMAL_ACTIVE 29
127#define ASYNCB_BOOT_AUTOCONF 28
128#define ASYNCB_CLOSING 27
129#define ASYNCB_CTS_FLOW 26
130#define ASYNCB_CHECK_CD 25
131#define ASYNCB_SHARE_IRQ 24
132#define ASYNCB_CONS_FLOW 23
133#define ASYNCB_BOOT_ONLYMCA 22
134#define ASYNCB_FIRST_KERNEL 22
135
136#define ASYNC_HUP_NOTIFY (1U << ASYNCB_HUP_NOTIFY)
137#define ASYNC_SUSPENDED (1U << ASYNCB_SUSPENDED)
138#define ASYNC_FOURPORT (1U << ASYNCB_FOURPORT)
139#define ASYNC_SAK (1U << ASYNCB_SAK)
140#define ASYNC_SPLIT_TERMIOS (1U << ASYNCB_SPLIT_TERMIOS)
141#define ASYNC_SPD_HI (1U << ASYNCB_SPD_HI)
142#define ASYNC_SPD_VHI (1U << ASYNCB_SPD_VHI)
143#define ASYNC_SKIP_TEST (1U << ASYNCB_SKIP_TEST)
144#define ASYNC_AUTO_IRQ (1U << ASYNCB_AUTO_IRQ)
145#define ASYNC_SESSION_LOCKOUT (1U << ASYNCB_SESSION_LOCKOUT)
146#define ASYNC_PGRP_LOCKOUT (1U << ASYNCB_PGRP_LOCKOUT)
147#define ASYNC_CALLOUT_NOHUP (1U << ASYNCB_CALLOUT_NOHUP)
148#define ASYNC_HARDPPS_CD (1U << ASYNCB_HARDPPS_CD)
149#define ASYNC_SPD_SHI (1U << ASYNCB_SPD_SHI)
150#define ASYNC_LOW_LATENCY (1U << ASYNCB_LOW_LATENCY)
151#define ASYNC_BUGGY_UART (1U << ASYNCB_BUGGY_UART)
152#define ASYNC_AUTOPROBE (1U << ASYNCB_AUTOPROBE)
153
154#define ASYNC_FLAGS ((1U << ASYNCB_LAST_USER) - 1)
155#define ASYNC_USR_MASK (ASYNC_SPD_HI|ASYNC_SPD_VHI| \
156 ASYNC_CALLOUT_NOHUP|ASYNC_SPD_SHI|ASYNC_LOW_LATENCY)
157#define ASYNC_SPD_CUST (ASYNC_SPD_HI|ASYNC_SPD_VHI)
158#define ASYNC_SPD_WARP (ASYNC_SPD_HI|ASYNC_SPD_SHI)
159#define ASYNC_SPD_MASK (ASYNC_SPD_HI|ASYNC_SPD_VHI|ASYNC_SPD_SHI)
160
161#define ASYNC_INITIALIZED (1U << ASYNCB_INITIALIZED)
162#define ASYNC_NORMAL_ACTIVE (1U << ASYNCB_NORMAL_ACTIVE)
163#define ASYNC_BOOT_AUTOCONF (1U << ASYNCB_BOOT_AUTOCONF)
164#define ASYNC_CLOSING (1U << ASYNCB_CLOSING)
165#define ASYNC_CTS_FLOW (1U << ASYNCB_CTS_FLOW)
166#define ASYNC_CHECK_CD (1U << ASYNCB_CHECK_CD)
167#define ASYNC_SHARE_IRQ (1U << ASYNCB_SHARE_IRQ)
168#define ASYNC_CONS_FLOW (1U << ASYNCB_CONS_FLOW)
169#define ASYNC_BOOT_ONLYMCA (1U << ASYNCB_BOOT_ONLYMCA)
170#define ASYNC_INTERNAL_FLAGS (~((1U << ASYNCB_FIRST_KERNEL) - 1))
171
172
173
174
175struct serial_multiport_struct {
176 int irq;
177 int port1;
178 unsigned char mask1, match1;
179 int port2;
180 unsigned char mask2, match2;
181 int port3;
182 unsigned char mask3, match3;
183 int port4;
184 unsigned char mask4, match4;
185 int port_monitor;
186 int reserved[32];
187};
188
189
190
191
192
193struct serial_icounter_struct {
194 int cts, dsr, rng, dcd;
195 int rx, tx;
196 int frame, overrun, parity, brk;
197 int buf_overrun;
198 int reserved[9];
199};
200
201
202
203
204
205
206
207
208struct serial_rs485 {
209 __u32 flags;
210#define SER_RS485_ENABLED (1 << 0)
211#define SER_RS485_RTS_ON_SEND (1 << 1)
212#define SER_RS485_RTS_AFTER_SEND (1 << 2)
213 __u32 delay_rts_before_send;
214 __u32 padding[6];
215
216};
217
218#ifdef __KERNEL__
219#include <linux/compiler.h>
220
221#endif
222#endif
223