* Janusz Krzysztofik <[email protected]> [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 <[email protected]>
> 
> ---
> --- 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);
>                       }

_______________________________________________
e3-hacking mailing list
[email protected]
http://www.earth.li/cgi-bin/mailman/listinfo/e3-hacking

Reply via email to