ARM: dts: imx7-colibri: overhaul display/touch functionality
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>
Mon, 16 May 2022 13:47:11 +0000 (15:47 +0200)
committerShawn Guo <shawnguo@kernel.org>
Sat, 11 Jun 2022 09:12:53 +0000 (17:12 +0800)
Rename display interface to match other modules to make it easier to
use device tree overlays.

The parallel RGB interface (lcdif) and all related stuff turn on in a
device tree overlay. Keep them disabled in the main devicetree.
As these subsystems are provided by module and not a part of boards,
move their definitions into the module-level devicetree.

Disable ad7879 touchscreen which turns on in a devic tree overlay.
Remains it disabled in the main devicetree.

Move Atmel MXT capacitive touch controller device tree nodes from
carrier board to module level and add iomux pinctl groups for both the
Capacitive Touch Adapter (using SODIMM 28/30) and the capacitive touch
connector as found on later carrier boards (using SODIMM 106/107).

Keep touchscreen and display nodes enabled for NAND based i.MX 7
modules, since device tree overlays are not yet supported. For the
Colibri Evaluation Board keep the Capacitive Touch Adapter node
disabled and PWM2, PWM3 enabled instead.

For eMMC based modules keep nodes disabled to work in conjunction with
device tree overlays.

Add the iomuxc pinctrl group for the LVDS transceiver related signals to
use it in a device tree overlay.

While at it also alphabetically re=order them properties.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm/boot/dts/imx7-colibri-aster.dtsi
arch/arm/boot/dts/imx7-colibri-eval-v3.dtsi
arch/arm/boot/dts/imx7-colibri.dtsi
arch/arm/boot/dts/imx7d-colibri-aster.dts
arch/arm/boot/dts/imx7d-colibri-eval-v3.dts
arch/arm/boot/dts/imx7s-colibri-aster.dts
arch/arm/boot/dts/imx7s-colibri-eval-v3.dts

index b770fc9379707b6dc02492b0ef1c982831c3b26d..950b4e5f6cf4c91ca6a747bed701a5033d0041b1 100644 (file)
@@ -4,10 +4,6 @@
  *
  */
 
-
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/pwm/pwm.h>
-
 / {
        chosen {
                stdout-path = "serial0:115200n8";
                };
        };
 
-       panel: panel {
-               compatible = "edt,et057090dhu";
-               backlight = <&bl>;
-               power-supply = <&reg_3v3>;
-
-               port {
-                       panel_in: endpoint {
-                               remote-endpoint = <&lcdif_out>;
-                       };
-               };
-       };
-
        reg_3v3: regulator-3v3 {
                compatible = "regulator-fixed";
                regulator-name = "3.3V";
        status = "disabled";
 };
 
-&bl {
-       brightness-levels = <0 4 8 16 32 64 128 255>;
-       default-brightness-level = <6>;
-       power-supply = <&reg_3v3>;
-       status = "okay";
-};
-
 &fec1 {
        status = "okay";
 };
 &i2c4 {
        status = "okay";
 
-       /* Microchip/Atmel maxtouch controller */
-       touchscreen@4a {
-               compatible = "atmel,maxtouch";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_gpiotouch>;
-               reg = <0x4a>;
-               interrupt-parent = <&gpio2>;
-               interrupts = <15 IRQ_TYPE_EDGE_FALLING>;        /* SODIMM 107 */
-               reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;      /* SODIMM 106 */
-       };
-
        /* M41T0M6 real time clock on carrier board */
        rtc: rtc@68 {
                compatible = "st,m41t0";
        };
 };
 
-&iomuxc {
-       pinctrl_gpiotouch: touchgpios {
-               fsl,pins = <
-                       MX7D_PAD_EPDC_DATA15__GPIO2_IO15        0x74
-                       MX7D_PAD_EPDC_BDR0__GPIO2_IO28          0x14
-               >;
-       };
-};
-
-&lcdif {
-       status = "okay";
-
-       port {
-               lcdif_out: endpoint {
-                       remote-endpoint = <&panel_in>;
-               };
-       };
-};
-
 &pwm1 {
        status = "okay";
 };
index 3b9df8c82ae3073634988f20a0b133ec7df0991d..d6fa7422296032c2e60839aec67ae1f7c4df09cc 100644 (file)
                };
        };
 
-       panel: panel {
-               compatible = "edt,et057090dhu";
-               backlight = <&bl>;
-               power-supply = <&reg_3v3>;
-
-               port {
-                       panel_in: endpoint {
-                               remote-endpoint = <&lcdif_out>;
-                       };
-               };
-       };
-
        reg_3v3: regulator-3v3 {
                compatible = "regulator-fixed";
                regulator-name = "3.3V";
        };
 };
 
-&bl {
-       brightness-levels = <0 4 8 16 32 64 128 255>;
-       default-brightness-level = <6>;
-       power-supply = <&reg_3v3>;
-
-       status = "okay";
-};
-
 &adc1 {
        status = "okay";
 };
        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 */
