aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-wrt-2.4.30/019-drivers_char_serial_c
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-wrt-2.4.30/019-drivers_char_serial_c')
-rw-r--r--recipes/linux/linux-wrt-2.4.30/019-drivers_char_serial_c37
1 files changed, 37 insertions, 0 deletions
diff --git a/recipes/linux/linux-wrt-2.4.30/019-drivers_char_serial_c b/recipes/linux/linux-wrt-2.4.30/019-drivers_char_serial_c
new file mode 100644
index 0000000000..56d3fe663e
--- /dev/null
+++ b/recipes/linux/linux-wrt-2.4.30/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;