From 0bd25e0b6b72989d2b279ac6688b3c794f2701d5 Mon Sep 17 00:00:00 2001
From: Nicola Sparnacci <nicola.sparnacci@seco.com>
Date: Fri, 23 Feb 2024 09:26:05 +0100
Subject: [PATCH] [C57][DTS] Enable LVDS backlight

---
 arch/arm64/boot/dts/seco/overlays/Makefile    |   2 +
 arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts | 343 ++++++++++++++----
 2 files changed, 274 insertions(+), 71 deletions(-)

diff --git a/arch/arm64/boot/dts/seco/overlays/Makefile b/arch/arm64/boot/dts/seco/overlays/Makefile
index c2d4539af2d5fb..c60774ef37a3ef 100644
--- a/arch/arm64/boot/dts/seco/overlays/Makefile
+++ b/arch/arm64/boot/dts/seco/overlays/Makefile
@@ -51,6 +51,8 @@ dtbo-$(CONFIG_ARCH_MXC) += \
 	seco-imx8mn-c72-edp.dtbo\
 	seco-imx8mn-c72-lvds-dual-215.dtbo\
 	seco-imx8mn-c72-lvds-dual-156.dtbo
+	seco-imx8mn-c72-edp.dtbo \
+	seco-imx8qxp-c57-lvds-1024x600.dtbo 
 
 	# seco-imx8qm-c26-dp.dtbo\
 	# seco-imx8qm-c26-lvds-single.dtbo\
diff --git a/arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts b/arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts
index 4fb20c7e4458db..c09007d2990529 100644
--- a/arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts
+++ b/arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts
@@ -29,13 +29,26 @@
     };
 
     aliases {
+        ethernet0 = &fec1;
+        ethernet1 = &fec2;
+        dsi_phy0 = &mipi0_dphy;
+        dsi_phy1 = &mipi1_dphy;
+        mipi_dsi0 = &mipi0_dsi_host;
+        mipi_dsi1 = &mipi1_dsi_host;
+        ldb0 = &ldb1;
+        ldb1 = &ldb2;
         serial0 = &lpuart0;
         serial1 = &lpuart1;
         serial2 = &lpuart2;
         serial3 = &lpuart3;
         mmc0 = &usdhc1;
-        ethernet0 = &fec1;
-        ethernet1 = &fec2;
+        i2c5 = &i2c0_mipi_lvds0;
+        i2c6 = &i2c0_mipi_lvds1;
+        gpio0 = &gpio0;
+        gpio1 = &gpio1;
+        gpio2 = &gpio2;
+        gpio3 = &gpio3;
+        gpio4 = &gpio4;
     };
 
     cpus {
@@ -60,13 +73,142 @@
         interrupt-affinity = <&A35_0>, <&A35_1>, <&A35_2>, <&A35_3>;
     };
 
