ARM: dts: imx7-colibri: add support for Toradex Iris carrier boards
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>
Mon, 16 May 2022 14:13:13 +0000 (16:13 +0200)
committerShawn Guo <shawnguo@kernel.org>
Sat, 11 Jun 2022 09:14:33 +0000 (17:14 +0800)
Add support for Toradex Iris, small form-factor Pico-ITX Colibri Arm
Computer Module family Carrier Board.

Additional details available at
https://www.toradex.com/products/carrier-board/iris-carrier-board

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/imx7-colibri-iris-v2.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx7-colibri-iris.dtsi [new file with mode: 0644]
arch/arm/boot/dts/imx7d-colibri-emmc-iris-v2.dts [new file with mode: 0644]
arch/arm/boot/dts/imx7d-colibri-emmc-iris.dts [new file with mode: 0644]
arch/arm/boot/dts/imx7d-colibri-iris-v2.dts [new file with mode: 0644]
arch/arm/boot/dts/imx7d-colibri-iris.dts [new file with mode: 0644]
arch/arm/boot/dts/imx7s-colibri-iris-v2.dts [new file with mode: 0644]
arch/arm/boot/dts/imx7s-colibri-iris.dts [new file with mode: 0644]

index 1848998..d3f1e30 100644 (file)
@@ -741,8 +741,12 @@ dtb-$(CONFIG_SOC_IMX7D) += \
        imx7d-cl-som-imx7.dtb \
        imx7d-colibri-aster.dtb \
        imx7d-colibri-emmc-aster.dtb \
+       imx7d-colibri-emmc-iris.dtb \
+       imx7d-colibri-emmc-iris-v2.dtb \
        imx7d-colibri-emmc-eval-v3.dtb \
        imx7d-colibri-eval-v3.dtb \
+       imx7d-colibri-iris.dtb \
+       imx7d-colibri-iris-v2.dtb \
        imx7d-flex-concentrator.dtb \
        imx7d-flex-concentrator-mfg.dtb \
        imx7d-mba7.dtb \
@@ -762,6 +766,8 @@ dtb-$(CONFIG_SOC_IMX7D) += \
        imx7d-zii-rpu2.dtb \
        imx7s-colibri-aster.dtb \
        imx7s-colibri-eval-v3.dtb \
+       imx7s-colibri-iris.dtb \
+       imx7s-colibri-iris-v2.dtb \
        imx7s-mba7.dtb \
        imx7s-warp.dtb
 dtb-$(CONFIG_SOC_IMX7ULP) += \
