summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAlejandro Sierra <b18039@freescale.com>2012-04-02 15:28:38 -0500
committerAlejandro Sierra <b18039@freescale.com>2012-04-02 15:29:17 -0500
commite6b6133965aaf5fcfd9ba239be72ffa313eff647 (patch)
tree7372bce801cd47d87f606ebfe08bf832533a36bd /arch
parenta28b353858a810b4c1689a88dc2d5f3b439608ed (diff)
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 <b18039@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mx6/board-mx6q_sabreauto.c17
-rw-r--r--arch/arm/mach-mx6/board-mx6q_sabreauto.h3
-rw-r--r--arch/arm/mach-mx6/board-mx6solo_sabreauto.h3
3 files changed, 20 insertions, 3 deletions
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*/