diff options
Diffstat (limited to 'openwrt/package/linux/kernel-patches/019-drivers_char_serial_c')
-rw-r--r-- | openwrt/package/linux/kernel-patches/019-drivers_char_serial_c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/openwrt/package/linux/kernel-patches/019-drivers_char_serial_c b/openwrt/package/linux/kernel-patches/019-drivers_char_serial_c new file mode 100644 index 0000000000..56d3fe663e --- /dev/null +++ b/openwrt/package/linux/kernel-patches/019-drivers_char_serial_c @@ -0,0 +1,37 @@ +--- linux-mips-cvs/drivers/char/serial.c 2004-12-27 05:13:43.000000000 +0100 ++++ linux-broadcom/drivers/char/serial.c 2005-01-31 13:13:14.000000000 +0100 +@@ -444,6 +444,10 @@ + return inb(info->port+1); + #endif + case SERIAL_IO_MEM: ++#ifdef CONFIG_BCM4310 ++ readb((unsigned long) info->iomem_base + ++ (UART_SCR<<info->iomem_reg_shift)); ++#endif + return readb((unsigned long) info->iomem_base + + (offset<<info->iomem_reg_shift)); + default: +@@ -464,6 +468,9 @@ + case SERIAL_IO_MEM: + writeb(value, (unsigned long) info->iomem_base + + (offset<<info->iomem_reg_shift)); ++#ifdef CONFIG_BCM4704 ++ *((volatile unsigned int *) KSEG1ADDR(0x18000000)); ++#endif + break; + default: + outb(value, info->port+offset); +@@ -5996,6 +6003,13 @@ + * Divisor, bytesize and parity + */ + state = rs_table + co->index; ++ /* ++ * Safe guard: state structure must have been initialized ++ */ ++ if (state->iomem_base == NULL) { ++ printk("!unable to setup serial console!\n"); ++ return -1; ++ } + if (doflow) + state->flags |= ASYNC_CONS_FLOW; + info = &async_sercons; |