]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ARM: dts: imx6sx-sabreauto: add flexcan support
authorAisheng Dong <aisheng.dong@nxp.com>
Wed, 28 Nov 2018 11:03:52 +0000 (11:03 +0000)
committerShawn Guo <shawnguo@kernel.org>
Mon, 10 Dec 2018 02:03:03 +0000 (10:03 +0800)
The CAN transceiver on MX6SX Sabreauto board seems in sleep mode by default
after power up the board. User has to press the wakeup key on ARD baseboard
before using the transceiver, or it may not work properly when power up the
board at the first time(warm reset does not have such issue).

This patch operates the wake pin too besides stby/en pins by chaining them
together in regulator mode.

Signed-off-by: Aisheng Dong <aisheng.dong@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/boot/dts/imx6sx-sabreauto.dts

index 48aede543612b76b892fa3f8356287ededdd3f26..b0ee324afe581f79364faf89925093677460094c 100644 (file)
@@ -37,6 +37,35 @@ vcc_sd3: regulator-vcc-sd3 {
                gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>;
                enable-active-high;
        };
+
+       reg_can_wake: regulator-can-wake {
+               compatible = "regulator-fixed";
+               regulator-name = "can-wake";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&max7310_b 7 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       reg_can_en: regulator-can-en {
+               compatible = "regulator-fixed";
+               regulator-name = "can-en";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&max7310_b 5 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&reg_can_wake>;
+       };
+
+       reg_can_stby: regulator-can-stby {
+               compatible = "regulator-fixed";
+               regulator-name = "can-stby";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&max7310_b 4 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               vin-supply = <&reg_can_en>;
+       };
 };
 
 &anaclk2 {
@@ -76,6 +105,20 @@ &fec2 {
        status = "okay";
 };
 
+&flexcan1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan1>;
+       xceiver-supply = <&reg_can_stby>;
+       status = "okay";
+};
+
+&flexcan2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       xceiver-supply = <&reg_can_stby>;
+       status = "okay";
+};
+
 &uart1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_uart1>;
@@ -150,6 +193,20 @@ MX6SX_PAD_RGMII2_RX_CTL__ENET2_RX_EN    0x3081
                >;
        };
 
+       pinctrl_flexcan1: flexcan1grp {
+               fsl,pins = <
+                       MX6SX_PAD_QSPI1B_DQS__CAN1_TX   0x1b020
+                       MX6SX_PAD_QSPI1A_SS1_B__CAN1_RX 0x1b020
+               >;
+       };
+
+       pinctrl_flexcan2: flexcan2grp {
+               fsl,pins = <
+                       MX6SX_PAD_QSPI1B_SS1_B__CAN2_RX 0x1b020
+                       MX6SX_PAD_QSPI1A_DQS__CAN2_TX   0x1b020
+               >;
+       };
+
        pinctrl_i2c2: i2c2grp {
                fsl,pins = <
                        MX6SX_PAD_GPIO1_IO03__I2C2_SDA          0x4001b8b1