* [PATCH] Fix broken NAND on Amstrad Delta
@ 2009-10-21 0:39 Janusz Krzysztofik
2009-10-21 0:51 ` Tony Lindgren
0 siblings, 1 reply; 6+ messages in thread
From: Janusz Krzysztofik @ 2009-10-21 0:39 UTC (permalink / raw)
To: jkrzyszt, Tony Lindgren; +Cc: e3-hacking, linux-omap@vger.kernel.org
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.
Created and tested against linux-2.6.32-r5.
Thanks,
Janusz
Signed-off-by: Janusz Krzysztofik <jkrzyszt@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);
}
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH] Fix broken NAND on Amstrad Delta 2009-10-21 0:39 [PATCH] Fix broken NAND on Amstrad Delta Janusz Krzysztofik @ 2009-10-21 0:51 ` Tony Lindgren 2009-10-21 10:53 ` Janusz Krzysztofik 2009-10-21 16:27 ` [PATCH] OMAP1: fix redundant UARTs pin muxing that can break other hardware support Janusz Krzysztofik 0 siblings, 2 replies; 6+ messages in thread From: Tony Lindgren @ 2009-10-21 0:51 UTC (permalink / raw) To: Janusz Krzysztofik; +Cc: linux-omap@vger.kernel.org, e3-hacking * Janusz Krzysztofik <jkrzyszt@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@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); > } ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Fix broken NAND on Amstrad Delta 2009-10-21 0:51 ` Tony Lindgren @ 2009-10-21 10:53 ` Janusz Krzysztofik 2009-10-21 15:54 ` Tony Lindgren 2009-10-21 16:27 ` [PATCH] OMAP1: fix redundant UARTs pin muxing that can break other hardware support Janusz Krzysztofik 1 sibling, 1 reply; 6+ messages in thread From: Janusz Krzysztofik @ 2009-10-21 10:53 UTC (permalink / raw) To: Tony Lindgren; +Cc: linux-omap@vger.kernel.org, e3-hacking Wednesday 21 October 2009 02:51:35 Tony Lindgren wrote: > > 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. Tony, I can prepare a patch if you haven't started working on it yet, but please do me a favour and give your comments on another, old but still not answered subject: http://www.spinics.net/lists/linux-omap/msg17692.html I have just checked that temporary solution still applies cleanly on top of 2.6.32-rc5 and corrects the problem of otherwise unusable ASoC over McBSP1 on my Amstrad Delta. Thanks, Janusz ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] Fix broken NAND on Amstrad Delta 2009-10-21 10:53 ` Janusz Krzysztofik @ 2009-10-21 15:54 ` Tony Lindgren 0 siblings, 0 replies; 6+ messages in thread From: Tony Lindgren @ 2009-10-21 15:54 UTC (permalink / raw) To: Janusz Krzysztofik; +Cc: linux-omap@vger.kernel.org, e3-hacking * Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> [091021 03:54]: > Wednesday 21 October 2009 02:51:35 Tony Lindgren wrote: > > > > 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. > > Tony, > I can prepare a patch if you haven't started working on it yet, but please do > me a favour and give your comments on another, old but still not answered > subject: Yes, please do that patch if you can! > http://www.spinics.net/lists/linux-omap/msg17692.html > I have just checked that temporary solution still applies cleanly on top of > 2.6.32-rc5 and corrects the problem of otherwise unusable ASoC over McBSP1 on > my Amstrad Delta. Well let's try to work that in for this coming merge window. How about we rename it to dsp-c55x-common.c? And only do the minimal bits to idle the DSP if called from the board-*.c file? The rest we can move to the old dspgateway branch and rebase that to the current kernel. I think the right way would be to update the dspgateway to use the iommu code, so let's not add similar code except to idle the c55x. Regards, Tony ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] OMAP1: fix redundant UARTs pin muxing that can break other hardware support 2009-10-21 0:51 ` Tony Lindgren 2009-10-21 10:53 ` Janusz Krzysztofik @ 2009-10-21 16:27 ` Janusz Krzysztofik 2009-10-22 18:43 ` Tony Lindgren 1 sibling, 1 reply; 6+ messages in thread From: Janusz Krzysztofik @ 2009-10-21 16:27 UTC (permalink / raw) To: Tony Lindgren; +Cc: e3-hacking, linux-omap@vger.kernel.org Wednesday 21 October 2009 02:51:35 Tony Lindgren napisał(a): > > 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. Here you are (board-*.c changes limited to those OMAP1510 based). Created against linux-2.6.32-rc5. Tested on Amsdtrad Delta only. Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> --- diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-ams-delta.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-ams-delta.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-ams-delta.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-ams-delta.c 2009-10-21 17:41:29.000000000 +0200 @@ -219,6 +219,10 @@ static struct platform_device *ams_delta static void __init ams_delta_init(void) { + /* setup mux pins for uarts, removed from serial.c */ + omap_cfg_reg(UART1_TX); + omap_cfg_reg(UART1_RTS); + iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc)); omap_board_config = ams_delta_config; diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-generic.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-generic.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-generic.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-generic.c 2009-10-21 18:15:37.000000000 +0200 @@ -64,6 +64,14 @@ static void __init omap_generic_init(voi { #ifdef CONFIG_ARCH_OMAP15XX if (cpu_is_omap15xx()) { + /* setup mux pins for uarts, removed from serial.c */ + omap_cfg_reg(UART1_TX); + omap_cfg_reg(UART1_RTS); + omap_cfg_reg(UART2_TX); + omap_cfg_reg(UART2_RTS); + omap_cfg_reg(UART3_TX); + omap_cfg_reg(UART3_RX); + omap_usb_init(&generic1510_usb_config); } #endif diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-innovator.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-innovator.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-innovator.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-innovator.c 2009-10-21 18:16:59.000000000 +0200 @@ -376,6 +376,24 @@ static void __init innovator_init(void) { #ifdef CONFIG_ARCH_OMAP15XX if (cpu_is_omap1510()) { + /* setup mux pins for uarts, removed from serial.c */ + omap_cfg_reg(UART1_TX); + omap_cfg_reg(UART1_RTS); + omap_cfg_reg(UART2_TX); + omap_cfg_reg(UART2_RTS); + omap_cfg_reg(UART3_TX); + omap_cfg_reg(UART3_RX); + + reg = fpga_read(OMAP1510_FPGA_POWER); + reg |= OMAP1510_FPGA_PCR_COM1_EN; + fpga_write(reg, OMAP1510_FPGA_POWER); + udelay(10); + + reg = fpga_read(OMAP1510_FPGA_POWER); + reg |= OMAP1510_FPGA_PCR_COM2_EN; + fpga_write(reg, OMAP1510_FPGA_POWER); + udelay(10); + platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices)); spi_register_board_info(innovator1510_boardinfo, ARRAY_SIZE(innovator1510_boardinfo)); diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmte.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmte.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmte.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmte.c 2009-10-21 17:38:59.000000000 +0200 @@ -342,6 +342,14 @@ static void __init palmte_misc_gpio_setu static void __init omap_palmte_init(void) { + /* setup mux pins for uarts, removed from serial.c */ + omap_cfg_reg(UART1_TX); + omap_cfg_reg(UART1_RTS); + omap_cfg_reg(UART2_TX); + omap_cfg_reg(UART2_RTS); + omap_cfg_reg(UART3_TX); + omap_cfg_reg(UART3_RX); + omap_board_config = palmte_config; omap_board_config_size = ARRAY_SIZE(palmte_config); diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmtt.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmtt.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmtt.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmtt.c 2009-10-21 17:39:19.000000000 +0200 @@ -289,6 +289,14 @@ static void __init omap_mpu_wdt_mode(int static void __init omap_palmtt_init(void) { + /* setup mux pins for uarts, removed from serial.c */ + omap_cfg_reg(UART1_TX); + omap_cfg_reg(UART1_RTS); + omap_cfg_reg(UART2_TX); + omap_cfg_reg(UART2_RTS); + omap_cfg_reg(UART3_TX); + omap_cfg_reg(UART3_RX); + omap_mpu_wdt_mode(0); omap_board_config = palmtt_config; diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmz71.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmz71.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmz71.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmz71.c 2009-10-21 17:39:34.000000000 +0200 @@ -307,6 +307,14 @@ palmz71_gpio_setup(int early) static void __init omap_palmz71_init(void) { + /* setup mux pins for uarts, removed from serial.c */ + omap_cfg_reg(UART1_TX); + omap_cfg_reg(UART1_RTS); + omap_cfg_reg(UART2_TX); + omap_cfg_reg(UART2_RTS); + omap_cfg_reg(UART3_TX); + omap_cfg_reg(UART3_RX); + palmz71_gpio_setup(1); omap_mpu_wdt_mode(0); diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-sx1.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-sx1.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-sx1.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-sx1.c 2009-10-21 17:40:20.000000000 +0200 @@ -377,6 +377,14 @@ static struct omap_board_config_kernel s static void __init omap_sx1_init(void) { + /* setup mux pins for uarts, removed from serial.c */ + omap_cfg_reg(UART1_TX); + omap_cfg_reg(UART1_RTS); + omap_cfg_reg(UART2_TX); + omap_cfg_reg(UART2_RTS); + omap_cfg_reg(UART3_TX); + omap_cfg_reg(UART3_RX); + platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices)); omap_board_config = sx1_config; diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-voiceblue.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-voiceblue.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-voiceblue.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-voiceblue.c 2009-10-21 17:40:57.000000000 +0200 @@ -152,6 +152,14 @@ static void __init voiceblue_init_irq(vo static void __init voiceblue_init(void) { + /* setup mux pins for uarts, removed from serial.c */ + omap_cfg_reg(UART1_TX); + omap_cfg_reg(UART1_RTS); + omap_cfg_reg(UART2_TX); + omap_cfg_reg(UART2_RTS); + omap_cfg_reg(UART3_TX); + omap_cfg_reg(UART3_RX); + /* Watchdog */ gpio_request(0, "Watchdog"); /* smc91x reset */ diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/serial.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/serial.c --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/serial.c 2009-10-16 02:41:50.000000000 +0200 +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/serial.c 2009-10-21 17:53:49.000000000 +0200 @@ -143,16 +143,6 @@ void __init omap_serial_init(void) if (cpu_is_omap15xx()) clk_set_rate(uart1_ck, 12000000); } - if (cpu_is_omap15xx()) { - omap_cfg_reg(UART1_TX); - omap_cfg_reg(UART1_RTS); - if (machine_is_omap_innovator()) { - reg = fpga_read(OMAP1510_FPGA_POWER); - reg |= OMAP1510_FPGA_PCR_COM1_EN; - fpga_write(reg, OMAP1510_FPGA_POWER); - udelay(10); - } - } break; case 1: uart2_ck = clk_get(NULL, "uart2_ck"); @@ -165,16 +155,6 @@ void __init omap_serial_init(void) else clk_set_rate(uart2_ck, 48000000); } - if (cpu_is_omap15xx()) { - omap_cfg_reg(UART2_TX); - omap_cfg_reg(UART2_RTS); - if (machine_is_omap_innovator()) { - reg = fpga_read(OMAP1510_FPGA_POWER); - reg |= OMAP1510_FPGA_PCR_COM2_EN; - fpga_write(reg, OMAP1510_FPGA_POWER); - udelay(10); - } - } break; case 2: uart3_ck = clk_get(NULL, "uart3_ck"); @@ -185,10 +165,6 @@ void __init omap_serial_init(void) if (cpu_is_omap15xx()) clk_set_rate(uart3_ck, 12000000); } - if (cpu_is_omap15xx()) { - omap_cfg_reg(UART3_TX); - omap_cfg_reg(UART3_RX); - } break; } omap_serial_reset(&serial_platform_data[i]); _______________________________________________ e3-hacking mailing list e3-hacking@earth.li http://www.earth.li/cgi-bin/mailman/listinfo/e3-hacking ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] OMAP1: fix redundant UARTs pin muxing that can break other hardware support 2009-10-21 16:27 ` [PATCH] OMAP1: fix redundant UARTs pin muxing that can break other hardware support Janusz Krzysztofik @ 2009-10-22 18:43 ` Tony Lindgren 0 siblings, 0 replies; 6+ messages in thread From: Tony Lindgren @ 2009-10-22 18:43 UTC (permalink / raw) To: Janusz Krzysztofik; +Cc: linux-omap@vger.kernel.org, e3-hacking * Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> [091021 10:11]: > Wednesday 21 October 2009 02:51:35 Tony Lindgren napisał(a): > > > > 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. > > Here you are (board-*.c changes limited to those OMAP1510 based). > Created against linux-2.6.32-rc5. > Tested on Amsdtrad Delta only. Thanks, I'll add it to the omap-fixes series for this -rc cycle with a description on how things broke. BTW, you might want to also take a look at adding support for powering down the uarts with an idle timer for mach-omap1/serial.c the same way as mach-omap2/serial.c does. Otherwise the enabled serial ports keep the system from hitting retention during idle. Regards, Tony > Signed-off-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl> > > --- > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-ams-delta.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-ams-delta.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-ams-delta.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-ams-delta.c 2009-10-21 17:41:29.000000000 +0200 > @@ -219,6 +219,10 @@ static struct platform_device *ams_delta > > static void __init ams_delta_init(void) > { > + /* setup mux pins for uarts, removed from serial.c */ > + omap_cfg_reg(UART1_TX); > + omap_cfg_reg(UART1_RTS); > + > iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc)); > > omap_board_config = ams_delta_config; > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-generic.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-generic.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-generic.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-generic.c 2009-10-21 18:15:37.000000000 +0200 > @@ -64,6 +64,14 @@ static void __init omap_generic_init(voi > { > #ifdef CONFIG_ARCH_OMAP15XX > if (cpu_is_omap15xx()) { > + /* setup mux pins for uarts, removed from serial.c */ > + omap_cfg_reg(UART1_TX); > + omap_cfg_reg(UART1_RTS); > + omap_cfg_reg(UART2_TX); > + omap_cfg_reg(UART2_RTS); > + omap_cfg_reg(UART3_TX); > + omap_cfg_reg(UART3_RX); > + > omap_usb_init(&generic1510_usb_config); > } > #endif > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-innovator.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-innovator.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-innovator.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-innovator.c 2009-10-21 18:16:59.000000000 +0200 > @@ -376,6 +376,24 @@ static void __init innovator_init(void) > { > #ifdef CONFIG_ARCH_OMAP15XX > if (cpu_is_omap1510()) { > + /* setup mux pins for uarts, removed from serial.c */ > + omap_cfg_reg(UART1_TX); > + omap_cfg_reg(UART1_RTS); > + omap_cfg_reg(UART2_TX); > + omap_cfg_reg(UART2_RTS); > + omap_cfg_reg(UART3_TX); > + omap_cfg_reg(UART3_RX); > + > + reg = fpga_read(OMAP1510_FPGA_POWER); > + reg |= OMAP1510_FPGA_PCR_COM1_EN; > + fpga_write(reg, OMAP1510_FPGA_POWER); > + udelay(10); > + > + reg = fpga_read(OMAP1510_FPGA_POWER); > + reg |= OMAP1510_FPGA_PCR_COM2_EN; > + fpga_write(reg, OMAP1510_FPGA_POWER); > + udelay(10); > + > platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices)); > spi_register_board_info(innovator1510_boardinfo, > ARRAY_SIZE(innovator1510_boardinfo)); > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmte.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmte.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmte.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmte.c 2009-10-21 17:38:59.000000000 +0200 > @@ -342,6 +342,14 @@ static void __init palmte_misc_gpio_setu > > static void __init omap_palmte_init(void) > { > + /* setup mux pins for uarts, removed from serial.c */ > + omap_cfg_reg(UART1_TX); > + omap_cfg_reg(UART1_RTS); > + omap_cfg_reg(UART2_TX); > + omap_cfg_reg(UART2_RTS); > + omap_cfg_reg(UART3_TX); > + omap_cfg_reg(UART3_RX); > + > omap_board_config = palmte_config; > omap_board_config_size = ARRAY_SIZE(palmte_config); > > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmtt.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmtt.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmtt.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmtt.c 2009-10-21 17:39:19.000000000 +0200 > @@ -289,6 +289,14 @@ static void __init omap_mpu_wdt_mode(int > > static void __init omap_palmtt_init(void) > { > + /* setup mux pins for uarts, removed from serial.c */ > + omap_cfg_reg(UART1_TX); > + omap_cfg_reg(UART1_RTS); > + omap_cfg_reg(UART2_TX); > + omap_cfg_reg(UART2_RTS); > + omap_cfg_reg(UART3_TX); > + omap_cfg_reg(UART3_RX); > + > omap_mpu_wdt_mode(0); > > omap_board_config = palmtt_config; > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmz71.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmz71.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-palmz71.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-palmz71.c 2009-10-21 17:39:34.000000000 +0200 > @@ -307,6 +307,14 @@ palmz71_gpio_setup(int early) > static void __init > omap_palmz71_init(void) > { > + /* setup mux pins for uarts, removed from serial.c */ > + omap_cfg_reg(UART1_TX); > + omap_cfg_reg(UART1_RTS); > + omap_cfg_reg(UART2_TX); > + omap_cfg_reg(UART2_RTS); > + omap_cfg_reg(UART3_TX); > + omap_cfg_reg(UART3_RX); > + > palmz71_gpio_setup(1); > omap_mpu_wdt_mode(0); > > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-sx1.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-sx1.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-sx1.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-sx1.c 2009-10-21 17:40:20.000000000 +0200 > @@ -377,6 +377,14 @@ static struct omap_board_config_kernel s > > static void __init omap_sx1_init(void) > { > + /* setup mux pins for uarts, removed from serial.c */ > + omap_cfg_reg(UART1_TX); > + omap_cfg_reg(UART1_RTS); > + omap_cfg_reg(UART2_TX); > + omap_cfg_reg(UART2_RTS); > + omap_cfg_reg(UART3_TX); > + omap_cfg_reg(UART3_RX); > + > platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices)); > > omap_board_config = sx1_config; > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-voiceblue.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-voiceblue.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/board-voiceblue.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/board-voiceblue.c 2009-10-21 17:40:57.000000000 +0200 > @@ -152,6 +152,14 @@ static void __init voiceblue_init_irq(vo > > static void __init voiceblue_init(void) > { > + /* setup mux pins for uarts, removed from serial.c */ > + omap_cfg_reg(UART1_TX); > + omap_cfg_reg(UART1_RTS); > + omap_cfg_reg(UART2_TX); > + omap_cfg_reg(UART2_RTS); > + omap_cfg_reg(UART3_TX); > + omap_cfg_reg(UART3_RX); > + > /* Watchdog */ > gpio_request(0, "Watchdog"); > /* smc91x reset */ > diff -upr linux-2.6.32-rc5.orig/arch/arm/mach-omap1/serial.c linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/serial.c > --- linux-2.6.32-rc5.orig/arch/arm/mach-omap1/serial.c 2009-10-16 02:41:50.000000000 +0200 > +++ linux-2.6.32-rc5.fixed/arch/arm/mach-omap1/serial.c 2009-10-21 17:53:49.000000000 +0200 > @@ -143,16 +143,6 @@ void __init omap_serial_init(void) > if (cpu_is_omap15xx()) > clk_set_rate(uart1_ck, 12000000); > } > - if (cpu_is_omap15xx()) { > - omap_cfg_reg(UART1_TX); > - omap_cfg_reg(UART1_RTS); > - if (machine_is_omap_innovator()) { > - reg = fpga_read(OMAP1510_FPGA_POWER); > - reg |= OMAP1510_FPGA_PCR_COM1_EN; > - fpga_write(reg, OMAP1510_FPGA_POWER); > - udelay(10); > - } > - } > break; > case 1: > uart2_ck = clk_get(NULL, "uart2_ck"); > @@ -165,16 +155,6 @@ void __init omap_serial_init(void) > else > clk_set_rate(uart2_ck, 48000000); > } > - if (cpu_is_omap15xx()) { > - omap_cfg_reg(UART2_TX); > - omap_cfg_reg(UART2_RTS); > - if (machine_is_omap_innovator()) { > - reg = fpga_read(OMAP1510_FPGA_POWER); > - reg |= OMAP1510_FPGA_PCR_COM2_EN; > - fpga_write(reg, OMAP1510_FPGA_POWER); > - udelay(10); > - } > - } > break; > case 2: > uart3_ck = clk_get(NULL, "uart3_ck"); > @@ -185,10 +165,6 @@ void __init omap_serial_init(void) > if (cpu_is_omap15xx()) > clk_set_rate(uart3_ck, 12000000); > } > - if (cpu_is_omap15xx()) { > - omap_cfg_reg(UART3_TX); > - omap_cfg_reg(UART3_RX); > - } > break; > } > omap_serial_reset(&serial_platform_data[i]); -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-10-22 18:43 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-10-21 0:39 [PATCH] Fix broken NAND on Amstrad Delta Janusz Krzysztofik 2009-10-21 0:51 ` Tony Lindgren 2009-10-21 10:53 ` Janusz Krzysztofik 2009-10-21 15:54 ` Tony Lindgren 2009-10-21 16:27 ` [PATCH] OMAP1: fix redundant UARTs pin muxing that can break other hardware support Janusz Krzysztofik 2009-10-22 18:43 ` Tony Lindgren
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox