1 /* 2 * include/linux/serial.h 3 * 4 * Copyright (C) 1992 by Theodore Ts'o. 5 * 6 * Redistribution of this file is permitted under the terms of the GNU 7 * Public License (GPL) 8 */ 9 10 #ifndef _LINUX_SERIAL_H 11 #define _LINUX_SERIAL_H 12 13 14 struct serial_struct { 15 int type; 16 int line; 17 unsigned int port; 18 int irq; 19 int flags; 20 int xmit_fifo_size; 21 int custom_divisor; 22 int baud_base; 23 unsigned short close_delay; 24 char io_type; 25 char reserved_char[1]; 26 int hub6; 27 unsigned short closing_wait; /* time to wait before closing */ 28 unsigned short closing_wait2; /* no longer used... */ 29 unsigned char *iomem_base; 30 unsigned short iomem_reg_shift; 31 unsigned int port_high; 32 unsigned long iomap_base; /* cookie passed into ioremap */ 33 }; 34 35 /* 36 * For the close wait times, 0 means wait forever for serial port to 37 * flush its output. 65535 means don't wait at all. 38 */ 39 #define ASYNC_CLOSING_WAIT_INF 0 40 #define ASYNC_CLOSING_WAIT_NONE 65535 41 42 /* 43 * These are the supported serial types. 44 */ 45 #define PORT_UNKNOWN 0 46 #define PORT_8250 1 47 #define PORT_16450 2 48 #define PORT_16550 3 49 #define PORT_16550A 4 50 #define PORT_CIRRUS 5 /* usurped by cyclades.c */ 51 #define PORT_16650 6 52 #define PORT_16650V2 7 53 #define PORT_16750 8 54 #define PORT_STARTECH 9 /* usurped by cyclades.c */ 55 #define PORT_16C950 10 /* Oxford Semiconductor */ 56 #define PORT_16654 11 57 #define PORT_16850 12 58 #define PORT_RSA 13 /* RSA-DV II/S card */ 59 #define PORT_MAX 13 60 61 #define SERIAL_IO_PORT 0 62 #define SERIAL_IO_HUB6 1 63 #define SERIAL_IO_MEM 2 64 65 struct serial_uart_config { 66 char *name; 67 int dfl_xmit_fifo_size; 68 int flags; 69 }; 70 71 #define UART_CLEAR_FIFO 0x01 72 #define UART_USE_FIFO 0x02 73 #define UART_STARTECH 0x04 74 #define UART_NATSEMI 0x08 75 76 /* 77 * Definitions for async_struct (and serial_struct) flags field 78 */ 79 #define ASYNC_HUP_NOTIFY 0x0001 /* Notify getty on hangups and closes 80 on the callout port */ 81 #define ASYNC_FOURPORT 0x0002 /* Set OU1, OUT2 per AST Fourport settings */ 82 #define ASYNC_SAK 0x0004 /* Secure Attention Key (Orange book) */ 83 #define ASYNC_SPLIT_TERMIOS 0x0008 /* Separate termios for dialin/callout */ 84 85 #define ASYNC_SPD_MASK 0x1030 86 #define ASYNC_SPD_HI 0x0010 /* Use 56000 instead of 38400 bps */ 87 88 #define ASYNC_SPD_VHI 0x0020 /* Use 115200 instead of 38400 bps */ 89 #define ASYNC_SPD_CUST 0x0030 /* Use user-specified divisor */ 90 91 #define ASYNC_SKIP_TEST 0x0040 /* Skip UART test during autoconfiguration */ 92 #define ASYNC_AUTO_IRQ 0x0080 /* Do automatic IRQ during autoconfiguration */ 93 #define ASYNC_SESSION_LOCKOUT 0x0100 /* Lock out cua opens based on session */ 94 #define ASYNC_PGRP_LOCKOUT 0x0200 /* Lock out cua opens based on pgrp */ 95 #define ASYNC_CALLOUT_NOHUP 0x0400 /* Don't do hangups for cua device */ 96 97 #define ASYNC_HARDPPS_CD 0x0800 /* Call hardpps when CD goes high */ 98 99 #define ASYNC_SPD_SHI 0x1000 /* Use 230400 instead of 38400 bps */ 100 #define ASYNC_SPD_WARP 0x1010 /* Use 460800 instead of 38400 bps */ 101 102 #define ASYNC_LOW_LATENCY 0x2000 /* Request low latency behaviour */ 103 104 #define ASYNC_BUGGY_UART 0x4000 /* This is a buggy UART, skip some safety 105 * checks. Note: can be dangerous! */ 106 107 #define ASYNC_AUTOPROBE 0x8000 /* Port was autoprobed by PCI or PNP code */ 108 109 #define ASYNC_FLAGS 0x7FFF /* Possible legal async flags */ 110 #define ASYNC_USR_MASK 0x3430 /* Legal flags that non-privileged 111 * users can set or reset */ 112 113 /* Internal flags used only by kernel/chr_drv/serial.c */ 114 #define ASYNC_INITIALIZED 0x80000000 /* Serial port was initialized */ 115 #define ASYNC_NORMAL_ACTIVE 0x20000000 /* Normal device is active */ 116 #define ASYNC_BOOT_AUTOCONF 0x10000000 /* Autoconfigure port on bootup */ 117 #define ASYNC_CLOSING 0x08000000 /* Serial port is closing */ 118 #define ASYNC_CTS_FLOW 0x04000000 /* Do CTS flow control */ 119 #define ASYNC_CHECK_CD 0x02000000 /* i.e., CLOCAL */ 120 #define ASYNC_SHARE_IRQ 0x01000000 /* for multifunction cards 121 --- no longer used */ 122 #define ASYNC_CONS_FLOW 0x00800000 /* flow control for console */ 123 124 #define ASYNC_BOOT_ONLYMCA 0x00400000 /* Probe only if MCA bus */ 125 #define ASYNC_INTERNAL_FLAGS 0xFFC00000 /* Internal flags */ 126 127 /* 128 * Multiport serial configuration structure --- external structure 129 */ 130 struct serial_multiport_struct { 131 int irq; 132 int port1; 133 unsigned char mask1, match1; 134 int port2; 135 unsigned char mask2, match2; 136 int port3; 137 unsigned char mask3, match3; 138 int port4; 139 unsigned char mask4, match4; 140 int port_monitor; 141 int reserved[32]; 142 }; 143 144 /* 145 * Serial input interrupt line counters -- external structure 146 * Four lines can interrupt: CTS, DSR, RI, DCD 147 */ 148 struct serial_icounter_struct { 149 int cts, dsr, rng, dcd; 150 int rx, tx; 151 int frame, overrun, parity, brk; 152 int buf_overrun; 153 int reserved[9]; 154 }; 155 156 157 #endif /* _LINUX_SERIAL_H */ 158