]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00220776 mx6dl_arm2: ECSPI pin config overlaped by epdc
authorRobin Gong <B38343@freescale.com>
Mon, 20 Aug 2012 11:24:28 +0000 (19:24 +0800)
committerLothar Waßmann <LW@KARO-electronics.de>
Fri, 24 May 2013 06:35:16 +0000 (08:35 +0200)
ECSPI pin MX6DL_PAD_EIM_D17__ECSPI1_MISO is configured overlap by epdc
MX6DL_PAD_EIM_D17__GPIO_3_17, so that SPI-NOR flash can't work normally.
From schematic of ARM2 board, epdc and spi share this pin if plug epdc
daughter board. But SPI-NOR is on ARM2 mother board, so it should be config
well firstly. So we make sure SPI-NOR work successfully by default. But if
enable epdc , SPI-NOR on ARM2 will work fail.

Signed-off-by: Robin Gong <B38343@freescale.com>
arch/arm/mach-mx6/board-mx6dl_arm2.h
arch/arm/mach-mx6/board-mx6q_arm2.c

index 6ed3e65e68ee4420952ac0ca63a74e996ec955a3..429febb9813d3d4ea8f42022e3632137fe9e2fbc 100644 (file)
@@ -188,7 +188,9 @@ static iomux_v3_cfg_t mx6dl_arm2_pads[] = {
        MX6DL_PAD_GPIO_6__MLB_MLBSIG,
        MX6DL_PAD_GPIO_2__MLB_MLBDAT,
 
-       /* EPDC pins */
+};
+
+static iomux_v3_cfg_t mx6dl_arm2_epdc_pads[] = {
        MX6DL_PAD_EIM_A17__GPIO_2_21,
        MX6DL_PAD_EIM_D17__GPIO_3_17,
        MX6DL_PAD_EIM_A18__GPIO_2_20,
index 4b0d5c26de67989bed6fb9368d8cfd5078b29f86..29911a232de2f500d928ebff1cec40fe651b69c3 100644 (file)
@@ -1993,12 +1993,14 @@ static void __init mx6_arm2_init(void)
        iomux_v3_cfg_t *spdif_pads = NULL;
        iomux_v3_cfg_t *flexcan_pads = NULL;
        iomux_v3_cfg_t *i2c3_pads = NULL;
+       iomux_v3_cfg_t *epdc_pads = NULL;
 
        int common_pads_cnt;
        int esai_rec_pads_cnt;
        int spdif_pads_cnt;
        int flexcan_pads_cnt;
        int i2c3_pads_cnt;
+       int epdc_pads_cnt;
 
 
        /*
@@ -2024,12 +2026,14 @@ static void __init mx6_arm2_init(void)
                spdif_pads = mx6dl_arm2_spdif_pads;
                flexcan_pads = mx6dl_arm2_can_pads;
                i2c3_pads = mx6dl_arm2_i2c3_pads;
+               epdc_pads = mx6dl_arm2_epdc_pads;
 
                common_pads_cnt = ARRAY_SIZE(mx6dl_arm2_pads);
                esai_rec_pads_cnt = ARRAY_SIZE(mx6dl_arm2_esai_record_pads);
                spdif_pads_cnt =  ARRAY_SIZE(mx6dl_arm2_spdif_pads);
                flexcan_pads_cnt = ARRAY_SIZE(mx6dl_arm2_can_pads);
                i2c3_pads_cnt = ARRAY_SIZE(mx6dl_arm2_i2c3_pads);
+               epdc_pads_cnt = ARRAY_SIZE(mx6dl_arm2_epdc_pads);
        }
 
        BUG_ON(!common_pads);
@@ -2207,6 +2211,8 @@ static void __init mx6_arm2_init(void)
        imx6q_add_mlb150(&mx6_arm2_mlb150_data);
 
        if (cpu_is_mx6dl() && epdc_enabled) {
+               BUG_ON(!epdc_pads);
+               mxc_iomux_v3_setup_multiple_pads(epdc_pads, epdc_pads_cnt);
                imx6dl_add_imx_pxp();
                imx6dl_add_imx_pxp_client();
                mxc_register_device(&max17135_sensor_device, NULL);