+       status = "disabled";
+};
+
 &ecspi3 {
        status = "okay";
 
 &i2c4 {
        status = "okay";
 
-       /*
-        * Touchscreen is using SODIMM 28/30, also used for PWM<B>, PWM<C>,
-        * aka pwm2, pwm3. so if you enable touchscreen, disable the pwms
-        */
-       touchscreen@4a {
-               compatible = "atmel,maxtouch";
-               pinctrl-names = "default";
-               pinctrl-0 = <&pinctrl_gpiotouch>;
-               reg = <0x4a>;
-               interrupt-parent = <&gpio1>;
-               interrupts = <9 IRQ_TYPE_EDGE_FALLING>;         /* SODIMM 28 */
-               reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;      /* SODIMM 30 */
-               status = "disabled";
-       };
-
        /* M41T0M6 real time clock on carrier board */
        rtc: rtc@68 {
                compatible = "st,m41t0";
        };
 };
 
-&lcdif {
-       status = "okay";
-
-       port {
-               lcdif_out: endpoint {
-                       remote-endpoint = <&panel_in>;
-               };
-       };
-};
-
 &pwm1 {
        status = "okay";
 };
        vmmc-supply = <&reg_3v3>;
        status = "okay";
 };
-
-&iomuxc {
-       pinctrl_gpiotouch: touchgpios {
-               fsl,pins = <
-                       MX7D_PAD_GPIO1_IO09__GPIO1_IO9          0x74
-                       MX7D_PAD_GPIO1_IO10__GPIO1_IO10         0x14
-               >;
-       };
-};
index f1c60b0cb143edad66f9376f34b0a856bfc86187..e20b0977f38f98c037b27ba84c5f57c560170bfb 100644 (file)
@@ -3,13 +3,32 @@
  * Copyright 2016-2020 Toradex
  */
 
