]> www.infradead.org Git - linux.git/commitdiff
arm64: dts: ti: k3-am654-idk: Add Support for MCAN
authorFaiz Abbas <faiz_abbas@ti.com>
Wed, 21 Aug 2024 20:54:14 +0000 (15:54 -0500)
committerNishanth Menon <nm@ti.com>
Sat, 24 Aug 2024 19:47:24 +0000 (14:47 -0500)
There are two MCAN instances present on the am65x SoC [0].
Since there are two CAN transceivers on the IDK application
board for AM654 EVM [1], enable m_can0 and m_can1, add the
two corresponding CAN transceiver nodes, and set a maximum
data rate of 5 Mbps.

[0] https://www.ti.com/lit/ds/symlink/am6548.pdf
[1] https://www.ti.com/lit/zip/sprr382

Signed-off-by: Faiz Abbas <faiz_abbas@ti.com>
Signed-off-by: Judith Mendez <jm@ti.com>
Link: https://lore.kernel.org/r/20240821205414.1706661-1-jm@ti.com
Signed-off-by: Nishanth Menon <nm@ti.com>
arch/arm64/boot/dts/ti/k3-am654-idk.dtso

index 8bdb87fcbde007b4d65170d2527628d364816f64..97f7eb34b99a653e842090a0ec766f894be2498e 100644 (file)
@@ -8,6 +8,7 @@
 /dts-v1/;
 /plugin/;
 
+#include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/net/ti-dp83867.h>
 #include "k3-pinctrl.h"
 
                        };
                };
        };
+
+       transceiver1: can-phy0 {
+               compatible = "ti,tcan1042";
+               #phy-cells = <0>;
+               max-bitrate = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&mcan0_gpio_pins_default>;
+               standby-gpios = <&main_gpio1 47 GPIO_ACTIVE_LOW>;
+       };
+
+       transceiver2: can-phy1 {
+               compatible = "ti,tcan1042";
+               #phy-cells = <0>;
+               max-bitrate = <5000000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&mcan1_gpio_pins_default>;
+               standby-gpios = <&main_gpio1 67 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &main_pmx0 {
                        AM65X_IOPAD(0x012c, PIN_INPUT, 2) /* (AG26) PRG1_PRU0_GPO19.PRG1_IEP0_EDC_SYNC_OUT0 */
                >;
        };
+
+       mcan0_gpio_pins_default: mcan0-gpio-default-pins {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x023c, PIN_INPUT, 7) /* (V25) PRG0_PRU0_GPIO18:GPIO1_47 */
+               >;
+       };
+
+       mcan1_gpio_pins_default: mcan1-gpio-default-pins {
+               pinctrl-single,pins = <
+                       AM65X_IOPAD(0x028c, PIN_INPUT, 7) /* (Y26) PRG0_PRU1_GPIO18.GPIO1_67 */
+               >;
+       };
+};
+
+&wkup_pmx0 {
+       mcu_mcan0_pins_default: mcu-mcan0-default-pins {
+               pinctrl-single,pins = <
+                       AM65X_WKUP_IOPAD(0x00ac, PIN_INPUT_PULLUP, 0) /* (W2) MCU_MCAN0_RX */
+                       AM65X_WKUP_IOPAD(0x00a8, PIN_OUTPUT_PULLUP, 0) /* (W1) MCU_MCAN0_TX */
+               >;
+       };
+
+       mcu_mcan1_pins_default: mcu-mcan1-default-pins {
+               pinctrl-single,pins = <
+                       AM65X_WKUP_IOPAD(0x00c4, PIN_INPUT_PULLUP, 1) /* (AD3) WKUP_GPIO0_5.MCU_MCAN1_RX */
+                       AM65X_WKUP_IOPAD(0x00c0, PIN_OUTPUT_PULLUP, 1) /* (AC3) WKUP_GPIO0_4.MCU_MCAN1_TX */
+               >;
+       };
 };
 
 &icssg0_mdio {
        pinctrl-names = "default";
        pinctrl-0 = <&icssg1_iep0_pins_default>;
 };
+
+&m_can0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_mcan0_pins_default>;
+       phys = <&transceiver1>;
+       status = "okay";
+};
+
+&m_can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcu_mcan1_pins_default>;
+       phys = <&transceiver2>;
+       status = "okay";
+};