]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
ENGR00162335-1 [mx6q_arm2]SD card 3.0 can't be recognized
authorTony Lin <tony.lin@freescale.com>
Thu, 17 Nov 2011 04:51:27 +0000 (12:51 +0800)
committerOliver Wendt <ow@karo-electronics.de>
Mon, 30 Sep 2013 12:10:04 +0000 (14:10 +0200)
fix pin conflict between sd vselect and canbus enable pin.
add 'canbus' to the cmdline will enable canbus driver.
if canbus driver is enabled, sd 3.0 card will not work

Signed-off-by: Tony Lin <tony.lin@freescale.com>
arch/arm/mach-mx6/board-mx6q_arm2.c

index 99a183c9d86b4775f1b470c4ae457b26d4cf5f3a..4b73fb2d98aa942ffe2f0734d2f35307fad05d2c 100644 (file)
@@ -108,6 +108,7 @@ void __init early_console_setup(unsigned long base, struct clk *clk);
 static struct clk *sata_clk;
 static int esai_record;
 static int spdif_en;
+static int flexcan_en;
 static int mipi_sensor;
 
 extern struct regulator *(*get_cpu_regulator)(void);
@@ -1349,6 +1350,14 @@ static int __init early_enable_spdif(char *p)
 
 early_param("spdif", early_enable_spdif);
 
+static int __init early_enable_can(char *p)
+{
+       flexcan_en = 1;
+       return 0;
+}
+
+early_param("flexcan", early_enable_can);
+
 static int spdif_clk_set_rate(struct clk *clk, unsigned long rate)
 {
        unsigned long rate_actual;
@@ -1404,8 +1413,9 @@ static void __init mx6_board_init(void)
        } else {
                mxc_iomux_v3_setup_multiple_pads(mx6q_arm2_i2c3_pads,
                        ARRAY_SIZE(mx6q_arm2_i2c3_pads));
-               mxc_iomux_v3_setup_multiple_pads(mx6q_arm2_can_pads,
-                       ARRAY_SIZE(mx6q_arm2_can_pads));
+               if (flexcan_en)
+                       mxc_iomux_v3_setup_multiple_pads(mx6q_arm2_can_pads,
+                               ARRAY_SIZE(mx6q_arm2_can_pads));
        }
 
        if (mipi_sensor)
@@ -1504,7 +1514,7 @@ static void __init mx6_board_init(void)
                imx6q_add_spdif(&mxc_spdif_data);
                imx6q_add_spdif_dai();
                imx6q_add_spdif_audio_device();
-       } else {
+       } else if (flexcan_en) {
                ret = gpio_request_array(mx6q_flexcan_gpios,
                                ARRAY_SIZE(mx6q_flexcan_gpios));
                if (ret) {