提交 c33da3a8 编写于 作者: J Janusz Krzysztofik 提交者: Tony Lindgren

omap1: Fix redundant UARTs pin muxing that can break other hardware support

Commit 15ac408e removed enabled_uart
and OMAP_TAG_UART. This works for mach-omap2, but causes issues on
mach-omap1 for some boards as the mach-omap1 serial.c was muxing
pins based on the enabled_uart flag for 15xx.

Fix this by muxing pins in board-*.c files for the 15xx boards for
the uart ports that had enabled_uart flag set before the commit
above.

Tested on Amsdtrad Delta only.

Note that in the future we should add support for powering down
the uarts with a timer like mach-omap2/serial.c does. Otherwise
the enabled uarts will be blocking retention-while-idle.
Signed-off-by: NJanusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Signed-off-by: NTony Lindgren <tony@atomide.com>
上级 dcc730dc
...@@ -219,6 +219,10 @@ static struct platform_device *ams_delta_devices[] __initdata = { ...@@ -219,6 +219,10 @@ static struct platform_device *ams_delta_devices[] __initdata = {
static void __init ams_delta_init(void) static void __init ams_delta_init(void)
{ {
/* mux pins for uarts */
omap_cfg_reg(UART1_TX);
omap_cfg_reg(UART1_RTS);
iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc)); iotable_init(ams_delta_io_desc, ARRAY_SIZE(ams_delta_io_desc));
omap_board_config = ams_delta_config; omap_board_config = ams_delta_config;
......
...@@ -64,6 +64,14 @@ static void __init omap_generic_init(void) ...@@ -64,6 +64,14 @@ static void __init omap_generic_init(void)
{ {
#ifdef CONFIG_ARCH_OMAP15XX #ifdef CONFIG_ARCH_OMAP15XX
if (cpu_is_omap15xx()) { if (cpu_is_omap15xx()) {
/* mux pins for uarts */
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); omap_usb_init(&generic1510_usb_config);
} }
#endif #endif
......
...@@ -376,6 +376,26 @@ static void __init innovator_init(void) ...@@ -376,6 +376,26 @@ static void __init innovator_init(void)
{ {
#ifdef CONFIG_ARCH_OMAP15XX #ifdef CONFIG_ARCH_OMAP15XX
if (cpu_is_omap1510()) { if (cpu_is_omap1510()) {
unsigned char reg;
/* mux pins for uarts */
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)); platform_add_devices(innovator1510_devices, ARRAY_SIZE(innovator1510_devices));
spi_register_board_info(innovator1510_boardinfo, spi_register_board_info(innovator1510_boardinfo,
ARRAY_SIZE(innovator1510_boardinfo)); ARRAY_SIZE(innovator1510_boardinfo));
......
...@@ -342,6 +342,14 @@ static void __init palmte_misc_gpio_setup(void) ...@@ -342,6 +342,14 @@ static void __init palmte_misc_gpio_setup(void)
static void __init omap_palmte_init(void) static void __init omap_palmte_init(void)
{ {
/* mux pins for uarts */
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 = palmte_config;
omap_board_config_size = ARRAY_SIZE(palmte_config); omap_board_config_size = ARRAY_SIZE(palmte_config);
......
...@@ -289,6 +289,14 @@ static void __init omap_mpu_wdt_mode(int mode) { ...@@ -289,6 +289,14 @@ static void __init omap_mpu_wdt_mode(int mode) {
static void __init omap_palmtt_init(void) static void __init omap_palmtt_init(void)
{ {
/* mux pins for uarts */
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_mpu_wdt_mode(0);
omap_board_config = palmtt_config; omap_board_config = palmtt_config;
......
...@@ -307,6 +307,14 @@ palmz71_gpio_setup(int early) ...@@ -307,6 +307,14 @@ palmz71_gpio_setup(int early)
static void __init static void __init
omap_palmz71_init(void) omap_palmz71_init(void)
{ {
/* mux pins for uarts */
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); palmz71_gpio_setup(1);
omap_mpu_wdt_mode(0); omap_mpu_wdt_mode(0);
......
...@@ -377,6 +377,14 @@ static struct omap_board_config_kernel sx1_config[] __initdata = { ...@@ -377,6 +377,14 @@ static struct omap_board_config_kernel sx1_config[] __initdata = {
static void __init omap_sx1_init(void) static void __init omap_sx1_init(void)
{ {
/* mux pins for uarts */
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)); platform_add_devices(sx1_devices, ARRAY_SIZE(sx1_devices));
omap_board_config = sx1_config; omap_board_config = sx1_config;
......
...@@ -152,6 +152,14 @@ static void __init voiceblue_init_irq(void) ...@@ -152,6 +152,14 @@ static void __init voiceblue_init_irq(void)
static void __init voiceblue_init(void) static void __init voiceblue_init(void)
{ {
/* mux pins for uarts */
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 */ /* Watchdog */
gpio_request(0, "Watchdog"); gpio_request(0, "Watchdog");
/* smc91x reset */ /* smc91x reset */
......
...@@ -131,8 +131,6 @@ void __init omap_serial_init(void) ...@@ -131,8 +131,6 @@ void __init omap_serial_init(void)
} }
for (i = 0; i < OMAP_MAX_NR_PORTS; i++) { for (i = 0; i < OMAP_MAX_NR_PORTS; i++) {
unsigned char reg;
switch (i) { switch (i) {
case 0: case 0:
uart1_ck = clk_get(NULL, "uart1_ck"); uart1_ck = clk_get(NULL, "uart1_ck");
...@@ -143,16 +141,6 @@ void __init omap_serial_init(void) ...@@ -143,16 +141,6 @@ void __init omap_serial_init(void)
if (cpu_is_omap15xx()) if (cpu_is_omap15xx())
clk_set_rate(uart1_ck, 12000000); 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; break;
case 1: case 1:
uart2_ck = clk_get(NULL, "uart2_ck"); uart2_ck = clk_get(NULL, "uart2_ck");
...@@ -165,16 +153,6 @@ void __init omap_serial_init(void) ...@@ -165,16 +153,6 @@ void __init omap_serial_init(void)
else else
clk_set_rate(uart2_ck, 48000000); 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; break;
case 2: case 2:
uart3_ck = clk_get(NULL, "uart3_ck"); uart3_ck = clk_get(NULL, "uart3_ck");
...@@ -185,10 +163,6 @@ void __init omap_serial_init(void) ...@@ -185,10 +163,6 @@ void __init omap_serial_init(void)
if (cpu_is_omap15xx()) if (cpu_is_omap15xx())
clk_set_rate(uart3_ck, 12000000); clk_set_rate(uart3_ck, 12000000);
} }
if (cpu_is_omap15xx()) {
omap_cfg_reg(UART3_TX);
omap_cfg_reg(UART3_RX);
}
break; break;
} }
omap_serial_reset(&serial_platform_data[i]); omap_serial_reset(&serial_platform_data[i]);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册