+    regulators {
+        compatible = "simple-bus";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        /*cn15 connector*/
+        reg_en_bckl1_drv: en_bckl_drv {
+                        status = "disabled";
+                        compatible = "regulator-fixed";
+                        regulator-name = "EN_BCKL_DRV";
+                        regulator-min-microvolt = <3300000>;
+                        regulator-max-microvolt = <3300000>;
+                        gpio = <&gpio3 1 GPIO_ACTIVE_HIGH>;
+                        enable-active-high;
+                        // startup-delay-us = <40000>;\
+                        regulator-boot-on;
+                        regulator-always-on;
+                };
+        reg_backlight_vcc_bkl_sw: backlight_vcc_bkl_sw {
+                        compatible = "regulator-fixed";
+                        regulator-name = "backlight_vcc_bkl_sw";
+                        regulator-min-microvolt = <3300000>;
+                        regulator-max-microvolt = <3300000>;
+                        //gpio = <&gpio0 19 GPIO_ACTIVE_HIGH>; /* This is configured by u-boot */
+                        enable-active-high;
+                        regulator-boot-on;
+                        regulator-always-on;
+                };
+
+        reg_en_vcc_lcd: en_vcc_lcd {
+                        compatible = "regulator-fixed";
+                        regulator-name = "EN_VCC_LCD";
+                        regulator-min-microvolt = <3300000>;
+                        regulator-max-microvolt = <3300000>;
+                        gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+                        enable-active-high;
+                        regulator-boot-on;
+                        regulator-always-on;
+                };
+
+        reg_backlight_on: reg_backlight_on {
+                        compatible = "regulator-fixed";
+                        regulator-name = "BACKLIGHT_ON";
+                        regulator-min-microvolt = <3300000>;
+                        regulator-max-microvolt = <3300000>;
+                        gpio = <&gpio0 13 GPIO_ACTIVE_HIGH>;
+                        enable-active-high;
+                        regulator-boot-on;
+                        regulator-always-on;
+                };
+
+        reg_lvds_panel_on: lvds_panel_on {
+                        compatible = "regulator-fixed";
+                        regulator-name = "LVDS_PANEL_ON";
+                        regulator-min-microvolt = <3300000>;
+                        regulator-max-microvolt = <3300000>;
+                        gpio = <&gpio0 15 GPIO_ACTIVE_HIGH>;
+                        enable-active-high;
+                        regulator-always-on;
+                };
+        mux_sel: mux_sel {
+                        compatible = "regulator-fixed";
+                        regulator-name = "MUX_SEL";
+                        regulator-min-microvolt = <3300000>;
+                        regulator-max-microvolt = <3300000>;
+                        gpio = <&gpio3 22 GPIO_ACTIVE_LOW>;
+                        regulator-always-on;
+                };
+    };
+
+    /* Both Panels backlight + MP3385AGR */
+    lvds_backlight0 {
+        compatible = "mp3385-backlight";
+        pwms = <&pwm_mipi_lvds0 0 100000 0>;
+
+        brightness-levels = < 0  1  2  3  4  5  6  7  8  9
+                     10 11 12 13 14 15 16 17 18 19
+                     20 21 22 23 24 25 26 27 28 29
+                     30 31 32 33 34 35 36 37 38 39
+                     40 41 42 43 44 45 46 47 48 49
+                     50 51 52 53 54 55 56 57 58 59
+                     60 61 62 63 64 65 66 67 68 69
+                     70 71 72 73 74 75 76 77 78 79
+                     80 81 82 83 84 85 86 87 88 89
+                     90 91 92 93 94 95 96 97 98 99
+                    100>;
+        default-brightness-level = <90>;
+        client-device  = <&mp3385_led_driver>;
+    };
+
+    /* Backlight on CN25 (pin30) */
+    lvds_backlight1 {
+        compatible = "pwm-backlight";
+        pwms = <&pwm_mipi_lvds1 0 100000 0>;
+
+        brightness-levels = < 0  1  2  3  4  5  6  7  8  9
+                     10 11 12 13 14 15 16 17 18 19
+                     20 21 22 23 24 25 26 27 28 29
+                     30 31 32 33 34 35 36 37 38 39
+                     40 41 42 43 44 45 46 47 48 49
+                     50 51 52 53 54 55 56 57 58 59
+                     60 61 62 63 64 65 66 67 68 69
+                     70 71 72 73 74 75 76 77 78 79
+                     80 81 82 83 84 85 86 87 88 89
+                     90 91 92 93 94 95 96 97 98 99
+                    100>;
+        default-brightness-level = <90>;
+    };
 };
 
 