+#include <dt-bindings/pwm/pwm.h>
+
 / {
-       bl: backlight {
+       backlight: backlight {
+               brightness-levels = <0 45 63 88 119 158 203 255>;
                compatible = "pwm-backlight";
+               default-brightness-level = <4>;
+               enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_gpio_bl_on>;
-               pwms = <&pwm1 0 5000000 0>;
-               enable-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_module_3v3>;
+               pwms = <&pwm1 0 6666667 PWM_POLARITY_INVERTED>;
+               status = "disabled";
+       };
+
+       panel_dpi: panel-dpi {
+               backlight = <&backlight>;
+               compatible = "edt,et057090dhu";
+               power-supply = <&reg_3v3>;
+               status = "disabled";
+
+               port {
+                       lcd_panel_in: endpoint {
+                               remote-endpoint = <&lcdif_out>;
+                       };
+               };
        };
 
        reg_module_3v3: regulator-module-3v3 {
                VDDD-supply = <&reg_DCDC3>;
        };
 
-       ad7879@2c {
+       ad7879_ts: touchscreen@2c {
+               adi,acquisition-time = /bits/ 8 <1>;
+               adi,averaging = /bits/ 8 <1>;
+               adi,conversion-interval = /bits/ 8 <255>;
+               adi,first-conversion-delay = /bits/ 8 <3>;
+               adi,median-filter-size = /bits/ 8 <2>;
+               adi,resistance-plate-x = <120>;
                compatible = "adi,ad7879-1";
-               reg = <0x2c>;
                interrupt-parent = <&gpio1>;
                interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
+               reg = <0x2c>;
                touchscreen-max-pressure = <4096>;
-               adi,resistance-plate-x = <120>;
-               adi,first-conversion-delay = /bits/ 8 <3>;
-               adi,acquisition-time = /bits/ 8 <1>;
-               adi,median-filter-size = /bits/ 8 <2>;
-               adi,averaging = /bits/ 8 <1>;
-               adi,conversion-interval = /bits/ 8 <255>;
+               status = "disabled";
        };
 
        pmic@33 {
        pinctrl-1 = <&pinctrl_i2c4_recovery>;
        scl-gpios = <&gpio7 8 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
        sda-gpios = <&gpio7 9 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
+       status = "disabled";
+
+       /* Atmel maxtouch controller */
+       atmel_mxt_ts: touchscreen@4a {
+               compatible = "atmel,maxtouch";
+               interrupt-parent = <&gpio2>;
+               interrupts = <15 IRQ_TYPE_EDGE_FALLING>;        /* SODIMM 107 / INT */
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_atmel_connector>;
+               reg = <0x4a>;
+               reset-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;      /* SODIMM 106 / RST */
+               status = "disabled";
+       };
 };
 
 &lcdif {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_lcdif_dat
                     &pinctrl_lcdif_ctrl>;
+       status = "disabled";
+
+       port {
+               lcdif_out: endpoint {
+                       remote-endpoint = <&lcd_panel_in>;
+               };
+       };
 };
 
 &pwm1 {
 &iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_gpio1 &pinctrl_gpio2 &pinctrl_gpio3 &pinctrl_gpio4
-                    &pinctrl_gpio7 &pinctrl_usbc_det>;
+                    &pinctrl_usbc_det>;
+
+       /*
+        * Atmel MXT touchsceen + Capacitive Touch Adapter
+        * NOTE: This pin group conflicts with pin groups pinctrl_pwm2/pinctrl_pwm3.
+        * Don't use them simultaneously.
+        */
+       pinctrl_atmel_adapter: atmelconnectorgrp {
+               fsl,pins = <
+                       MX7D_PAD_GPIO1_IO09__GPIO1_IO9          0x74 /* SODIMM 28 / INT */
+                       MX7D_PAD_GPIO1_IO10__GPIO1_IO10         0x14 /* SODIMM 30 / RST */
+               >;
+       };
+
+       /* Atmel MXT touchsceen + boards with built-in Capacitive Touch Connector */
+       pinctrl_atmel_connector: atmeladaptergrp {
+               fsl,pins = <
+                       MX7D_PAD_EPDC_BDR0__GPIO2_IO28          0x14 /* SODIMM 106 / RST */
+                       MX7D_PAD_EPDC_DATA15__GPIO2_IO15        0x74 /* SODIMM 107 / INT */
+               >;
+       };
 
        pinctrl_gpio1: gpio1-grp {
                fsl,pins = <
                        MX7D_PAD_EPDC_DATA09__GPIO2_IO9         0x14 /* SODIMM 89 */
                        MX7D_PAD_EPDC_DATA08__GPIO2_IO8         0x74 /* SODIMM 91 */
                        MX7D_PAD_LCD_RESET__GPIO3_IO4           0x14 /* SODIMM 93 */
-                       MX7D_PAD_EPDC_DATA13__GPIO2_IO13        0x14 /* SODIMM 95 */
-                       MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11    0x14 /* SODIMM 99 */
                        MX7D_PAD_EPDC_DATA10__GPIO2_IO10        0x74 /* SODIMM 105 */
                        MX7D_PAD_EPDC_DATA00__GPIO2_IO0         0x14 /* SODIMM 111 */
                        MX7D_PAD_EPDC_DATA01__GPIO2_IO1         0x14 /* SODIMM 113 */
                >;
        };
 
+       pinctrl_lvds_transceiver: lvdstx {
+               fsl,pins = <
+                       MX7D_PAD_ENET1_RGMII_RD2__GPIO7_IO2     0x14 /* SODIMM 63 */
+                       MX7D_PAD_ENET1_RGMII_RD3__GPIO7_IO3     0x74 /* SODIMM 55 */
+                       MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11    0x14 /* SODIMM 99 */
+                       MX7D_PAD_EPDC_DATA13__GPIO2_IO13        0x14 /* SODIMM 95 */
+               >;
+       };
+
        pinctrl_pwm1: pwm1-grp {
                fsl,pins = <
                        MX7D_PAD_GPIO1_IO08__PWM1_OUT           0x79
index f3f0537d5a37538f8b3938d2e16092364dbce2cf..ce0e6bb7db37ce7e5e424f556faeb55794ae53f5 100644 (file)
                     "fsl,imx7d";
 };
 
+&ad7879_ts {
+       status = "okay";
+};
+
+&atmel_mxt_ts {
+       status = "okay";
+};
+
+&backlight {
+       status = "okay";
+};
+
+&lcdif {
+       status = "okay";
+};
+
+&panel_dpi {
+       status = "okay";
+};
+
 &usbotg2 {
        vbus-supply = <&reg_usbh_vbus>;
        status = "okay";
index 87b132bcd272dabac01b77630b0bca7a7511bec7..c610c50c003a8fe23f97912a22f618bc41128e24 100644 (file)
                     "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";
+};
+
+&pwm2 {
+       status = "okay";
+};
+
+&pwm3 {
+       status = "okay";
+};
+
 &usbotg2 {
        vbus-supply = <&reg_usbh_vbus>;
        status = "okay";
index fca4e0a95c1b3f91d9daac78c15674c8399c31d1..87f9e0e079a86c3ca068d859037f19dd9b103a92 100644 (file)
        compatible = "toradex,colibri-imx7s-aster", "toradex,colibri-imx7s",
                     "fsl,imx7s";
 };
+
+&ad7879_ts {
+       status = "okay";
+};
+
+&atmel_mxt_ts {
+       status = "okay";
+};
+
+&backlight {
+       status = "okay";
+};
+
+&lcdif {
+       status = "okay";
+};
+
+&panel_dpi {
+       status = "okay";
+};
index aa70d3f2e2e2f88ad77b78783b02354c0ad7ffae..81956c16b95bcb03b4cda904a2dd57a867d4696f 100644 (file)
        compatible = "toradex,colibri-imx7s-eval-v3", "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";
+};
+
+&pwm2 {
+       status = "okay";
+};
+
+&pwm3 {
+       status = "okay";
+};