summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTony Lin <tony.lin@freescale.com>2011-11-17 12:51:27 +0800
committerTony Lin <tony.lin@freescale.com>2011-11-17 14:53:02 +0800
commit2e055f32c351f5d7afffb453c6ec26eb297ff354 (patch)
tree910291d39d8689d9ab97b31bc916ece9b9e62257
parent65049d283299602709374319eaab4e1d74200c80 (diff)
ENGR00162335-1 [mx6q_arm2]SD card 3.0 can't be recognized
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>
-rw-r--r--arch/arm/mach-mx6/board-mx6q_arm2.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/arch/arm/mach-mx6/board-mx6q_arm2.c b/arch/arm/mach-mx6/board-mx6q_arm2.c
index 99a183c9d86b..4b73fb2d98aa 100644
--- a/arch/arm/mach-mx6/board-mx6q_arm2.c
+++ b/arch/arm/mach-mx6/board-mx6q_arm2.c
@@ -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) {