diff options
| author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2004-10-24 07:08:00 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-10-24 07:08:00 -0700 |
| commit | 18bfebee0206ca105d9ef5b7b79aaa7f3a4b8fe1 (patch) | |
| tree | 48516aa4ce46f6e838e20222eac901515e655a81 /include/linux | |
| parent | 378193eb5452e2bf2e99cda40d77b82b5b2c13be (diff) | |
[PATCH] 8250: Let arch provide the list of leagacy ports
This patch adds an optional callback for the 8250 driver to request the
list of legacy port via a function call instead of relying on a #define
of an array.
This finally allows to fix the problem of platforms like ppc and ppc64
for which the same kernel can boot machines with and without a 8250, and
is necessary to properly deal with a new platform coming to ppc64 which
has a 8250 but with different irq numbers.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/8250.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/include/linux/8250.h b/include/linux/8250.h new file mode 100644 index 000000000000..58bf671b1cde --- /dev/null +++ b/include/linux/8250.h @@ -0,0 +1,75 @@ +/* + * linux/drivers/char/8250.h + * + * Driver for 8250/16550-type serial ports + * + * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o. + * + * Copyright (C) 2001 Russell King. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * $Id: 8250.h,v 1.8 2002/07/21 21:32:30 rmk Exp $ + */ + +#include <linux/config.h> + +int serial8250_register_port(struct uart_port *); +void serial8250_unregister_port(int line); +void serial8250_get_irq_map(unsigned int *map); +void serial8250_suspend_port(int line); +void serial8250_resume_port(int line); + +struct old_serial_port { + unsigned int uart; + unsigned int baud_base; + unsigned int port; + unsigned int irq; + unsigned int flags; + unsigned char hub6; + unsigned char io_type; + unsigned char *iomem_base; + unsigned short iomem_reg_shift; +}; + +/* + * This replaces serial_uart_config in include/linux/serial.h + */ +struct serial8250_config { + const char *name; + unsigned short fifo_size; + unsigned short tx_loadsz; + unsigned char fcr; + unsigned int flags; +}; + +#define UART_CAP_FIFO (1 << 8) /* UART has FIFO */ +#define UART_CAP_EFR (1 << 9) /* UART has EFR */ +#define UART_CAP_SLEEP (1 << 10) /* UART has IER sleep */ +#define UART_CAP_AFE (1 << 11) /* MCR-based hw flow control */ + +#undef SERIAL_DEBUG_PCI + +#if defined(__i386__) && (defined(CONFIG_M386) || defined(CONFIG_M486)) +#define SERIAL_INLINE +#endif + +#ifdef SERIAL_INLINE +#define _INLINE_ inline +#else +#define _INLINE_ +#endif + +#define PROBE_RSA (1 << 0) +#define PROBE_ANY (~0) + +#define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) + +#ifdef CONFIG_SERIAL_8250_SHARE_IRQ +#define SERIAL8250_SHARE_IRQS 1 +#else +#define SERIAL8250_SHARE_IRQS 0 +#endif |
