From e6b6133965aaf5fcfd9ba239be72ffa313eff647 Mon Sep 17 00:00:00 2001 From: Alejandro Sierra Date: Mon, 2 Apr 2012 15:28:38 -0500 Subject: ENGR00178584 uart3 pins configuration Uart 3 and NFC pins are shared. Uart 3 enablement is done by passing an early parameter called "uart3" from uboot. Both interfaces (Uart3 and NFC) can NOT coexist on the same configuration at the same time. Signed-off-by: Alejandro Sierra --- arch/arm/mach-mx6/board-mx6q_sabreauto.c | 17 ++++++++++++++--- arch/arm/mach-mx6/board-mx6q_sabreauto.h | 3 +++ arch/arm/mach-mx6/board-mx6solo_sabreauto.h | 3 +++ 3 files changed, 20 insertions(+), 3 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-mx6/board-mx6q_sabreauto.c b/arch/arm/mach-mx6/board-mx6q_sabreauto.c index 7ca00f3b475b..8819b45612a1 100644 --- a/arch/arm/mach-mx6/board-mx6q_sabreauto.c +++ b/arch/arm/mach-mx6/board-mx6q_sabreauto.c @@ -136,6 +136,14 @@ static int mma8451_position = 3; static struct clk *sata_clk; static int mipi_sensor; static int can0_enable; +static int uart3_en; + +static int __init uart3_enable(char *p) +{ + uart3_en = 1; + return 0; +} +early_param("uart3", uart3_enable); enum sd_pad_mode { SD_PAD_MODE_LOW_SPEED, @@ -285,8 +293,8 @@ mx6q_sabreauto_anatop_thermal_data __initconst = { static inline void mx6q_sabreauto_init_uart(void) { - imx6q_add_imx_uart(0, NULL); imx6q_add_imx_uart(1, NULL); + imx6q_add_imx_uart(2, NULL); imx6q_add_imx_uart(3, NULL); } @@ -524,9 +532,11 @@ static int max7310_u43_setup(struct i2c_client *client, int max7310_gpio_value[] = { 0, 0, 0, 0, 0, 0, 0, 0, }; - int n; + if (uart3_en) + max7310_gpio_value[3] = 1; + for (n = 0; n < ARRAY_SIZE(max7310_gpio_value); ++n) { gpio_request(gpio_base + n, "MAX7310 U43 GPIO Expander"); if (max7310_gpio_value[n] < 0) @@ -1416,7 +1426,8 @@ static void __init mx6_board_init(void) imx6q_add_viim(); imx6q_add_imx2_wdt(0, NULL); imx6q_add_dma(); - imx6q_add_gpmi(&mx6q_gpmi_nand_platform_data); + if (!uart3_en) + imx6q_add_gpmi(&mx6q_gpmi_nand_platform_data); imx6q_add_dvfs_core(&sabreauto_dvfscore_data); diff --git a/arch/arm/mach-mx6/board-mx6q_sabreauto.h b/arch/arm/mach-mx6/board-mx6q_sabreauto.h index 21e7be512238..d2a097ec5e17 100644 --- a/arch/arm/mach-mx6/board-mx6q_sabreauto.h +++ b/arch/arm/mach-mx6/board-mx6q_sabreauto.h @@ -187,6 +187,9 @@ static iomux_v3_cfg_t mx6q_sabreauto_pads[] = { MX6Q_PAD_GPIO_8__UART2_RXD, MX6Q_PAD_SD4_DAT6__UART2_CTS, MX6Q_PAD_SD4_DAT5__UART2_RTS, + /* UART 3 */ + MX6Q_PAD_SD4_CLK__UART3_TXD, + MX6Q_PAD_SD4_CMD__UART3_RXD, /*USBs OC pin */ MX6Q_PAD_EIM_WAIT__GPIO_5_0, /*HOST1_OC*/ MX6Q_PAD_SD4_DAT0__GPIO_2_8, /*OTG_OC*/ diff --git a/arch/arm/mach-mx6/board-mx6solo_sabreauto.h b/arch/arm/mach-mx6/board-mx6solo_sabreauto.h index 25a1bdc64911..3829c7ac38e6 100644 --- a/arch/arm/mach-mx6/board-mx6solo_sabreauto.h +++ b/arch/arm/mach-mx6/board-mx6solo_sabreauto.h @@ -188,6 +188,9 @@ static iomux_v3_cfg_t mx6dl_sabreauto_pads[] = { MX6DL_PAD_GPIO_8__UART2_RXD, MX6DL_PAD_SD4_DAT6__UART2_CTS, MX6DL_PAD_SD4_DAT5__UART2_RTS, + /* UART 3 */ + MX6DL_PAD_SD4_CLK__UART3_TXD, + MX6DL_PAD_SD4_CMD__UART3_RXD, /*USBs OC pin */ MX6DL_PAD_EIM_WAIT__GPIO_5_0, /*HOST1_OC*/ MX6DL_PAD_SD4_DAT0__GPIO_2_8, /*OTG_OC*/ -- cgit v1.2.3