From: James S. <jsi...@us...> - 2001-10-08 04:33:48
|
Update of /cvsroot/linuxconsole/ruby/linux/drivers/serial In directory usw-pr-cvs1:/tmp/cvs-serv25653 Modified Files: serial_21285.c serial_8250.c serial_8250.h serial_8250_pci.c serial_8250_pnp.c serial_amba.c serial_clps711x.c serial_core.c serial_sa1100.c Log Message: More syncing to Russel King's serial work. I really need to get to reworking it so the serial layer behaves more like the parallel port layer. Index: serial_21285.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_21285.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- serial_21285.c 2001/07/29 18:24:12 1.3 +++ serial_21285.c 2001/10/08 04:33:45 1.4 @@ -563,3 +563,8 @@ } #endif /* CONFIG_SERIAL_21285_CONSOLE */ + +EXPORT_NO_SYMBOLS; + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Intel Footbridge (21285) serial driver"); Index: serial_8250.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_8250.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- serial_8250.c 2001/08/23 02:46:17 1.7 +++ serial_8250.c 2001/10/08 04:33:45 1.8 @@ -76,8 +76,9 @@ static struct tty_driver normal, callout; static struct tty_struct *serial8250_table[UART_NR]; static struct termios *serial8250_termios[UART_NR], *serial8250_termios_locked[UART_NR]; -#ifdef SUPPORT_SYSRQ +#ifdef CONFIG_SERIAL_8250_CONSOLE static struct console serial8250_console; +static unsigned int lsr_break_flag; #endif static struct uart_info *IRQ_ports[NR_IRQS]; @@ -692,7 +693,7 @@ * may get masked by ignore_status_mask * or read_status_mask. */ - uart_handle_break(info, &sercons); + uart_handle_break(info, &serial8250_console); } else if (*status & UART_LSR_PE) port->icount.parity++; else if (*status & UART_LSR_FE) @@ -706,7 +707,7 @@ *status &= port->read_status_mask; #ifdef CONFIG_SERIAL_8250_CONSOLE - if (port->line == sercons.index) { + if (port->line == serial8250_console.index) { /* Recover the break flag from console xmit */ *status |= lsr_break_flag; lsr_break_flag = 0; @@ -1651,6 +1652,8 @@ } #endif +#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE) + /* * Wait for transmitter & holding register to empty */ @@ -1880,3 +1883,7 @@ EXPORT_SYMBOL(register_serial); EXPORT_SYMBOL(unregister_serial); + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Generic 8250/16x50 serial driver"); + Index: serial_8250.h =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_8250.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 Index: serial_8250_pci.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_8250_pci.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- serial_8250_pci.c 2001/09/02 23:41:27 1.7 +++ serial_8250_pci.c 2001/10/08 04:33:45 1.8 @@ -1071,3 +1071,9 @@ module_init(serial8250_pci_init); module_exit(serial8250_pci_exit); + +EXPORT_NO_SYMBOLS; + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Generic 8250/16x50 PCI serial probe module"); +MODULE_GENERIC_TABLE(pci, serial_pci_tbl); Index: serial_8250_pnp.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_8250_pnp.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- serial_8250_pnp.c 2001/07/29 18:24:12 1.3 +++ serial_8250_pnp.c 2001/10/08 04:33:45 1.4 @@ -544,3 +544,10 @@ module_init(serial8250_pnp_init); module_exit(serial8250_pnp_exit); + +EXPORT_NO_SYMBOLS; + +MODULE_LICENSE("GPL"); +MODULE_DESCRIPTION("Generic 8250/16x50 PNPBIOS serial probe module"); +MODULE_GENERIC_TABLE(pnp, pnp_dev_table); + Index: serial_amba.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_amba.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- serial_amba.c 2001/08/23 02:46:18 1.6 +++ serial_amba.c 2001/10/08 04:33:45 1.7 @@ -487,7 +487,7 @@ /* first, disable everything */ save_flags(flags); cli(); - old_cr = UART_GET_CR(port) &= ~AMBA_UARTCR_MSIE; + old_cr = UART_GET_CR(port) & ~AMBA_UARTCR_MSIE; if ((port->flags & ASYNC_HARDPPS_CD) || (cflag & CRTSCTS) || !(cflag & CLOCAL)) @@ -496,6 +496,7 @@ UART_PUT_CR(port, 0); /* Set baud rate */ + quot -= 1; UART_PUT_LCRM(port, ((quot & 0xf00) >> 8)); UART_PUT_LCRL(port, (quot & 0xff)); @@ -725,6 +726,7 @@ } static struct console amba_console = { + name: "ttyAM", write: ambauart_console_write, #ifdef used_and_not_const_char_pointer read: ambauart_console_read, @@ -780,3 +782,9 @@ module_init(ambauart_init); module_exit(ambauart_exit); + +EXPORT_NO_SYMBOLS; + +MODULE_AUTHOR("ARM Ltd/Deep Blue Solutions Ltd"); +MODULE_DESCRIPTION("ARM AMBA serial port driver"); +MODULE_LICENSE("GPL"); Index: serial_clps711x.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_clps711x.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- serial_clps711x.c 2001/08/18 22:23:04 1.6 +++ serial_clps711x.c 2001/10/08 04:33:45 1.7 @@ -676,3 +676,9 @@ module_init(clps711xuart_init); module_exit(clps711xuart_exit); + +EXPORT_NO_SYMBOLS; + +MODULE_AUTHOR("Deep Blue Solutions Ltd"); +MODULE_DESCRIPTION("CLPS-711x generic serial driver"); +MODULE_LICENSE("GPL"); Index: serial_core.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_core.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- serial_core.c 2001/08/18 22:23:04 1.12 +++ serial_core.c 2001/10/08 04:33:45 1.13 @@ -273,7 +273,7 @@ ((info->flags & ASYNC_SPD_MASK) == ASYNC_SPD_CUST)) quot = info->state->custom_divisor; else - quot = (info->port->uartclk / (16 * baud)) - 1; + quot = info->port->uartclk / (16 * baud); return quot; } @@ -1689,11 +1689,43 @@ } co->cflag = cflag; - quot = (port->uartclk / (16 * baud)) - 1; + quot = (port->uartclk / (16 * baud)); port->ops->change_speed(port, cflag, 0, quot); return 0; } + +extern void ambauart_console_init(void); +extern void anakin_console_init(void); +extern void clps711xuart_console_init(void); +extern void rs285_console_init(void); +extern void sa1100_rs_console_init(void); +extern void serial8250_console_init(void); + +/* + * Central "initialise all serial consoles" container. Needs to be killed. + */ +void __init uart_console_init(void) +{ +#ifdef CONFIG_SERIAL_AMBA_CONSOLE + ambauart_console_init(); +#endif +#ifdef CONFIG_SERIAL_ANAKIN_CONSOLE + anakin_console_init(); +#endif +#ifdef CONFIG_SERIAL_CLPS711X_CONSOLE + clps711xuart_console_init(); +#endif +#ifdef CONFIG_SERIAL_21285_CONSOLE + rs285_console_init(); +#endif +#ifdef CONFIG_SERIAL_SA1100_CONSOLE + sa1100_rs_console_init(); +#endif +#ifdef CONFIG_SERIAL_8250_CONSOLE + serial8250_console_init(); +#endif +} #endif /* CONFIG_SERIAL_CORE_CONSOLE */ #ifdef CONFIG_PM @@ -2147,3 +2179,6 @@ module_init(uart_init); module_exit(uart_exit); + +MODULE_DESCRIPTION("Serial driver core"); +MODULE_LICENSE("GPL"); Index: serial_sa1100.c =================================================================== RCS file: /cvsroot/linuxconsole/ruby/linux/drivers/serial/serial_sa1100.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- serial_sa1100.c 2001/08/23 02:46:18 1.11 +++ serial_sa1100.c 2001/10/08 04:33:45 1.12 @@ -434,6 +434,7 @@ UART_PUT_UTCR0(port, utcr0); /* set the baud rate */ + quot -= 1; UART_PUT_UTCR1(port, ((quot & 0xf00) >> 8)); UART_PUT_UTCR2(port, (quot & 0xff)); @@ -792,4 +793,10 @@ module_init(sa1100_serial_init); module_exit(sa1100_serial_exit); + +EXPORT_NO_SYMBOLS; + +MODULE_AUTHOR("Deep Blue Solutions Ltd"); +MODULE_DESCRIPTION("SA1100 generic serial port driver"); +MODULE_LICENSE("GPL"); |