summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/arm/boot/dts/Makefile1
-rw-r--r--arch/arm/boot/dts/imx6sx-sdb-canfd.dts35
-rw-r--r--arch/arm/boot/dts/imx6sx-sdb.dts13
-rw-r--r--arch/arm/boot/dts/imx6sx.dtsi20
4 files changed, 69 insertions, 0 deletions
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 820e1b71fa18..b8fcad805825 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -179,6 +179,7 @@ dtb-$(CONFIG_ARCH_MXC) += \
imx6sx-sdb.dtb \
imx6sx-sdb-lcdif1.dtb \
vf610-cosmic.dtb \
+ imx6sx-sdb-canfd.dtb \
vf610-twr.dtb
dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
imx23-olinuxino.dtb \
diff --git a/arch/arm/boot/dts/imx6sx-sdb-canfd.dts b/arch/arm/boot/dts/imx6sx-sdb-canfd.dts
new file mode 100644
index 000000000000..91ad35d11b42
--- /dev/null
+++ b/arch/arm/boot/dts/imx6sx-sdb-canfd.dts
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2014 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "imx6sx-sdb.dts"
+
+/*
+ * flexcan and canfd are sharing the same pads, so disable flexcan to
+ * enable canfd.
+ * There's a trick here that the tranceiver configuration gpios are still
+ * got from the flexcan node since they're using the same tranceiver.
+ */
+&flexcan1 {
+ status = "disabled";
+};
+
+&flexcan2 {
+ status = "disabled";
+};
+
+&canfd1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_canfd1>;
+ status = "okay";
+};
+
+&canfd2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_canfd2>;
+ status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx6sx-sdb.dts b/arch/arm/boot/dts/imx6sx-sdb.dts
index cb2922394dda..aca3d73d6130 100644
--- a/arch/arm/boot/dts/imx6sx-sdb.dts
+++ b/arch/arm/boot/dts/imx6sx-sdb.dts
@@ -330,6 +330,19 @@
&iomuxc {
imx6x-sdb {
+ pinctrl_canfd1: canfd1grp-1 {
+ fsl,pins = <
+ MX6SX_PAD_QSPI1B_DQS__CANFD_TX1 0x1b0b0
+ MX6SX_PAD_QSPI1A_SS1_B__CANFD_RX1 0x1b0b0
+ >;
+ };
+
+ pinctrl_canfd2: canfd2grp-1 {
+ fsl,pins = <
+ MX6SX_PAD_QSPI1B_SS1_B__CANFD_RX2 0x1b0b0
+ MX6SX_PAD_QSPI1A_DQS__CANFD_TX2 0x1b0b0
+ >;
+ };
pinctrl_egalax_int: egalax_intgrp {
fsl,pins = <
diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
index 7095473e8277..82117b0337e2 100644
--- a/arch/arm/boot/dts/imx6sx.dtsi
+++ b/arch/arm/boot/dts/imx6sx.dtsi
@@ -703,6 +703,26 @@
reg = <0x020e4000 0x4000>;
};
+ canfd1: canfd@020e8000 {
+ compatible = "bosch,m_can";
+ reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
+ reg-names = "canfd", "message_ram";
+ interrupts = <0 114 0x04>;
+ clocks = <&clks IMX6SX_CLK_CANFD>;
+ mram-cfg = <0x0 0 0 32 32 32 0 1>;
+ status = "disabled";
+ };
+
+ canfd2: canfd@020f0000 {
+ compatible = "bosch,m_can";
+ reg = <0x020f0000 0x4000>, <0x02298000 0x4000>;
+ reg-names = "canfd", "message_ram";
+ interrupts = <0 115 0x04>;
+ clocks = <&clks IMX6SX_CLK_CANFD>;
+ mram-cfg = <0x2000 0 0 32 32 32 0 1>;
+ status = "disabled";
+ };
+
ldb: ldb@020e0014 {
#address-cells = <1>;
#size-cells = <0>;