+
 &iomuxc {
     pinctrl-names = "default";
+    pinctrl-0 = <&pinctrl_hog>;
 
     imx8qxp-mek {
+        pinctrl_hog: hoggrp {
+            fsl,pins = <
+                IMX8QXP_COMP_CTL_GPIO_1V8_3V3_GPIORHB_PAD	0x000514a0
+
+                /*BACKLIGHT on - EN_VCC_BKL_SW*/
+                IMX8QXP_MCLK_IN0_LSIO_GPIO0_IO19     0x00000021 /* bckl gpio RevB */
+                IMX8QXP_CSI_RESET_LSIO_GPIO3_IO03    0x00000021 /* bckl gpio RevC */
+                /*DISPLAY_BLK_ON*/
+                IMX8QXP_SPI3_SCK_LSIO_GPIO0_IO13     0x00000021
+                /*LVDS PANEL ON*/
+                IMX8QXP_SPI3_SDI_LSIO_GPIO0_IO15 	 0x00000021
+                /*MUX_SEL LVDS*/
+                IMX8QXP_QSPI0B_DQS_LSIO_GPIO3_IO22	 0x00000021
+                /*EN_BCKL_DRV*/
+                IMX8QXP_CSI_MCLK_LSIO_GPIO3_IO01	0x00000021
+                /*EN_VCC_LCD_SW*/
+                IMX8QXP_SPDIF0_EXT_CLK_LSIO_GPIO0_IO12 0x00000021
+            >;
+        };
         
         pinctrl_lpuart0: lpuart0grp {
             fsl,pins = <
@@ -89,6 +231,67 @@
                 IMX8QXP_FLEXCAN2_RX_ADMA_UART3_RX	0x06000020
             >;
         };
+        pinctrl_fec1: fec1grp {
+            fsl,pins = <
+                IMX8QXP_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB0_PAD	0x000014a0
+                IMX8QXP_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB1_PAD	0x000014a0
+                IMX8QXP_ENET0_MDC_CONN_ENET0_MDC			    0x06000020
+                IMX8QXP_ENET0_MDIO_CONN_ENET0_MDIO			    0x06000020
+                IMX8QXP_ENET0_RGMII_TX_CTL_CONN_ENET0_RGMII_TX_CTL	0x00000061
+                IMX8QXP_ENET0_RGMII_TXC_CONN_ENET0_RGMII_TXC	0x00000061
+                IMX8QXP_ENET0_RGMII_TXD0_CONN_ENET0_RGMII_TXD0	0x00000061
+                IMX8QXP_ENET0_RGMII_TXD1_CONN_ENET0_RGMII_TXD1	0x00000061
+                IMX8QXP_ENET0_RGMII_TXD2_CONN_ENET0_RGMII_TXD2	0x00000061
+                IMX8QXP_ENET0_RGMII_TXD3_CONN_ENET0_RGMII_TXD3	0x00000061
+                IMX8QXP_ENET0_RGMII_RXC_CONN_ENET0_RGMII_RXC	0x00000061
+                IMX8QXP_ENET0_RGMII_RX_CTL_CONN_ENET0_RGMII_RX_CTL	0x00000061
+                IMX8QXP_ENET0_RGMII_RXD0_CONN_ENET0_RGMII_RXD0	0x00000061
+                IMX8QXP_ENET0_RGMII_RXD1_CONN_ENET0_RGMII_RXD1	0x00000061
+                IMX8QXP_ENET0_RGMII_RXD2_CONN_ENET0_RGMII_RXD2	0x00000061
+                IMX8QXP_ENET0_RGMII_RXD3_CONN_ENET0_RGMII_RXD3	0x00000061
+                /*RST ENET0 GPIO0_IO14*/
+                IMX8QXP_SPI3_SDO_LSIO_GPIO0_IO14  		        0x00000021
+
+            >;
+        };
+
+        pinctrl_fec2: fec2grp {
+            fsl,pins = <
+                IMX8QXP_ESAI0_SCKR_CONN_ENET1_RGMII_TX_CTL	0x00000060
+                IMX8QXP_ESAI0_FSR_CONN_ENET1_RGMII_TXC		0x00000060
+                IMX8QXP_ESAI0_TX4_RX1_CONN_ENET1_RGMII_TXD0	0x00000060
+                IMX8QXP_ESAI0_TX5_RX0_CONN_ENET1_RGMII_TXD1	0x00000060
+                IMX8QXP_ESAI0_FST_CONN_ENET1_RGMII_TXD2		0x00000060
+                IMX8QXP_ESAI0_SCKT_CONN_ENET1_RGMII_TXD3	0x00000060
+                IMX8QXP_ESAI0_TX0_CONN_ENET1_RGMII_RXC		0x00000060
+                IMX8QXP_SPDIF0_TX_CONN_ENET1_RGMII_RX_CTL	0x00000060
+                IMX8QXP_SPDIF0_RX_CONN_ENET1_RGMII_RXD0		0x00000060
+                IMX8QXP_ESAI0_TX3_RX2_CONN_ENET1_RGMII_RXD1	0x00000060
+                IMX8QXP_ESAI0_TX2_RX3_CONN_ENET1_RGMII_RXD2	0x00000060
+                IMX8QXP_ESAI0_TX1_CONN_ENET1_RGMII_RXD3		0x00000060
+                /*RST ENET1 GPIO3_IO13*/
+                IMX8QXP_QSPI0A_DQS_LSIO_GPIO3_IO13   		0x00000021
+            >;
+        };
+
+        pinctrl_lpi2c3: lpi2cgrp {
+            fsl,pins = <
+                IMX8QXP_SPI3_CS1_ADMA_I2C3_SCL	0x0600004c
+                IMX8QXP_MCLK_IN1_ADMA_I2C3_SDA	0x0600004c
+            >;
+        };
+
+        pinctrl_pwm_mipi_lvds0: mipi_lvds0_pwm_grp {
+            fsl,pins = <
+                IMX8QXP_MIPI_DSI0_GPIO0_00_MIPI_DSI0_PWM0_OUT	0x00000020
+            >;
+        };
+
+        pinctrl_pwm_mipi_lvds1: mipi_lvds1_pwm_grp {
+            fsl,pins = <
+                IMX8QXP_MIPI_DSI1_GPIO0_00_MIPI_DSI1_PWM0_OUT	0x00000020
+            >;
+        };   
 
         pinctrl_usdhc1: usdhc1grp {
             fsl,pins = <
@@ -137,51 +340,21 @@
                 IMX8QXP_EMMC0_STROBE_CONN_EMMC0_STROBE	0x00000041
             >;
         };
-        pinctrl_fec1: fec1grp {
-            fsl,pins = <
-                IMX8QXP_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB0_PAD	0x000014a0
-                IMX8QXP_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB1_PAD	0x000014a0
-                IMX8QXP_ENET0_MDC_CONN_ENET0_MDC			    0x06000020
-                IMX8QXP_ENET0_MDIO_CONN_ENET0_MDIO			    0x06000020
-                IMX8QXP_ENET0_RGMII_TX_CTL_CONN_ENET0_RGMII_TX_CTL	0x00000061
-                IMX8QXP_ENET0_RGMII_TXC_CONN_ENET0_RGMII_TXC	0x00000061
-                IMX8QXP_ENET0_RGMII_TXD0_CONN_ENET0_RGMII_TXD0	0x00000061
-                IMX8QXP_ENET0_RGMII_TXD1_CONN_ENET0_RGMII_TXD1	0x00000061
-                IMX8QXP_ENET0_RGMII_TXD2_CONN_ENET0_RGMII_TXD2	0x00000061
-                IMX8QXP_ENET0_RGMII_TXD3_CONN_ENET0_RGMII_TXD3	0x00000061
-                IMX8QXP_ENET0_RGMII_RXC_CONN_ENET0_RGMII_RXC	0x00000061
-                IMX8QXP_ENET0_RGMII_RX_CTL_CONN_ENET0_RGMII_RX_CTL	0x00000061
-                IMX8QXP_ENET0_RGMII_RXD0_CONN_ENET0_RGMII_RXD0	0x00000061
-                IMX8QXP_ENET0_RGMII_RXD1_CONN_ENET0_RGMII_RXD1	0x00000061
-                IMX8QXP_ENET0_RGMII_RXD2_CONN_ENET0_RGMII_RXD2	0x00000061
-                IMX8QXP_ENET0_RGMII_RXD3_CONN_ENET0_RGMII_RXD3	0x00000061
-                /*RST ENET0 GPIO0_IO14*/
-                IMX8QXP_SPI3_SDO_LSIO_GPIO0_IO14  		        0x00000021
-
-            >;
-        };
-
-        pinctrl_fec2: fec2grp {
-            fsl,pins = <
-                IMX8QXP_ESAI0_SCKR_CONN_ENET1_RGMII_TX_CTL	0x00000060
-                IMX8QXP_ESAI0_FSR_CONN_ENET1_RGMII_TXC		0x00000060
-                IMX8QXP_ESAI0_TX4_RX1_CONN_ENET1_RGMII_TXD0	0x00000060
-                IMX8QXP_ESAI0_TX5_RX0_CONN_ENET1_RGMII_TXD1	0x00000060
-                IMX8QXP_ESAI0_FST_CONN_ENET1_RGMII_TXD2		0x00000060
-                IMX8QXP_ESAI0_SCKT_CONN_ENET1_RGMII_TXD3	0x00000060
-                IMX8QXP_ESAI0_TX0_CONN_ENET1_RGMII_RXC		0x00000060
-                IMX8QXP_SPDIF0_TX_CONN_ENET1_RGMII_RX_CTL	0x00000060
-                IMX8QXP_SPDIF0_RX_CONN_ENET1_RGMII_RXD0		0x00000060
-                IMX8QXP_ESAI0_TX3_RX2_CONN_ENET1_RGMII_RXD1	0x00000060
-                IMX8QXP_ESAI0_TX2_RX3_CONN_ENET1_RGMII_RXD2	0x00000060
-                IMX8QXP_ESAI0_TX1_CONN_ENET1_RGMII_RXD3		0x00000060
-                /*RST ENET1 GPIO3_IO13*/
-                IMX8QXP_QSPI0A_DQS_LSIO_GPIO3_IO13   		0x00000021
-            >;
-        };
+        
     };
 };
 
