serial.h
001:
002:
003:
004:
005:
006:
007:
008:
009:
010: #ifndef _LINUX_SERIAL_H
011: #define _LINUX_SERIAL_H
012:
013: #include <linux/types.h>
014:
015:
016: struct serial_struct {
017: int type;
018: int line;
019: unsigned int port;
020: int irq;
021: int flags;
022: int xmit_fifo_size;
023: int custom_divisor;
024: int baud_base;
025: unsigned short close_delay;
026: char io_type;
027: char reserved_char[1];
028: int hub6;
029: unsigned short closing_wait;
030: unsigned short closing_wait2;
031: unsigned char *iomem_base;
032: unsigned short iomem_reg_shift;
033: unsigned int port_high;
034: unsigned long iomap_base;
035: };
036:
037:
038:
039:
040:
041: #define ASYNC_CLOSING_WAIT_INF 0
042: #define ASYNC_CLOSING_WAIT_NONE 65535
043:
044:
045:
046:
047: #define PORT_UNKNOWN 0
048: #define PORT_8250 1
049: #define PORT_16450 2
050: #define PORT_16550 3
051: #define PORT_16550A 4
052: #define PORT_CIRRUS 5
053: #define PORT_16650 6
054: #define PORT_16650V2 7
055: #define PORT_16750 8
056: #define PORT_STARTECH 9
057: #define PORT_16C950 10
058: #define PORT_16654 11
059: #define PORT_16850 12
060: #define PORT_RSA 13
061: #define PORT_MAX 13
062:
063: #define SERIAL_IO_PORT 0
064: #define SERIAL_IO_HUB6 1
065: #define SERIAL_IO_MEM 2
066:
067: struct serial_uart_config {
068: char *name;
069: int dfl_xmit_fifo_size;
070: int flags;
071: };
072:
073: #define UART_CLEAR_FIFO 0x01
074: #define UART_USE_FIFO 0x02
075: #define UART_STARTECH 0x04
076: #define UART_NATSEMI 0x08
077:
078:
079:
080:
081:
082:
083: #define ASYNCB_HUP_NOTIFY 0
084:
085: #define ASYNCB_FOURPORT 1
086: #define ASYNCB_SAK 2
087: #define ASYNCB_SPLIT_TERMIOS 3
088: #define ASYNCB_SPD_HI 4
089: #define ASYNCB_SPD_VHI 5
090: #define ASYNCB_SKIP_TEST 6
091: #define ASYNCB_AUTO_IRQ 7
092:
093: #define ASYNCB_SESSION_LOCKOUT 8
094: #define ASYNCB_PGRP_LOCKOUT 9
095: #define ASYNCB_CALLOUT_NOHUP 10
096: #define ASYNCB_HARDPPS_CD 11
097: #define ASYNCB_SPD_SHI 12
098: #define ASYNCB_LOW_LATENCY 13
099: #define ASYNCB_BUGGY_UART 14
100:
101: #define ASYNCB_AUTOPROBE 15
102: #define ASYNCB_LAST_USER 15
103:
104:
105: #define ASYNCB_INITIALIZED 31
106: #define ASYNCB_SUSPENDED 30
107: #define ASYNCB_NORMAL_ACTIVE 29
108: #define ASYNCB_BOOT_AUTOCONF 28
109: #define ASYNCB_CLOSING 27
110: #define ASYNCB_CTS_FLOW 26
111: #define ASYNCB_CHECK_CD 25
112: #define ASYNCB_SHARE_IRQ 24
113: #define ASYNCB_CONS_FLOW 23
114: #define ASYNCB_BOOT_ONLYMCA 22
115: #define ASYNCB_FIRST_KERNEL 22
116:
117: #define ASYNC_HUP_NOTIFY (1U << ASYNCB_HUP_NOTIFY)
118: #define ASYNC_SUSPENDED (1U << ASYNCB_SUSPENDED)
119: #define ASYNC_FOURPORT (1U << ASYNCB_FOURPORT)
120: #define ASYNC_SAK (1U << ASYNCB_SAK)
121: #define ASYNC_SPLIT_TERMIOS (1U << ASYNCB_SPLIT_TERMIOS)
122: #define ASYNC_SPD_HI (1U << ASYNCB_SPD_HI)
123: #define ASYNC_SPD_VHI (1U << ASYNCB_SPD_VHI)
124: #define ASYNC_SKIP_TEST (1U << ASYNCB_SKIP_TEST)
125: #define ASYNC_AUTO_IRQ (1U << ASYNCB_AUTO_IRQ)
126: #define ASYNC_SESSION_LOCKOUT (1U << ASYNCB_SESSION_LOCKOUT)
127: #define ASYNC_PGRP_LOCKOUT (1U << ASYNCB_PGRP_LOCKOUT)
128: #define ASYNC_CALLOUT_NOHUP (1U << ASYNCB_CALLOUT_NOHUP)
129: #define ASYNC_HARDPPS_CD (1U << ASYNCB_HARDPPS_CD)
130: #define ASYNC_SPD_SHI (1U << ASYNCB_SPD_SHI)
131: #define ASYNC_LOW_LATENCY (1U << ASYNCB_LOW_LATENCY)
132: #define ASYNC_BUGGY_UART (1U << ASYNCB_BUGGY_UART)
133: #define ASYNC_AUTOPROBE (1U << ASYNCB_AUTOPROBE)
134:
135: #define ASYNC_FLAGS ((1U << (ASYNCB_LAST_USER + 1)) - 1)
136: #define ASYNC_USR_MASK (ASYNC_SPD_HI|ASYNC_SPD_VHI| \
137: ASYNC_CALLOUT_NOHUP|ASYNC_SPD_SHI|ASYNC_LOW_LATENCY)
138: #define ASYNC_SPD_CUST (ASYNC_SPD_HI|ASYNC_SPD_VHI)
139: #define ASYNC_SPD_WARP (ASYNC_SPD_HI|ASYNC_SPD_SHI)
140: #define ASYNC_SPD_MASK (ASYNC_SPD_HI|ASYNC_SPD_VHI|ASYNC_SPD_SHI)
141:
142: #define ASYNC_INITIALIZED (1U << ASYNCB_INITIALIZED)
143: #define ASYNC_NORMAL_ACTIVE (1U << ASYNCB_NORMAL_ACTIVE)
144: #define ASYNC_BOOT_AUTOCONF (1U << ASYNCB_BOOT_AUTOCONF)
145: #define ASYNC_CLOSING (1U << ASYNCB_CLOSING)
146: #define ASYNC_CTS_FLOW (1U << ASYNCB_CTS_FLOW)
147: #define ASYNC_CHECK_CD (1U << ASYNCB_CHECK_CD)
148: #define ASYNC_SHARE_IRQ (1U << ASYNCB_SHARE_IRQ)
149: #define ASYNC_CONS_FLOW (1U << ASYNCB_CONS_FLOW)
150: #define ASYNC_BOOT_ONLYMCA (1U << ASYNCB_BOOT_ONLYMCA)
151: #define ASYNC_INTERNAL_FLAGS (~((1U << ASYNCB_FIRST_KERNEL) - 1))
152:
153:
154:
155:
156: struct serial_multiport_struct {
157: int irq;
158: int port1;
159: unsigned char mask1, match1;
160: int port2;
161: unsigned char mask2, match2;
162: int port3;
163: unsigned char mask3, match3;
164: int port4;
165: unsigned char mask4, match4;
166: int port_monitor;
167: int reserved[32];
168: };
169:
170:
171:
172:
173:
174: struct serial_icounter_struct {
175: int cts, dsr, rng, dcd;
176: int rx, tx;
177: int frame, overrun, parity, brk;
178: int buf_overrun;
179: int reserved[9];
180: };
181:
182:
183:
184:
185:
186:
187:
188:
189: struct serial_rs485 {
190: __u32 flags;
191: #define SER_RS485_ENABLED (1 << 0)
192: #define SER_RS485_RTS_ON_SEND (1 << 1)
193:
194:
195: #define SER_RS485_RTS_AFTER_SEND (1 << 2)
196:
197: #define SER_RS485_RX_DURING_TX (1 << 4)
198: __u32 delay_rts_before_send;
199: __u32 delay_rts_after_send;
200: __u32 padding[5];
201:
202: };
203:
204: #endif
205:
© Andrew Scott 2006 -
2025,
All Rights Reserved