diff --git a/arch/arm/boot/dts/imx7-colibri-iris-v2.dtsi b/arch/arm/boot/dts/imx7-colibri-iris-v2.dtsi
new file mode 100644 (file)
index 0000000..6e19961
--- /dev/null
@@ -0,0 +1,112 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022 Toradex
+ */
+
+/ {
+       reg_3v3_vmmc: regulator-3v3-vmmc {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio5 16 GPIO_ACTIVE_HIGH>; /* SODIMM 100 */
+               regulator-max-microvolt = <3300000>;
+               regulator-min-microvolt = <3300000>;
+               regulator-name = "3v3_vmmc";
+               startup-delay-us = <100>;
+       };
+};
+
+/* Colibri AD0 to AD3 */
+&adc1 {
+       status = "okay";
+};
+
+/* Colibri SSP */
+&ecspi3 {
+       status = "okay";
+};
+
+/* Colibri Fast Ethernet */
+&fec1 {
+       status = "okay";
+};
+
+&gpio2 {
+       /*
+        * uart_b_c_on_x14_enable turns the UART transceiver for UART2 and 5 on. If one wants to
+        * turn the transceiver off, that property has to be deleted and the gpio handled in
+        * userspace.
+        * The same applies to uart_a_on_x13_enable where the UART_A transceiver is turned on.
+        */
+       uart-b-c-on-x14-enable-hog {
+               gpio-hog;
+               gpios = <27 GPIO_ACTIVE_HIGH>; /* SODIMM 104 */
+               output-high;
+       };
+};
+
+&gpio5 {
+       uart-a-on-x13-enable-hog {
+               gpio-hog;
+               gpios = <17 GPIO_ACTIVE_HIGH>; /* SODIMM 102 */
+               output-high;
+       };
+};
+
+/* Colibri I2C: I2C3_SDA/SCL on SODIMM 194/196 */
+&i2c4 {
+       status = "okay";
+};
+
+/* Colibri PWM<A> */
+&pwm1 {
+       status = "okay";
+};
+
+/* Colibri PWM<B> */
+&pwm2 {
+       status = "okay";
+};
+
+/* Colibri PWM<C> */
+&pwm3 {
+       status = "okay";
+};
+
+/* Colibri PWM<D> */
+&pwm4 {
+       status = "okay";
+};
+
+/* M41T0M6 real time clock */
+&rtc {
+       status = "okay";
+};
+
+/* Colibri UART_A */
+&uart1 {
+       status = "okay";
+};
+
+/* Colibri UART_B */
+&uart2 {
+       status = "okay";
+};
+
+/* Colibri UART_C */
+&uart3 {
+       status = "okay";
+};
+
+/* Colibri USBC */
+&usbotg1 {
+       status = "okay";
+};
+
+/* Colibri MMC/SD, UHS-I capable uSD slot */
+&usdhc1 {
+       cap-power-off-card;
+       /delete-property/ keep-power-in-suspend;
+       /delete-property/ no-1-8-v;
+       vmmc-supply = <&reg_3v3_vmmc>;
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx7-colibri-iris.dtsi b/arch/arm/boot/dts/imx7-colibri-iris.dtsi
new file mode 100644 (file)
index 0000000..175c5d4
--- /dev/null
@@ -0,0 +1,108 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022 Toradex
+ */
+
+/* Colibri AD0 to AD3 */
+&adc1 {
+       status = "okay";
+};
+
+/*
+ * The Atmel maxtouch controller uses SODIMM 28/30, also used for PWM<B>, PWM<C>, aka pwm2, pwm3.
+ * So if you enable following capacitive touch controller, disable pwm2/pwm3 first.
+ */
+&atmel_mxt_ts {
+       interrupt-parent = <&gpio1>;
+       interrupts = <9 IRQ_TYPE_EDGE_FALLING>;         /* SODIMM 28 / INT */
+       pinctrl-0 = <&pinctrl_atmel_adapter>;
+       reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;      /* SODIMM 30 / RST */
+};
+
+/* Colibri SSP */
+&ecspi3 {
+       status = "okay";
+};
+
+/* Colibri Fast Ethernet */
+&fec1 {
+       status = "okay";
+};
+
+&gpio2 {
+       /*
+        * uart25 turns the UART transceiver for UART2 and 5 on. If one wants to turn the
+        * transceiver off, that property has to be deleted and the gpio handled in userspace.
+        * The same applies to uart1_tx_on where the UART1 transceiver is turned on.
+        */
+       uart25-tx-on-hog {
+               gpio-hog;
+               gpios = <27 GPIO_ACTIVE_HIGH>; /* SODIMM 104 */
+               output-high;
+       };
+};
+
+&gpio5 {
+       uart1-tx-on-hog {
+               gpio-hog;
+               gpios = <17 GPIO_ACTIVE_HIGH>; /* SODIMM 102 */
+               output-high;
+       };
+};
+
+/* Colibri I2C: I2C3_SDA/SCL on SODIMM 194/196 */
+&i2c4 {
+       status = "okay";
+};
+
+/* Colibri PWM<A> */
+&pwm1 {
+       status = "okay";
+};
+
+/* Colibri PWM<B> */
+&pwm2 {
+       /* The pwm2 should be disabled to enable atmel_mxt_ts touchscreen for adapter. */
+       status = "okay";
+};
+
+/* Colibri PWM<C> */
+&pwm3 {
+       /* The pwm3 should be disabled to enable atmel_mxt_ts touchscreen for adapter. */
+       status = "okay";
+};
+
+/* Colibri PWM<D> */
+&pwm4 {
+       status = "okay";
+};
+
+/* M41T0M6 real time clock */
+&rtc {
+       status = "okay";
+};
+
+/* Colibri UART_A */
+&uart1 {
+       status = "okay";
+};
+
+/* Colibri UART_B */
+&uart2 {
+       status = "okay";
+};
+
+/* Colibri UART_C */
+&uart3 {
+       status = "okay";
+};
+
+/* Colibri USBC */
+&usbotg1 {
+       status = "okay";
+};
+
+/* Colibri MMC/SD */
+&usdhc1 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx7d-colibri-emmc-iris-v2.dts b/arch/arm/boot/dts/imx7d-colibri-emmc-iris-v2.dts
new file mode 100644 (file)
index 0000000..7347659
--- /dev/null
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022 Toradex
+ */
+
+/dts-v1/;
+#include "imx7d-colibri-emmc.dtsi"
+#include "imx7-colibri-iris-v2.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX7D 1GB on Iris V2 Carrier Board";
+       compatible = "toradex,colibri-imx7d-emmc-iris-v2",
+                    "toradex,colibri-imx7d-emmc",
+                    "toradex,colibri-imx7d",
+                    "fsl,imx7d";
+};
+
+/* Colibri USBH */
+&usbotg2 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx7d-colibri-emmc-iris.dts b/arch/arm/boot/dts/imx7d-colibri-emmc-iris.dts
new file mode 100644 (file)
index 0000000..5324c92
--- /dev/null
@@ -0,0 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022 Toradex
+ */
+
+/dts-v1/;
+#include "imx7d-colibri-emmc.dtsi"
+#include "imx7-colibri-iris.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX7D 1GB on Iris Carrier Board";
+       compatible = "toradex,colibri-imx7d-emmc-iris",
+                    "toradex,colibri-imx7d-emmc",
+                    "toradex,colibri-imx7d",
+                    "fsl,imx7d";
+};
+
+/* Colibri USBH */
+&usbotg2 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx7d-colibri-iris-v2.dts b/arch/arm/boot/dts/imx7d-colibri-iris-v2.dts
new file mode 100644 (file)
index 0000000..5762f51
--- /dev/null
@@ -0,0 +1,83 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022 Toradex
+ */
+
+/dts-v1/;
+#include "imx7d-colibri.dtsi"
+#include "imx7-colibri-iris-v2.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX7D on Iris V2 Carrier Board";
+       compatible = "toradex,colibri-imx7d-iris-v2",
+                    "toradex,colibri-imx7d",
+                    "fsl,imx7d";
+};
+
+&ad7879_ts {
+       status = "okay";
+};
+
+&atmel_mxt_ts {
+       status = "okay";
+};
+
+&backlight {
+       status = "okay";
+};
+
+&gpio2 {
+       /*
+        * This switches the LVDS transceiver to VESA color mapping mode.
+        */
+       lvds-color-map-hog {
+               gpio-hog;
+               gpios = <13 GPIO_ACTIVE_HIGH>; /* SODIMM 95 */
+               line-name = "LVDS_COLOR_MAP";
+               output-low;
+       };
+};
+
+&gpio7 {
+       /*
+        * This switches the LVDS transceiver to the 24-bit RGB mode.
+        */
+       lvds-rgb-mode-hog {
+               gpio-hog;
+               gpios = <2 GPIO_ACTIVE_HIGH>; /* SODIMM 63 */
+               line-name = "LVDS_RGB_MODE";
+               output-low;
+       };
+
+       /*
+        * This switches the LVDS transceiver to the single-channel
+        * output mode.
+        */
+       lvds-ch-mode-hog {
+               gpio-hog;
+               gpios = <3 GPIO_ACTIVE_HIGH>; /* SODIMM 55 */
+               line-name = "LVDS_CH_MODE";
+               output-high;
+       };
+
+       /* This turns the LVDS transceiver on */
+       lvds-power-on-hog {
+               gpio-hog;
+               gpios = <11 GPIO_ACTIVE_HIGH>; /* SODIMM 99 */
+               line-name = "LVDS_POWER_ON";
+               output-high;
+       };
+};
+
+&lcdif {
+       status = "okay";
+};
+
+&panel_dpi {
+       status = "okay";
+};
+
+/* Colibri USBH */
+&usbotg2 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx7d-colibri-iris.dts b/arch/arm/boot/dts/imx7d-colibri-iris.dts
new file mode 100644 (file)
index 0000000..9c63cb9
--- /dev/null
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022 Toradex
+ */
+
+/dts-v1/;
+#include "imx7d-colibri.dtsi"
+#include "imx7-colibri-iris.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX7D on Iris Carrier Board";
+       compatible = "toradex,colibri-imx7d-iris",
+                    "toradex,colibri-imx7d",
+                    "fsl,imx7d";
+};
+
+&ad7879_ts {
+       status = "okay";
+};
+
+/*
+ * The Atmel maxtouch controller uses SODIMM 28/30, also used for PWM<B>, PWM<C>, aka pwm2, pwm3.
+ * So if you enable following capacitive touch controller, disable pwm2/pwm3 first.
+ */
+&atmel_mxt_ts {
+       status = "disabled";
+};
+
+&backlight {
+       status = "okay";
+};
+
+&lcdif {
+       status = "okay";
+};
+
+&panel_dpi {
+       status = "okay";
+};
+
+/* Colibri PWM<B> */
+&pwm2 {
+       /* The pwm2 should be disabled to enable atmel_mxt_ts touchscreen for adapter. */
+       status = "okay";
+};
+
+/* Colibri PWM<C> */
+&pwm3 {
+       /* The pwm3 should be disabled to enable atmel_mxt_ts touchscreen for adapter. */
+       status = "okay";
+};
+
+/* Colibri USBH */
+&usbotg2 {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx7s-colibri-iris-v2.dts b/arch/arm/boot/dts/imx7s-colibri-iris-v2.dts
new file mode 100644 (file)
index 0000000..72b5c17
--- /dev/null
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022 Toradex
+ */
+
+/dts-v1/;
+#include "imx7s-colibri.dtsi"
+#include "imx7-colibri-iris-v2.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX7S on Iris V2 Carrier Board";
+       compatible = "toradex,colibri-imx7s-iris-v2",
+                    "toradex,colibri-imx7s",
+                    "fsl,imx7s";
+};
+
+&ad7879_ts {
+       status = "okay";
+};
+
+&atmel_mxt_ts {
+       status = "okay";
+};
+
+&backlight {
+       status = "okay";
+};
+
+&gpio2 {
+       /*
+        * This switches the LVDS transceiver to VESA color mapping mode.
+        */
+       lvds-color-map-hog {
+               gpio-hog;
+               gpios = <13 GPIO_ACTIVE_HIGH>; /* SODIMM 95 */
+               line-name = "LVDS_COLOR_MAP";
+               output-low;
+       };
+};
+
+&gpio7 {
+       /*
+        * This switches the LVDS transceiver to the 24-bit RGB mode.
+        */
+       lvds-rgb-mode-hog {
+               gpio-hog;
+               gpios = <2 GPIO_ACTIVE_HIGH>; /* SODIMM 63 */
+               line-name = "LVDS_RGB_MODE";
+               output-low;
+       };
+
+       /*
+        * This switches the LVDS transceiver to the single-channel
+        * output mode.
+        */
+       lvds-ch-mode-hog {
+               gpio-hog;
+               gpios = <3 GPIO_ACTIVE_HIGH>; /* SODIMM 55 */
+               line-name = "LVDS_CH_MODE";
+               output-high;
+       };
+
+       /* This turns the LVDS transceiver on */
+       lvds-power-on-hog {
+               gpio-hog;
+               gpios = <11 GPIO_ACTIVE_HIGH>; /* SODIMM 99 */
+               line-name = "LVDS_POWER_ON";
+               output-high;
+       };
+};
+
+&lcdif {
+       status = "okay";
+};
+
+&panel_dpi {
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/imx7s-colibri-iris.dts b/arch/arm/boot/dts/imx7s-colibri-iris.dts
new file mode 100644 (file)
index 0000000..26ba72c
--- /dev/null
@@ -0,0 +1,51 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Copyright 2022 Toradex
+ */
+
+/dts-v1/;
+#include "imx7s-colibri.dtsi"
+#include "imx7-colibri-iris.dtsi"
+
+/ {
+       model = "Toradex Colibri iMX7S on Iris Carrier Board";
+       compatible = "toradex,colibri-imx7s-iris",
+                    "toradex,colibri-imx7s",
+                    "fsl,imx7s";
+};
+
+&ad7879_ts {
+       status = "okay";
+};
+
+/*
+ * The Atmel maxtouch controller uses SODIMM 28/30, also used for PWM<B>, PWM<C>, aka pwm2, pwm3.
+ * So if you enable following capacitive touch controller, disable pwm2/pwm3 first.
+ */
+&atmel_mxt_ts {
+       status = "disabled";
+};
+
+&backlight {
+       status = "okay";
+};
+
+&lcdif {
+       status = "okay";
+};
+
+&panel_dpi {
+       status = "okay";
+};
+
+/* Colibri PWM<B> */
+&pwm2 {
+       /* The pwm2 should be disabled to enable atmel_mxt_ts touchscreen for adapter. */
+       status = "okay";
+};
+
+/* Colibri PWM<C> */
+&pwm3 {
+       /* The pwm3 should be disabled to enable atmel_mxt_ts touchscreen for adapter. */
+       status = "okay";
+};