--- 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<iomem_reg_shift)); +#endif return readb((unsigned long) info->iomem_base + (offset<iomem_reg_shift)); default: @@ -464,6 +468,9 @@ case SERIAL_IO_MEM: writeb(value, (unsigned long) info->iomem_base + (offset<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;