summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2014-07-11 14:32:35 +0200
committerStefan Agner <stefan.agner@toradex.com>2014-07-11 14:46:27 +0200
commitce65db1a5727dbf6d0dafa44e77fe51980d1653f (patch)
treef6e34c3381ebec71c6448041bbd6e6afd6d9e950
parentb860b39f928ecc91985b6b8d4bc380f9eed978f9 (diff)
colibri_vf: enable CAN support
This enables CAN support for Colibri VFxx if CONFIG_CAN_FLEXCAN is seleced. There is also an example how to make use of the transceiver switch to enable the transceiver on demand (e.g. using a GPIO).
-rw-r--r--arch/arm/mach-mvf/board-colibri_vf.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/arch/arm/mach-mvf/board-colibri_vf.c b/arch/arm/mach-mvf/board-colibri_vf.c
index 83d0fe269513..8e5a84119dbc 100644
--- a/arch/arm/mach-mvf/board-colibri_vf.c
+++ b/arch/arm/mach-mvf/board-colibri_vf.c
@@ -82,12 +82,15 @@ static iomux_v3_cfg_t mvf600_pads[] = {
/* set PTB20 as GPIO for sdhc card detecting */
MVF600_PAD42_PTB20__SDHC1_SW_CD,
- /* I2C0: I2C_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier board)
+ /*
+ * I2C0: I2C_SDA/SCL on SODIMM pin 194/196 (e.g. RTC on carrier board)
*/
+#ifndef CONFIG_CAN_FLEXCAN /* primary pinmux */
MVF600_PAD36_PTB14__I2C0_SCL,
MVF600_PAD37_PTB15__I2C0_SDA,
+#endif
-#if 0 /* optional secondary pinmux */
+#ifdef CONFIG_CAN_FLEXCAN /* optional secondary pinmux */
/* CAN0 */
MVF600_PAD36_PTB14__CAN0_RX, /* conflicts with
MVF600_PAD36_PTB14__I2C0_SCL */
@@ -700,7 +703,18 @@ static void mvf_power_off(void)
mvf_cpu_lp_set(STOP_MODE);
}
-/*!
+#ifdef CONFIG_CAN_FLEXCAN
+static void can0_enable_switch(int enable)
+{
+ printk("Enable CAN0 transceiver\n");
+}
+
+static struct flexcan_platform_data can0_pdata __initdata = {
+ .transceiver_switch = &can0_enable_switch,
+};
+#endif
+
+/*
* Board specific initialization.
*/
static void __init mvf_board_init(void)
@@ -748,6 +762,11 @@ static void __init mvf_board_init(void)
mvf_add_mxc_pwm(3);
mvf_add_pwm_leds(&tegra_leds_pwm_data);
+#ifdef CONFIG_CAN_FLEXCAN
+ mvf_add_flexcan0(&can0_pdata);
+ mvf_add_flexcan1(NULL);
+#endif
+
imx_asrc_data.asrc_core_clk = clk_get(NULL, "asrc_clk");
imx_asrc_data.asrc_audio_clk = clk_get(NULL, "asrc_serial_clk");
mvf_add_asrc(&imx_asrc_data);