* Janusz Krzysztofik <jkrzyszt@xxxxxxxxxxxx> [091020 17:42]: > Hi, > I found that with commit 15ac408ee5a509053a765b816e9179515329369f, "OMAP: > UART: drop OMAP_TAG_UART, enable all UARTs, auto-disabled on idle", NAND got > not accessible on Amstrad Delta (E3). That seems to be caused by unnecessary > omap_cfg_reg() calls for UART ports 2 and 3, that were never used on that > machine before and now are initilalized and supposed to be auto-disabled. > > I can suspect that similiar problems may exist for other OMAP1510 based > boards. Furthermore, since mux code is going to be reorganized, the right > solution would probably be to remove those cpu_is_omap1510() specific bits > completely from arch/arm/mach-omap1/serial.c and push them into board specific > files where applicable. However, not being familiar with any OMAP hardware > other that my amsdelta, I provide a patch that solves the problem for that > machine only. I have locked out the bits for UART1 as well as those look not > really required, as far as I can understand > http://focus.ti.com/lit/ds/symlink/omap5910.pdf. Oops. That happened as a nasty side effect when we removed the OMAP_TAG_UART in commit 15ac408ee5a509053a765b816e9179515329369f. Let's just remove the omap_cfg_reg() calls from mach-omap1/serial.c, and add them to the board-*.c files like you suggest above. We should be able to find which ports to mux by looking at the enabled_uarts mask in the commit mentioned above. Regards, Tony > Created and tested against linux-2.6.32-r5. > > Thanks, > Janusz > > Signed-off-by: Janusz Krzysztofik <jkrzyszt@xxxxxxxxxxxx> > > --- > --- linux-2.6.32-rc5/arch/arm/mach-omap1/serial.c.orig 2009-10-20 22:38:38.000000000 +0200 > +++ linux-2.6.32-rc5/arch/arm/mach-omap1/serial.c 2009-10-21 01:26:51.000000000 +0200 > @@ -143,7 +143,7 @@ void __init omap_serial_init(void) > if (cpu_is_omap15xx()) > clk_set_rate(uart1_ck, 12000000); > } > - if (cpu_is_omap15xx()) { > + if (cpu_is_omap15xx() && !(machine_is_ams_delta())) { > omap_cfg_reg(UART1_TX); > omap_cfg_reg(UART1_RTS); > if (machine_is_omap_innovator()) { > @@ -165,7 +165,7 @@ void __init omap_serial_init(void) > else > clk_set_rate(uart2_ck, 48000000); > } > - if (cpu_is_omap15xx()) { > + if (cpu_is_omap15xx() && !(machine_is_ams_delta())) { > omap_cfg_reg(UART2_TX); > omap_cfg_reg(UART2_RTS); > if (machine_is_omap_innovator()) { > @@ -185,7 +185,7 @@ void __init omap_serial_init(void) > if (cpu_is_omap15xx()) > clk_set_rate(uart3_ck, 12000000); > } > - if (cpu_is_omap15xx()) { > + if (cpu_is_omap15xx() && !(machine_is_ams_delta())) { > omap_cfg_reg(UART3_TX); > omap_cfg_reg(UART3_RX); > } -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html