ARM: dts: imx: Add support for Apalis Evaluation Board v1.2
authorHiago De Franco <hiago.franco@toradex.com>
Wed, 24 Jan 2024 14:13:20 +0000 (11:13 -0300)
committerShawn Guo <shawnguo@kernel.org>
Tue, 6 Feb 2024 07:38:57 +0000 (15:38 +0800)
Add support for the new Apalis Evaluation Board v1.2. Because
only the imx6q-apalis-eval.dts was available, the imx6q-apalis-eval.dtsi
has been created which has common hardware configurations for v1.0, v1.1
and v1.2. Both imx6q-apalis-eval.dts and imx6q-apalis-eval-v1.2.dts
files include imx6q-apalis-eval.dtsi.

Versions 1.0 and 1.1 are compatible with each other and should
use imx6q-apalis-eval.dts file. Now for v1.2, the new device-tree file
should be used.

Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Signed-off-by: Hiago De Franco <hiago.franco@toradex.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/boot/dts/nxp/imx/Makefile
arch/arm/boot/dts/nxp/imx/imx6q-apalis-eval-v1.2.dts [new file with mode: 0644]
arch/arm/boot/dts/nxp/imx/imx6q-apalis-eval.dts
arch/arm/boot/dts/nxp/imx/imx6q-apalis-eval.dtsi [new file with mode: 0644]

index c32e004e7610caba15398ed0a703f8673bd83e89..87dbd842f6635662fe1694b4d69f4151c6210e9b 100644 (file)
@@ -148,6 +148,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
        imx6dl-yapp4-phoenix.dtb \
        imx6dl-yapp4-ursa.dtb \
        imx6q-apalis-eval.dtb \
+       imx6q-apalis-eval-v1.2.dtb \
        imx6q-apalis-ixora.dtb \
        imx6q-apalis-ixora-v1.1.dtb \
        imx6q-apalis-ixora-v1.2.dtb \
