include/linux/serial_core.h
changeset 0 aa628870c1d3
child 2 d1f6d8b6f81c
equal deleted inserted replaced
-1:000000000000 0:aa628870c1d3
       
     1 /*
       
     2  *  linux/drivers/char/serial_core.h
       
     3  *
       
     4  *  Copyright (C) 2000 Deep Blue Solutions Ltd.
       
     5  *
       
     6  * This program is free software; you can redistribute it and/or modify
       
     7  * it under the terms of the GNU General Public License as published by
       
     8  * the Free Software Foundation; either version 2 of the License, or
       
     9  * (at your option) any later version.
       
    10  *
       
    11  * This program is distributed in the hope that it will be useful,
       
    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
       
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
       
    14  * GNU General Public License for more details.
       
    15  *
       
    16  * You should have received a copy of the GNU General Public License
       
    17  * along with this program; if not, write to the Free Software
       
    18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
       
    19  */
       
    20 #ifndef LINUX_SERIAL_CORE_H
       
    21 #define LINUX_SERIAL_CORE_H
       
    22 
       
    23 /*
       
    24  * The type definitions.  These are from Ted Ts'o's serial.h
       
    25  */
       
    26 #define PORT_UNKNOWN	0
       
    27 #define PORT_8250	1
       
    28 #define PORT_16450	2
       
    29 #define PORT_16550	3
       
    30 #define PORT_16550A	4
       
    31 #define PORT_CIRRUS	5
       
    32 #define PORT_16650	6
       
    33 #define PORT_16650V2	7
       
    34 #define PORT_16750	8
       
    35 #define PORT_STARTECH	9
       
    36 #define PORT_16C950	10
       
    37 #define PORT_16654	11
       
    38 #define PORT_16850	12
       
    39 #define PORT_RSA	13
       
    40 #define PORT_NS16550A	14
       
    41 #define PORT_XSCALE	15
       
    42 #define PORT_RM9000	16	/* PMC-Sierra RM9xxx internal UART */
       
    43 #define PORT_MAX_8250	16	/* max port ID */
       
    44 
       
    45 /*
       
    46  * ARM specific type numbers.  These are not currently guaranteed
       
    47  * to be implemented, and will change in the future.  These are
       
    48  * separate so any additions to the old serial.c that occur before
       
    49  * we are merged can be easily merged here.
       
    50  */
       
    51 #define PORT_PXA	31
       
    52 #define PORT_AMBA	32
       
    53 #define PORT_CLPS711X	33
       
    54 #define PORT_SA1100	34
       
    55 #define PORT_UART00	35
       
    56 #define PORT_21285	37
       
    57 
       
    58 /* Sparc type numbers.  */
       
    59 #define PORT_SUNZILOG	38
       
    60 #define PORT_SUNSAB	39
       
    61 
       
    62 /* DEC */
       
    63 #define PORT_DZ		46
       
    64 #define PORT_ZS		47
       
    65 
       
    66 /* Parisc type numbers. */
       
    67 #define PORT_MUX	48
       
    68 
       
    69 /* Atmel AT91 / AT32 SoC */
       
    70 #define PORT_ATMEL	49
       
    71 
       
    72 /* Macintosh Zilog type numbers */
       
    73 #define PORT_MAC_ZILOG	50	/* m68k : not yet implemented */
       
    74 #define PORT_PMAC_ZILOG	51
       
    75 
       
    76 /* SH-SCI */
       
    77 #define PORT_SCI	52
       
    78 #define PORT_SCIF	53
       
    79 #define PORT_IRDA	54
       
    80 
       
    81 /* Samsung S3C2410 SoC and derivatives thereof */
       
    82 #define PORT_S3C2410    55
       
    83 
       
    84 /* SGI IP22 aka Indy / Challenge S / Indigo 2 */
       
    85 #define PORT_IP22ZILOG	56
       
    86 
       
    87 /* Sharp LH7a40x -- an ARM9 SoC series */
       
    88 #define PORT_LH7A40X	57
       
    89 
       
    90 /* PPC CPM type number */
       
    91 #define PORT_CPM        58
       
    92 
       
    93 /* MPC52xx type numbers */
       
    94 #define PORT_MPC52xx	59
       
    95 
       
    96 /* IBM icom */
       
    97 #define PORT_ICOM	60
       
    98 
       
    99 /* Samsung S3C2440 SoC */
       
   100 #define PORT_S3C2440	61
       
   101 
       
   102 /* Motorola i.MX SoC */
       
   103 #define PORT_IMX	62
       
   104 
       
   105 /* Marvell MPSC */
       
   106 #define PORT_MPSC	63
       
   107 
       
   108 /* TXX9 type number */
       
   109 #define PORT_TXX9	64
       
   110 
       
   111 /* NEC VR4100 series SIU/DSIU */
       
   112 #define PORT_VR41XX_SIU		65
       
   113 #define PORT_VR41XX_DSIU	66
       
   114 
       
   115 /* Samsung S3C2400 SoC */
       
   116 #define PORT_S3C2400	67
       
   117 
       
   118 /* M32R SIO */
       
   119 #define PORT_M32R_SIO	68
       
   120 
       
   121 /*Digi jsm */
       
   122 #define PORT_JSM        69
       
   123 
       
   124 #define PORT_PNX8XXX	70
       
   125 
       
   126 /* Hilscher netx */
       
   127 #define PORT_NETX	71
       
   128 
       
   129 /* SUN4V Hypervisor Console */
       
   130 #define PORT_SUNHV	72
       
   131 
       
   132 #define PORT_S3C2412	73
       
   133 
       
   134 /* Xilinx uartlite */
       
   135 #define PORT_UARTLITE	74
       
   136 
       
   137 /* Blackfin bf5xx */
       
   138 #define PORT_BFIN	75
       
   139 
       
   140 /* Micrel KS8695 */
       
   141 #define PORT_KS8695	76
       
   142 
       
   143 /* Broadcom SB1250, etc. SOC */
       
   144 #define PORT_SB1250_DUART	77
       
   145 
       
   146 /* Freescale ColdFire */
       
   147 #define PORT_MCF	78
       
   148 
       
   149 /* Blackfin SPORT */
       
   150 #define PORT_BFIN_SPORT		79
       
   151 
       
   152 /* MN10300 on-chip UART numbers */
       
   153 #define PORT_MN10300		80
       
   154 #define PORT_MN10300_CTS	81
       
   155 
       
   156 #define PORT_SC26XX	82
       
   157 
       
   158 /* SH-SCI */
       
   159 #define PORT_SCIFA	83
       
   160 
       
   161 #ifdef __KERNEL__
       
   162 
       
   163 #include <linux/compiler.h>
       
   164 #include <linux/interrupt.h>
       
   165 #include <linux/circ_buf.h>
       
   166 #include <linux/spinlock.h>
       
   167 #include <linux/sched.h>
       
   168 #include <linux/tty.h>
       
   169 #include <linux/mutex.h>
       
   170 #include <linux/sysrq.h>
       
   171 
       
   172 struct uart_port;
       
   173 struct uart_info;
       
   174 struct serial_struct;
       
   175 struct device;
       
   176 
       
   177 /*
       
   178  * This structure describes all the operations that can be
       
   179  * done on the physical hardware.
       
   180  */
       
   181 struct uart_ops {
       
   182 	unsigned int	(*tx_empty)(struct uart_port *);
       
   183 	void		(*set_mctrl)(struct uart_port *, unsigned int mctrl);
       
   184 	unsigned int	(*get_mctrl)(struct uart_port *);
       
   185 	void		(*stop_tx)(struct uart_port *);
       
   186 	void		(*start_tx)(struct uart_port *);
       
   187 	void		(*send_xchar)(struct uart_port *, char ch);
       
   188 	void		(*stop_rx)(struct uart_port *);
       
   189 	void		(*enable_ms)(struct uart_port *);
       
   190 	void		(*break_ctl)(struct uart_port *, int ctl);
       
   191 	int		(*startup)(struct uart_port *);
       
   192 	void		(*shutdown)(struct uart_port *);
       
   193 	void		(*flush_buffer)(struct uart_port *);
       
   194 	void		(*set_termios)(struct uart_port *, struct ktermios *new,
       
   195 				       struct ktermios *old);
       
   196 	void		(*set_ldisc)(struct uart_port *);
       
   197 	void		(*pm)(struct uart_port *, unsigned int state,
       
   198 			      unsigned int oldstate);
       
   199 	int		(*set_wake)(struct uart_port *, unsigned int state);
       
   200 
       
   201 	/*
       
   202 	 * Return a string describing the type of the port
       
   203 	 */
       
   204 	const char *(*type)(struct uart_port *);
       
   205 
       
   206 	/*
       
   207 	 * Release IO and memory resources used by the port.
       
   208 	 * This includes iounmap if necessary.
       
   209 	 */
       
   210 	void		(*release_port)(struct uart_port *);
       
   211 
       
   212 	/*
       
   213 	 * Request IO and memory resources used by the port.
       
   214 	 * This includes iomapping the port if necessary.
       
   215 	 */
       
   216 	int		(*request_port)(struct uart_port *);
       
   217 	void		(*config_port)(struct uart_port *, int);
       
   218 	int		(*verify_port)(struct uart_port *, struct serial_struct *);
       
   219 	int		(*ioctl)(struct uart_port *, unsigned int, unsigned long);
       
   220 #ifdef CONFIG_CONSOLE_POLL
       
   221 	void	(*poll_put_char)(struct uart_port *, unsigned char);
       
   222 	int		(*poll_get_char)(struct uart_port *);
       
   223 #endif
       
   224 };
       
   225 
       
   226 #define UART_CONFIG_TYPE	(1 << 0)
       
   227 #define UART_CONFIG_IRQ		(1 << 1)
       
   228 
       
   229 struct uart_icount {
       
   230 	__u32	cts;
       
   231 	__u32	dsr;
       
   232 	__u32	rng;
       
   233 	__u32	dcd;
       
   234 	__u32	rx;
       
   235 	__u32	tx;
       
   236 	__u32	frame;
       
   237 	__u32	overrun;
       
   238 	__u32	parity;
       
   239 	__u32	brk;
       
   240 	__u32	buf_overrun;
       
   241 };
       
   242 
       
   243 typedef unsigned int __bitwise__ upf_t;
       
   244 
       
   245 struct uart_port {
       
   246 	spinlock_t		lock;			/* port lock */
       
   247 	unsigned long		iobase;			/* in/out[bwl] */
       
   248 	unsigned char __iomem	*membase;		/* read/write[bwl] */
       
   249 	unsigned int		irq;			/* irq number */
       
   250 	unsigned int		uartclk;		/* base uart clock */
       
   251 	unsigned int		fifosize;		/* tx fifo size */
       
   252 	unsigned char		x_char;			/* xon/xoff char */
       
   253 	unsigned char		regshift;		/* reg offset shift */
       
   254 	unsigned char		iotype;			/* io access style */
       
   255 	unsigned char		unused1;
       
   256 
       
   257 #define UPIO_PORT		(0)
       
   258 #define UPIO_HUB6		(1)
       
   259 #define UPIO_MEM		(2)
       
   260 #define UPIO_MEM32		(3)
       
   261 #define UPIO_AU			(4)			/* Au1x00 type IO */
       
   262 #define UPIO_TSI		(5)			/* Tsi108/109 type IO */
       
   263 #define UPIO_DWAPB		(6)			/* DesignWare APB UART */
       
   264 #define UPIO_RM9000		(7)			/* RM9000 type IO */
       
   265 
       
   266 	unsigned int		read_status_mask;	/* driver specific */
       
   267 	unsigned int		ignore_status_mask;	/* driver specific */
       
   268 	struct uart_info	*info;			/* pointer to parent info */
       
   269 	struct uart_icount	icount;			/* statistics */
       
   270 
       
   271 	struct console		*cons;			/* struct console, if any */
       
   272 #ifdef CONFIG_SERIAL_CORE_CONSOLE
       
   273 	unsigned long		sysrq;			/* sysrq timeout */
       
   274 #endif
       
   275 
       
   276 	upf_t			flags;
       
   277 
       
   278 #define UPF_FOURPORT		((__force upf_t) (1 << 1))
       
   279 #define UPF_SAK			((__force upf_t) (1 << 2))
       
   280 #define UPF_SPD_MASK		((__force upf_t) (0x1030))
       
   281 #define UPF_SPD_HI		((__force upf_t) (0x0010))
       
   282 #define UPF_SPD_VHI		((__force upf_t) (0x0020))
       
   283 #define UPF_SPD_CUST		((__force upf_t) (0x0030))
       
   284 #define UPF_SPD_SHI		((__force upf_t) (0x1000))
       
   285 #define UPF_SPD_WARP		((__force upf_t) (0x1010))
       
   286 #define UPF_SKIP_TEST		((__force upf_t) (1 << 6))
       
   287 #define UPF_AUTO_IRQ		((__force upf_t) (1 << 7))
       
   288 #define UPF_HARDPPS_CD		((__force upf_t) (1 << 11))
       
   289 #define UPF_LOW_LATENCY		((__force upf_t) (1 << 13))
       
   290 #define UPF_BUGGY_UART		((__force upf_t) (1 << 14))
       
   291 #define UPF_MAGIC_MULTIPLIER	((__force upf_t) (1 << 16))
       
   292 #define UPF_CONS_FLOW		((__force upf_t) (1 << 23))
       
   293 #define UPF_SHARE_IRQ		((__force upf_t) (1 << 24))
       
   294 #define UPF_BOOT_AUTOCONF	((__force upf_t) (1 << 28))
       
   295 #define UPF_FIXED_PORT		((__force upf_t) (1 << 29))
       
   296 #define UPF_DEAD		((__force upf_t) (1 << 30))
       
   297 #define UPF_IOREMAP		((__force upf_t) (1 << 31))
       
   298 
       
   299 #define UPF_CHANGE_MASK		((__force upf_t) (0x17fff))
       
   300 #define UPF_USR_MASK		((__force upf_t) (UPF_SPD_MASK|UPF_LOW_LATENCY))
       
   301 
       
   302 	unsigned int		mctrl;			/* current modem ctrl settings */
       
   303 	unsigned int		timeout;		/* character-based timeout */
       
   304 	unsigned int		type;			/* port type */
       
   305 	const struct uart_ops	*ops;
       
   306 	unsigned int		custom_divisor;
       
   307 	unsigned int		line;			/* port index */
       
   308 	resource_size_t		mapbase;		/* for ioremap */
       
   309 	struct device		*dev;			/* parent device */
       
   310 	unsigned char		hub6;			/* this should be in the 8250 driver */
       
   311 	unsigned char		suspended;
       
   312 	unsigned char		unused[2];
       
   313 	void			*private_data;		/* generic platform data pointer */
       
   314 };
       
   315 
       
   316 /*
       
   317  * This is the state information which is persistent across opens.
       
   318  * The low level driver must not to touch any elements contained
       
   319  * within.
       
   320  */
       
   321 struct uart_state {
       
   322 	unsigned int		close_delay;		/* msec */
       
   323 	unsigned int		closing_wait;		/* msec */
       
   324 
       
   325 #define USF_CLOSING_WAIT_INF	(0)
       
   326 #define USF_CLOSING_WAIT_NONE	(~0U)
       
   327 
       
   328 	int			count;
       
   329 	int			pm_state;
       
   330 	struct uart_info	*info;
       
   331 	struct uart_port	*port;
       
   332 
       
   333 	struct mutex		mutex;
       
   334 };
       
   335 
       
   336 #define UART_XMIT_SIZE	PAGE_SIZE
       
   337 
       
   338 typedef unsigned int __bitwise__ uif_t;
       
   339 
       
   340 /*
       
   341  * This is the state information which is only valid when the port
       
   342  * is open; it may be freed by the core driver once the device has
       
   343  * been closed.  Either the low level driver or the core can modify
       
   344  * stuff here.
       
   345  */
       
   346 struct uart_info {
       
   347 	struct tty_port		port;
       
   348 	struct circ_buf		xmit;
       
   349 	uif_t			flags;
       
   350 
       
   351 /*
       
   352  * Definitions for info->flags.  These are _private_ to serial_core, and
       
   353  * are specific to this structure.  They may be queried by low level drivers.
       
   354  *
       
   355  * FIXME: use the ASY_ definitions
       
   356  */
       
   357 #define UIF_CHECK_CD		((__force uif_t) (1 << 25))
       
   358 #define UIF_CTS_FLOW		((__force uif_t) (1 << 26))
       
   359 #define UIF_NORMAL_ACTIVE	((__force uif_t) (1 << 29))
       
   360 #define UIF_INITIALIZED		((__force uif_t) (1 << 31))
       
   361 #define UIF_SUSPENDED		((__force uif_t) (1 << 30))
       
   362 
       
   363 	struct tasklet_struct	tlet;
       
   364 	wait_queue_head_t	delta_msr_wait;
       
   365 };
       
   366 
       
   367 /* number of characters left in xmit buffer before we ask for more */
       
   368 #define WAKEUP_CHARS		256
       
   369 
       
   370 struct module;
       
   371 struct tty_driver;
       
   372 
       
   373 struct uart_driver {
       
   374 	struct module		*owner;
       
   375 	const char		*driver_name;
       
   376 	const char		*dev_name;
       
   377 	int			 major;
       
   378 	int			 minor;
       
   379 	int			 nr;
       
   380 	struct console		*cons;
       
   381 
       
   382 	/*
       
   383 	 * these are private; the low level driver should not
       
   384 	 * touch these; they should be initialised to NULL
       
   385 	 */
       
   386 	struct uart_state	*state;
       
   387 	struct tty_driver	*tty_driver;
       
   388 };
       
   389 
       
   390 void uart_write_wakeup(struct uart_port *port);
       
   391 
       
   392 /*
       
   393  * Baud rate helpers.
       
   394  */
       
   395 void uart_update_timeout(struct uart_port *port, unsigned int cflag,
       
   396 			 unsigned int baud);
       
   397 unsigned int uart_get_baud_rate(struct uart_port *port, struct ktermios *termios,
       
   398 				struct ktermios *old, unsigned int min,
       
   399 				unsigned int max);
       
   400 unsigned int uart_get_divisor(struct uart_port *port, unsigned int baud);
       
   401 
       
   402 /*
       
   403  * Console helpers.
       
   404  */
       
   405 struct uart_port *uart_get_console(struct uart_port *ports, int nr,
       
   406 				   struct console *c);
       
   407 void uart_parse_options(char *options, int *baud, int *parity, int *bits,
       
   408 			int *flow);
       
   409 int uart_set_options(struct uart_port *port, struct console *co, int baud,
       
   410 		     int parity, int bits, int flow);
       
   411 struct tty_driver *uart_console_device(struct console *co, int *index);
       
   412 void uart_console_write(struct uart_port *port, const char *s,
       
   413 			unsigned int count,
       
   414 			void (*putchar)(struct uart_port *, int));
       
   415 
       
   416 /*
       
   417  * Port/driver registration/removal
       
   418  */
       
   419 int uart_register_driver(struct uart_driver *uart);
       
   420 void uart_unregister_driver(struct uart_driver *uart);
       
   421 int uart_add_one_port(struct uart_driver *reg, struct uart_port *port);
       
   422 int uart_remove_one_port(struct uart_driver *reg, struct uart_port *port);
       
   423 int uart_match_port(struct uart_port *port1, struct uart_port *port2);
       
   424 
       
   425 /*
       
   426  * Power Management
       
   427  */
       
   428 int uart_suspend_port(struct uart_driver *reg, struct uart_port *port);
       
   429 int uart_resume_port(struct uart_driver *reg, struct uart_port *port);
       
   430 
       
   431 #define uart_circ_empty(circ)		((circ)->head == (circ)->tail)
       
   432 #define uart_circ_clear(circ)		((circ)->head = (circ)->tail = 0)
       
   433 
       
   434 #define uart_circ_chars_pending(circ)	\
       
   435 	(CIRC_CNT((circ)->head, (circ)->tail, UART_XMIT_SIZE))
       
   436 
       
   437 #define uart_circ_chars_free(circ)	\
       
   438 	(CIRC_SPACE((circ)->head, (circ)->tail, UART_XMIT_SIZE))
       
   439 
       
   440 #define uart_tx_stopped(portp)		\
       
   441 	((portp)->info->port.tty->stopped || (portp)->info->port.tty->hw_stopped)
       
   442 
       
   443 /*
       
   444  * The following are helper functions for the low level drivers.
       
   445  */
       
   446 static inline int
       
   447 uart_handle_sysrq_char(struct uart_port *port, unsigned int ch)
       
   448 {
       
   449 #ifdef SUPPORT_SYSRQ
       
   450 	if (port->sysrq) {
       
   451 		if (ch && time_before(jiffies, port->sysrq)) {
       
   452 			handle_sysrq(ch, port->info ? port->info->port.tty : NULL);
       
   453 			port->sysrq = 0;
       
   454 			return 1;
       
   455 		}
       
   456 		port->sysrq = 0;
       
   457 	}
       
   458 #endif
       
   459 	return 0;
       
   460 }
       
   461 #ifndef SUPPORT_SYSRQ
       
   462 #define uart_handle_sysrq_char(port,ch) uart_handle_sysrq_char(port, 0)
       
   463 #endif
       
   464 
       
   465 /*
       
   466  * We do the SysRQ and SAK checking like this...
       
   467  */
       
   468 static inline int uart_handle_break(struct uart_port *port)
       
   469 {
       
   470 	struct uart_info *info = port->info;
       
   471 #ifdef SUPPORT_SYSRQ
       
   472 	if (port->cons && port->cons->index == port->line) {
       
   473 		if (!port->sysrq) {
       
   474 			port->sysrq = jiffies + HZ*5;
       
   475 			return 1;
       
   476 		}
       
   477 		port->sysrq = 0;
       
   478 	}
       
   479 #endif
       
   480 	if (port->flags & UPF_SAK)
       
   481 		do_SAK(info->port.tty);
       
   482 	return 0;
       
   483 }
       
   484 
       
   485 /**
       
   486  *	uart_handle_dcd_change - handle a change of carrier detect state
       
   487  *	@port: uart_port structure for the open port
       
   488  *	@status: new carrier detect status, nonzero if active
       
   489  */
       
   490 static inline void
       
   491 uart_handle_dcd_change(struct uart_port *port, unsigned int status)
       
   492 {
       
   493 	struct uart_info *info = port->info;
       
   494 
       
   495 	port->icount.dcd++;
       
   496 
       
   497 #ifdef CONFIG_HARD_PPS
       
   498 	if ((port->flags & UPF_HARDPPS_CD) && status)
       
   499 		hardpps();
       
   500 #endif
       
   501 
       
   502 	if (info->flags & UIF_CHECK_CD) {
       
   503 		if (status)
       
   504 			wake_up_interruptible(&info->port.open_wait);
       
   505 		else if (info->port.tty)
       
   506 			tty_hangup(info->port.tty);
       
   507 	}
       
   508 }
       
   509 
       
   510 /**
       
   511  *	uart_handle_cts_change - handle a change of clear-to-send state
       
   512  *	@port: uart_port structure for the open port
       
   513  *	@status: new clear to send status, nonzero if active
       
   514  */
       
   515 static inline void
       
   516 uart_handle_cts_change(struct uart_port *port, unsigned int status)
       
   517 {
       
   518 	struct uart_info *info = port->info;
       
   519 	struct tty_struct *tty = info->port.tty;
       
   520 
       
   521 	port->icount.cts++;
       
   522 
       
   523 	if (info->flags & UIF_CTS_FLOW) {
       
   524 		if (tty->hw_stopped) {
       
   525 			if (status) {
       
   526 				tty->hw_stopped = 0;
       
   527 				port->ops->start_tx(port);
       
   528 				uart_write_wakeup(port);
       
   529 			}
       
   530 		} else {
       
   531 			if (!status) {
       
   532 				tty->hw_stopped = 1;
       
   533 				port->ops->stop_tx(port);
       
   534 			}
       
   535 		}
       
   536 	}
       
   537 }
       
   538 
       
   539 #include <linux/tty_flip.h>
       
   540 
       
   541 static inline void
       
   542 uart_insert_char(struct uart_port *port, unsigned int status,
       
   543 		 unsigned int overrun, unsigned int ch, unsigned int flag)
       
   544 {
       
   545 	struct tty_struct *tty = port->info->port.tty;
       
   546 
       
   547 	if ((status & port->ignore_status_mask & ~overrun) == 0)
       
   548 		tty_insert_flip_char(tty, ch, flag);
       
   549 
       
   550 	/*
       
   551 	 * Overrun is special.  Since it's reported immediately,
       
   552 	 * it doesn't affect the current character.
       
   553 	 */
       
   554 	if (status & ~port->ignore_status_mask & overrun)
       
   555 		tty_insert_flip_char(tty, 0, TTY_OVERRUN);
       
   556 }
       
   557 
       
   558 /*
       
   559  *	UART_ENABLE_MS - determine if port should enable modem status irqs
       
   560  */
       
   561 #define UART_ENABLE_MS(port,cflag)	((port)->flags & UPF_HARDPPS_CD || \
       
   562 					 (cflag) & CRTSCTS || \
       
   563 					 !((cflag) & CLOCAL))
       
   564 
       
   565 #endif
       
   566 
       
   567 #endif /* LINUX_SERIAL_CORE_H */