[<prev] [next>] [day] [month] [year] [list]
Message-Id: <20251126-b4-9391-can-dts-v1-1-c23145f0d2db@nxp.com>
Date: Wed, 26 Nov 2025 14:20:07 +0800
From: Haibo Chen <haibo.chen@....com>
To: Shawn Guo <shawnguo@...nel.org>, Sascha Hauer <s.hauer@...gutronix.de>,
Pengutronix Kernel Team <kernel@...gutronix.de>,
Fabio Estevam <festevam@...il.com>, Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>
Cc: imx@...ts.linux.dev, linux-arm-kernel@...ts.infradead.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org, frank.li@....com,
Haibo Chen <haibo.chen@....com>
Subject: [PATCH] arm64: dts: imx93-9x9-qsb: add CAN support
CAN1 and Micfil share pins on imx93-9x9-qsb board, use TMUX1574RSVR
to control the connection: put sel to high, select CAN1, put sel to
low, select Micfil. In default, sel keep low.
To support CAN1, need to put the sel to high. Besides, CAN1 use phy
TJA1057GT/3.
---
Signed-off-by: Haibo Chen <haibo.chen@....com>
---
arch/arm64/boot/dts/freescale/Makefile | 2 +
.../boot/dts/freescale/imx93-9x9-qsb-can1.dtso | 63 ++++++++++++++++++++++
2 files changed, 65 insertions(+)
diff --git a/arch/arm64/boot/dts/freescale/Makefile b/arch/arm64/boot/dts/freescale/Makefile
index f30d3fd724d0ce6b38f7bef10e3970ac34f70f4a..1142d3312c8651b4292837bce3cbe46ab95f7e09 100644
--- a/arch/arm64/boot/dts/freescale/Makefile
+++ b/arch/arm64/boot/dts/freescale/Makefile
@@ -373,7 +373,9 @@ dtb-$(CONFIG_ARCH_MXC) += imx91-tqma9131-mba91xxca.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-9x9-qsb.dtb
imx93-9x9-qsb-i3c-dtbs += imx93-9x9-qsb.dtb imx93-9x9-qsb-i3c.dtbo
+imx93-9x9-qsb-can1-dtbs += imx93-9x9-qsb.dtb imx93-9x9-qsb-can1.dtbo
dtb-$(CONFIG_ARCH_MXC) += imx93-9x9-qsb-i3c.dtb
+dtb-$(CONFIG_ARCH_MXC) += imx93-9x9-qsb-can1.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-11x11-evk.dtb
dtb-$(CONFIG_ARCH_MXC) += imx93-14x14-evk.dtb
diff --git a/arch/arm64/boot/dts/freescale/imx93-9x9-qsb-can1.dtso b/arch/arm64/boot/dts/freescale/imx93-9x9-qsb-can1.dtso
new file mode 100644
index 0000000000000000000000000000000000000000..62d4fa6c21d794f91da59f511d6f0162037e9271
--- /dev/null
+++ b/arch/arm64/boot/dts/freescale/imx93-9x9-qsb-can1.dtso
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright 2025 NXP
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include "imx93-pinfunc.h"
+
+/dts-v1/;
+/plugin/;
+
+&{/} {
+ flexcan_phy: can-phy {
+ compatible = "nxp,tja1057";
+ #phy-cells = <0>;
+ max-bitrate = <5000000>;
+ silent-gpios = <&pcal6524 23 GPIO_ACTIVE_HIGH>;
+ };
+};
+
+&flexcan1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_flexcan1>;
+ phys = <&flexcan_phy>;
+ status = "okay";
+};
+
+&iomuxc {
+ pinctrl_flexcan1: flexcan1grp {
+ fsl,pins = <
+ MX93_PAD_PDM_CLK__CAN1_TX 0x139e
+ MX93_PAD_PDM_BIT_STREAM0__CAN1_RX 0x139e
+ >;
+ };
+};
+
+/* micfi1 use the A port, conflict with can1 */
+&micfil {
+ status = "disabled";
+};
+
+&pcal6524 {
+ /*
+ * mic-can-sel-hog have property 'output-low', dt overlay don't
+ * support /delete-property/. Both 'output-low' and 'output-high'
+ * will be exist under hog nodes if overlay file set 'output-high'.
+ * Workaround is disable this hog and create new hog with
+ * 'output-high'.
+ */
+ mic-can-sel-hog {
+ status = "disabled";
+ };
+
+ /*
+ * Config the MIC/CAN_SEL to high, chose B
+ * port, connect to CAN.
+ */
+ mic-can-high-sel-hog {
+ gpio-hog;
+ gpios = <0x11 0x00>;
+ output-high;
+ };
+};
---
base-commit: 422f3140bbcb657e1b86c484296972ab76f6d1ff
change-id: 20251125-b4-9391-can-dts-2f4849978fc2
Best regards,
--
Haibo Chen <haibo.chen@....com>
Powered by blists - more mailing lists