[E3-hacking] [PATCH] Fix broken NAND on Amstrad Delta
Tony Lindgren
tony at atomide.com
Wed Oct 21 01:51:35 BST 2009
* Janusz Krzysztofik <jkrzyszt at tis.icnet.pl> [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 at tis.icnet.pl>
>
> ---
> --- 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);
> }
More information about the e3-hacking
mailing list