]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
arm64: dts: imx93-11x11-frdm: enable additional devices
authorFrancesco Valla <francesco@valla.it>
Thu, 15 Jan 2026 17:11:34 +0000 (18:11 +0100)
committerShawn Guo <shawnguo@kernel.org>
Sun, 18 Jan 2026 06:30:11 +0000 (14:30 +0800)
Enable additional devices on the i.MX93 FRDM board:

  - CAN port and associated transceiver
  - Bluetooth portion of the IW612 chipset
  - WiFi SDIO port
  - user buttons

The WiFi portion of the on-board IW612 chipset is still not supported
upstream, but since SDIO is a discoverable bus it will be probed once it
is.

Signed-off-by: Francesco Valla <francesco@valla.it>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx93-11x11-frdm.dts

index 5bb6ae0d154a655283295b6902fc29bf6f744d5c..bd14ba28690c081817111aaabef12fb56a7c56a4 100644 (file)
@@ -9,6 +9,7 @@
        model = "NXP i.MX93 11X11 FRDM board";
 
        aliases {
+               can0 = &flexcan2;
                ethernet0 = &fec;
                ethernet1 = &eqos;
                i2c0 = &lpi2c1;
                mmc1 = &usdhc2; /* uSD */
                rtc0 = &pcf2131;
                serial0 = &lpuart1;
+               serial4 = &lpuart5;
        };
 
        chosen {
                stdout-path = &lpuart1;
        };
 
+       flexcan2_phy: can-phy {
+               compatible = "nxp,tja1051";
+               #phy-cells = <0>;
+               max-bitrate = <5000000>;
+               silent-gpios = <&pcal6524 23 GPIO_ACTIVE_HIGH>;
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               button-k2 {
+                       label = "Button K2";
+                       linux,code = <BTN_1>;
+                       gpios = <&pcal6524 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+                       interrupt-parent = <&pcal6524>;
+                       interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
+               };
+
+               button-k3 {
+                       label = "Button K3";
+                       linux,code = <BTN_2>;
+                       gpios = <&pcal6524 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
+                       interrupt-parent = <&pcal6524>;
+                       interrupts = <6 IRQ_TYPE_EDGE_FALLING>;
+               };
+       };
+
        reg_usdhc2_vmmc: regulator-usdhc2 {
                compatible = "regulator-fixed";
                off-on-delay-us = <12000>;
                enable-active-high;
        };
 
+       reg_usdhc3_vmmc: regulator-usdhc3 {
+               compatible = "regulator-fixed";
+               regulator-name = "VPCIe_3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <20000>;
+               gpio = <&pcal6524 13 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
        reserved-memory {
                ranges;
                #address-cells = <2>;
                audio-cpu = <&sai1>;
                audio-codec = <&mqs1>;
        };
+
+       usdhc3_pwrseq: mmc-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&pcal6524 12 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &adc1 {
        };
 };
 
+&flexcan2 {
+       phys = <&flexcan2_phy>;
+       pinctrl-0 = <&pinctrl_flexcan2>;
+       pinctrl-1 = <&pinctrl_flexcan2_sleep>;
+       pinctrl-names = "default", "sleep";
+       status = "okay";
+};
+
 &lpi2c1 {
        clock-frequency = <400000>;
        pinctrl-0 = <&pinctrl_lpi2c1>;
        pinctrl-names = "default";
        status = "okay";
+
+       pcal6408: gpio@20 {
+               compatible = "nxp,pcal6408";
+               reg = <0x20>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               reset-gpios = <&pcal6524 20 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &lpi2c2 {
        status = "okay";
 };
 
+&lpuart5 {
+       pinctrl-0 = <&pinctrl_uart5>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       uart-has-rtscts;
+
+       bluetooth {
+               compatible = "nxp,88w8987-bt";
+               device-wakeup-gpios = <&pcal6408 3 GPIO_ACTIVE_HIGH>;
+               reset-gpios = <&pcal6524 19 GPIO_ACTIVE_LOW>;
+               vcc-supply = <&reg_usdhc3_vmmc>;
+       };
+};
+
 &mqs1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_mqs1>;
        status = "okay";
 };
 
+&usdhc3 {
+       bus-width = <4>;
+       keep-power-in-suspend;
+       mmc-pwrseq = <&usdhc3_pwrseq>;
+       non-removable;
+       pinctrl-0 = <&pinctrl_usdhc3>;
+       pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
+       pinctrl-3 = <&pinctrl_usdhc3_sleep>;
+       pinctrl-names = "default", "state_100mhz", "state_200mhz", "sleep";
+       vmmc-supply = <&reg_usdhc3_vmmc>;
+       status = "okay";
+};
+
 &wdog3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_wdog>;
                >;
        };
 
+       pinctrl_flexcan2_sleep: flexcan2sleepgrp {
+               fsl,pins = <
+                       MX93_PAD_GPIO_IO25__GPIO2_IO25                  0x31e
+                       MX93_PAD_GPIO_IO27__GPIO2_IO27                  0x31e
+               >;
+       };
+
        pinctrl_lpi2c1: lpi2c1grp {
                fsl,pins = <
                        MX93_PAD_I2C1_SCL__LPI2C1_SCL                   0x40000b9e
                >;
        };
 
+       pinctrl_uart5: uart5grp {
+               fsl,pins = <
+                       MX93_PAD_DAP_TDO_TRACESWO__LPUART5_TX           0x31e
+                       MX93_PAD_DAP_TDI__LPUART5_RX                    0x31e
+                       MX93_PAD_DAP_TMS_SWDIO__LPUART5_RTS_B           0x31e
+                       MX93_PAD_DAP_TCLK_SWCLK__LPUART5_CTS_B          0x31e
+               >;
+       };
+
        /* need to config the SION for data and cmd pad, refer to ERR052021 */
        pinctrl_usdhc1: usdhc1grp {
                fsl,pins = <
                >;
        };
 
+               /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x1582
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x40001382
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x40001382
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x40001382
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x40001382
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x40001382
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3_100mhz: usdhc3-100mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x158e
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x4000138e
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x4000138e
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x4000138e
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x4000138e
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x4000138e
+               >;
+       };
+
+       /* need to config the SION for data and cmd pad, refer to ERR052021 */
+       pinctrl_usdhc3_200mhz: usdhc3-200mhzgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__USDHC3_CLK            0x15fe
+                       MX93_PAD_SD3_CMD__USDHC3_CMD            0x400013fe
+                       MX93_PAD_SD3_DATA0__USDHC3_DATA0        0x400013fe
+                       MX93_PAD_SD3_DATA1__USDHC3_DATA1        0x400013fe
+                       MX93_PAD_SD3_DATA2__USDHC3_DATA2        0x400013fe
+                       MX93_PAD_SD3_DATA3__USDHC3_DATA3        0x400013fe
+               >;
+       };
+
+       pinctrl_usdhc3_sleep: usdhc3grpsleepgrp {
+               fsl,pins = <
+                       MX93_PAD_SD3_CLK__GPIO3_IO20            0x31e
+                       MX93_PAD_SD3_CMD__GPIO3_IO21            0x31e
+                       MX93_PAD_SD3_DATA0__GPIO3_IO22          0x31e
+                       MX93_PAD_SD3_DATA1__GPIO3_IO23          0x31e
+                       MX93_PAD_SD3_DATA2__GPIO3_IO24          0x31e
+                       MX93_PAD_SD3_DATA3__GPIO3_IO25          0x31e
+               >;
+       };
+
        pinctrl_wdog: wdoggrp {
                fsl,pins = <
                        MX93_PAD_WDOG_ANY__WDOG1_WDOG_ANY       0x31e