diff --git a/arch/arm/boot/dts/nxp/imx/imx6q-apalis-eval-v1.2.dts b/arch/arm/boot/dts/nxp/imx/imx6q-apalis-eval-v1.2.dts
new file mode 100644 (file)
index 0000000..15d4a98
--- /dev/null
@@ -0,0 +1,200 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2024 Toradex
+ */
+
+/dts-v1/;
+
+#include "imx6q-apalis-eval.dtsi"
+
+/ {
+       model = "Toradex Apalis iMX6Q/D Module on Apalis Evaluation Board v1.2";
+       compatible = "toradex,apalis_imx6q-eval-v1.2", "toradex,apalis_imx6q",
+                    "fsl,imx6q";
+
+       reg_3v3_mmc: regulator-3v3-mmc {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 0 GPIO_ACTIVE_HIGH>;
+               off-on-delay-us = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_enable_3v3_mmc>;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "3.3V_MMC";
+               startup-delay-us = <10000>;
+       };
+
+       reg_3v3_sd: regulator-3v3-sd {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 1 GPIO_ACTIVE_HIGH>;
+               off-on-delay-us = <100000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_enable_3v3_sd>;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "3.3V_SD";
+               startup-delay-us = <10000>;
+       };
+
+       reg_can1: regulator-can1 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_enable_can1_power>;
+               regulator-name = "5V_SW_CAN1";
+               startup-delay-us = <10000>;
+       };
+
+       reg_can2: regulator-can2 {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 2 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_enable_can2_power>;
+               regulator-name = "5V_SW_CAN2";
+               startup-delay-us = <10000>;
+       };
+
+       sound-carrier {
+               compatible = "simple-audio-card";
+               simple-audio-card,bitclock-master = <&codec_dai>;
+               simple-audio-card,format = "i2s";
+               simple-audio-card,frame-master = <&codec_dai>;
+               simple-audio-card,name = "apalis-nau8822";
+               simple-audio-card,routing =
+                       "Headphones", "LHP",
+                       "Headphones", "RHP",
+                       "Speaker", "LSPK",
+                       "Speaker", "RSPK",
+                       "Line Out", "AUXOUT1",
+                       "Line Out", "AUXOUT2",
+                       "LAUX", "Line In",
+                       "RAUX", "Line In",
+                       "LMICP", "Mic In",
+                       "RMICP", "Mic In";
+               simple-audio-card,widgets =
+                       "Headphones", "Headphones",
+                       "Line Out", "Line Out",
+                       "Speaker", "Speaker",
+                       "Microphone", "Mic In",
+                       "Line", "Line In";
+
+               codec_dai: simple-audio-card,codec {
+                       sound-dai = <&nau8822_1a>;
+                       system-clock-frequency = <12288000>;
+               };
+
+               simple-audio-card,cpu {
+                       sound-dai = <&ssi2>;
+               };
+       };
+};
+
+&can1 {
+       xceiver-supply = <&reg_can1>;
+       status = "okay";
+};
+
+&can2 {
+       xceiver-supply = <&reg_can2>;
+       status = "okay";
+};
+
+/* I2C1_SDA/SCL on MXM3 209/211 */
+&i2c1 {
+       /* Audio Codec */
+       nau8822_1a: audio-codec@1a {
+               compatible = "nuvoton,nau8822";
+               reg = <0x1a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_nau8822>;
+               #sound-dai-cells = <0>;
+       };
+
+       /* Current measurement into module VCC */
+       hwmon@40 {
+               compatible = "ti,ina219";
+               reg = <0x40>;
+               shunt-resistor = <5000>;
+       };
+
+       /* Temperature Sensor */
+       temperature-sensor@4f {
+               compatible = "ti,tmp75c";
+               reg = <0x4f>;
+       };
+
+       /* EEPROM */
+       eeprom@57 {
+               compatible = "st,24c02", "atmel,24c02";
+               reg = <0x57>;
+               pagesize = <16>;
+               size = <256>;
+       };
+};
+
+&pcie {
+       status = "okay";
+};
+
+&ssi2 {
+       status = "okay";
+};
+
+/* MMC1 */
+&usdhc1 {
+       bus-width = <4>;
+       pinctrl-0 = <&pinctrl_usdhc1_4bit &pinctrl_mmc_cd>;
+       vmmc-supply = <&reg_3v3_mmc>;
+       status = "okay";
+};
+
+/* SD1 */
+&usdhc2 {
+       cd-gpios = <&gpio6 14 GPIO_ACTIVE_LOW>;
+       pinctrl-0 = <&pinctrl_usdhc2 &pinctrl_sd_cd>;
+       vmmc-supply = <&reg_3v3_sd>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_enable_3v3_mmc: enable3v3mmcgrp {
+               fsl,pins = <
+                       /* MMC1_PWR_CTRL */
+                       MX6QDL_PAD_NANDF_D0__GPIO2_IO00 0x1b0b0
+               >;
+       };
+
+       pinctrl_enable_3v3_sd: enable3v3sdgrp {
+               fsl,pins = <
+                       /* SD1_PWR_CTRL */
+                       MX6QDL_PAD_NANDF_D1__GPIO2_IO01 0x1b0b0
+               >;
+       };
+
+       pinctrl_enable_can1_power: enablecan1powergrp {
+               fsl,pins = <
+                       /* CAN1_PWR_EN */
+                       MX6QDL_PAD_NANDF_D3__GPIO2_IO03 0x1b0b0
+               >;
+       };
+
+       pinctrl_enable_can2_power: enablecan2powergrp {
+               fsl,pins = <
+                       /* CAN2_PWR_EN */
+                       MX6QDL_PAD_NANDF_D2__GPIO2_IO02 0x1b0b0
+               >;
+       };
+
+       pinctrl_nau8822: nau8822grp {
+               fsl,pins = <
+                       MX6QDL_PAD_DISP0_DAT16__AUD5_TXC        0x130b0
+                       MX6QDL_PAD_DISP0_DAT17__AUD5_TXD        0x130b0
+                       MX6QDL_PAD_DISP0_DAT18__AUD5_TXFS       0x130b0
+                       MX6QDL_PAD_DISP0_DAT19__AUD5_RXD        0x130b0
+               >;
+       };
+};
index 3fc079dfd61eed40ed9d13b8e13e922ffcf04ae0..e1077e2da5f42652f5ec07c29174f34e21fd7231 100644 (file)
@@ -7,29 +7,13 @@
 
 /dts-v1/;
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/interrupt-controller/irq.h>
-#include "imx6q.dtsi"
-#include "imx6qdl-apalis.dtsi"
+#include "imx6q-apalis-eval.dtsi"
 
 / {
        model = "Toradex Apalis iMX6Q/D Module on Apalis Evaluation Board";
        compatible = "toradex,apalis_imx6q-eval", "toradex,apalis_imx6q",
                     "fsl,imx6q";
 
-       aliases {
-               i2c0 = &i2c1;
-               i2c1 = &i2c3;
-               i2c2 = &i2c2;
-               rtc0 = &rtc_i2c;
-               rtc1 = &snvs_rtc;
-       };
-
-       chosen {
-               stdout-path = "serial0:115200n8";
-       };
-
        reg_pcie_switch: regulator-pcie-switch {
                compatible = "regulator-fixed";
                enable-active-high;
                startup-delay-us = <100000>;
                status = "okay";
        };
-
-       reg_3v3_sw: regulator-3v3-sw {
-               compatible = "regulator-fixed";
-               regulator-always-on;
-               regulator-max-microvolt = <3300000>;
-               regulator-min-microvolt = <3300000>;
-               regulator-name = "3.3V_SW";
-       };
 };
 
 &can1 {
 
 /* I2C1_SDA/SCL on MXM3 209/211 (e.g. RTC on carrier board) */
 &i2c1 {
-       status = "okay";
-
+       /* PCIe Switch */
        pcie-switch@58 {
                compatible = "plx,pex8605";
                reg = <0x58>;
        };
-
-       /* M41T0M6 real time clock on carrier board */
-       rtc_i2c: rtc@68 {
-               compatible = "st,m41t0";
-               reg = <0x68>;
-       };
-};
-
-/*
- * I2C3_SDA/SCL (CAM) on MXM3 pin 201/203 (e.g. camera sensor on carrier
- * board)
- */
-&i2c3 {
-       status = "okay";
 };
 
 &pcie {
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_reset_moci>;
-       /* active-high meaning opposite of regular PERST# active-low polarity */
-       reset-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
-       reset-gpio-active-high;
        vpcie-supply = <&reg_pcie_switch>;
        status = "okay";
 };
 
-&pwm1 {
-       status = "okay";
-};
-
-&pwm2 {
-       status = "okay";
-};
-
-&pwm3 {
-       status = "okay";
-};
-
-&pwm4 {
-       status = "okay";
-};
-
-&reg_usb_host_vbus {
-       status = "okay";
-};
-
-&reg_usb_otg_vbus {
-       status = "okay";
-};
-
-&sata {
-       status = "okay";
-};
-
 &sound_spdif {
        status = "okay";
 };
 
-&spdif {
-       status = "okay";
-};
-
-&uart1 {
-       status = "okay";
-};
-
-&uart2 {
-       status = "okay";
-};
-
-&uart4 {
-       status = "okay";
-};
-
-&uart5 {
-       status = "okay";
-};
-
-&usbh1 {
-       disable-over-current;
-       vbus-supply = <&reg_usb_host_vbus>;
-       status = "okay";
-};
-
-&usbotg {
-       disable-over-current;
-       vbus-supply = <&reg_usb_otg_vbus>;
-       status = "okay";
-};
-
 /* MMC1 */
 &usdhc1 {
        status = "okay";
diff --git a/arch/arm/boot/dts/nxp/imx/imx6q-apalis-eval.dtsi b/arch/arm/boot/dts/nxp/imx/imx6q-apalis-eval.dtsi
new file mode 100644 (file)
index 0000000..b6c45ad
--- /dev/null
@@ -0,0 +1,120 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2014-2024 Toradex
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include "imx6q.dtsi"
+#include "imx6qdl-apalis.dtsi"
+
+/ {
+       aliases {
+               i2c0 = &i2c1;
+               i2c1 = &i2c3;
+               i2c2 = &i2c2;
+               rtc0 = &rtc_i2c;
+               rtc1 = &snvs_rtc;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       reg_3v3_sw: regulator-3v3-sw {
+               compatible = "regulator-fixed";
+               regulator-always-on;
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "3.3V_SW";
+       };
+};
+
+&i2c1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       /* M41T0M6 real time clock on carrier board */
+       rtc_i2c: rtc@68 {
+               compatible = "st,m41t0";
+               reg = <0x68>;
+       };
+};
+
+/*
+ * I2C3_SDA/SCL (CAM) on MXM3 pin 201/203 (e.g. camera sensor on carrier
+ * board)
+ */
+&i2c3 {
+       status = "okay";
+};
+
+&pcie {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_reset_moci>;
+       /* active-high meaning opposite of regular PERST# active-low polarity */
+       reset-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+       reset-gpio-active-high;
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&pwm2 {
+       status = "okay";
+};
+
+&pwm3 {
+       status = "okay";
+};
+
+&pwm4 {
+       status = "okay";
+};
+
+&reg_usb_host_vbus {
+       status = "okay";
+};
+
+&reg_usb_otg_vbus {
+       status = "okay";
+};
+
+&sata {
+       status = "okay";
+};
+
+&spdif {
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart4 {
+       status = "okay";
+};
+
+&uart5 {
+       status = "okay";
+};
+
+&usbh1 {
+       disable-over-current;
+       vbus-supply = <&reg_usb_host_vbus>;
+       status = "okay";
+};
+
+&usbotg {
+       disable-over-current;
+       vbus-supply = <&reg_usb_otg_vbus>;
+       status = "okay";
+};