+gpio0: &lsio_gpio0 {
+};
+gpio1: &lsio_gpio1 {
+};
+gpio2: &lsio_gpio2 {
+};
+gpio3: &lsio_gpio3 {
+};
+gpio4: &lsio_gpio4 {
+};
+
 &lpuart0 {
     pinctrl-names = "default";
     pinctrl-0 = <&pinctrl_lpuart0>;
@@ -201,29 +374,6 @@
     status = "okay";
 };
 
-&usdhc1 {
-    pinctrl-names = "default", "state_100mhz", "state_200mhz";
-    pinctrl-0 = <&pinctrl_usdhc1>;
-    pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
-    pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
-    bus-width = <8>;
-    non-removable;
-    status = "okay";
-};
-
-&usb3_phy {
-    status = "okay";
-};
-
-&usbotg3 {
-    status = "okay";
-};
-
-&usbotg3_cdns3 {
-    dr_mode = "host";
-    status = "okay";
-};
-
 &fec1 {
     status = "okay";
     pinctrl-names = "default";
@@ -232,10 +382,10 @@
     phy-handle = <&ethphy0>;
     fsl,magic-packet;
 
-    phy-reset-gpios = <&lsio_gpio0 14 GPIO_ACTIVE_HIGH>;
+    phy-reset-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
     phy-reset-active-high;
-    phy-reset-duration = <2>;    
-
+    phy-reset-duration = <2>;
+    
     mdio {
         #address-cells = <1>;
         #size-cells = <0>;
@@ -271,7 +421,58 @@
     phy-mode = "rgmii-id";
     phy-handle = <&ethphy1>;
     fsl,magic-packet;
-    phy-reset-gpios = <&lsio_gpio3 13 GPIO_ACTIVE_HIGH>;
+    phy-reset-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>;
     phy-reset-active-high;
     phy-reset-duration = <2>;
+};
+
+&i2c3 {
+    #address-cells = <1>;
+    #size-cells = <0>;
+    clock-frequency = <100000>;
+    pinctrl-names = "default";
+    pinctrl-0 = <&pinctrl_lpi2c3>;
+    status = "okay";
+
+    mp3385_led_driver: mp3385@31 {
+        status = "okay";
+        compatible = "seco,led_mp3385";
+        reg = <0x31>;
+        reg-val = <0xf1 0xc4 0x3b 0x03 0x7f 0xe0 0x01>;
+    };
+};
+
+&usdhc1 {
+    pinctrl-names = "default", "state_100mhz", "state_200mhz";
+    pinctrl-0 = <&pinctrl_usdhc1>;
+    pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+    pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+    bus-width = <8>;
+    non-removable;
+    status = "okay";
+};
+
+&usb3_phy {
+    status = "okay";
+};
+
+&usbotg3 {
+    status = "okay";
+};
+
+&usbotg3_cdns3 {
+    dr_mode = "host";
+    status = "okay";
+};
+
+&pwm_mipi_lvds0 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&pinctrl_pwm_mipi_lvds0>;
+    status = "okay";
+};
+
+&pwm_mipi_lvds1 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&pinctrl_pwm_mipi_lvds1>;
+    status = "okay";
 };
\ No newline at end of file
-- 
GitLab