From: Ian Ray <ian....@ge.com>

Enable DM_VIDEO for mx53ppd.  This also requires DM_REGULATOR_FIXED and
DM_PWM for the backlight, and `failbootcmd' is changed to use lcdputs.

Remove unused MX53PPD_LCD_POWER.

Signed-off-by: Ian Ray <ian....@ge.com>
Signed-off-by: Robert Beckett <bob.beck...@collabora.com>
---
 arch/arm/dts/imx53-ppd.dts       | 70 +++++++++++++++++++++++
 board/ge/mx53ppd/Makefile        |  2 +-
 board/ge/mx53ppd/mx53ppd.c       |  2 -
 board/ge/mx53ppd/mx53ppd_video.c | 96 ++++++++++++++++++--------------
 board/ge/mx53ppd/ppd_gpio.h      |  2 -
 configs/mx53ppd_defconfig        |  5 +-
 include/configs/mx53ppd.h        | 11 ++--
 7 files changed, 133 insertions(+), 55 deletions(-)

diff --git a/arch/arm/dts/imx53-ppd.dts b/arch/arm/dts/imx53-ppd.dts
index 3a3192d5e8..947d75b05d 100644
--- a/arch/arm/dts/imx53-ppd.dts
+++ b/arch/arm/dts/imx53-ppd.dts
@@ -7,6 +7,7 @@
 /dts-v1/;
 
 #include "imx53.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "General Electric CS ONE";
@@ -21,6 +22,69 @@
                compatible = "u-boot,bootcount-i2c-eeprom";
                i2c-eeprom = <&bootcount_eeprom>;
        };
+
+       reg_3v3: regulator-3v3 {
+               /* TPS54320 */
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       reg_3v3_lcd: regulator-3v3-lcd {
+               /* MIC2009 */
+               compatible = "regulator-fixed";
+               regulator-name = "LCD_3V3";
+               vin-supply = <&reg_3v3>;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       pwm_bl: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm2 0 50000>;
+               brightness-levels = <0 2 5 7 10 12 15 17 20 22 25 28 30 33 35
+                                    38 40 43 45 48 51 53 56 58 61 63 66 68 71
+                                    73 76 79 81 84 86 89 91 94 96 99 102 104
+                                    107 109 112 114 117 119 122 124 127 130
+                                    132 135 137 140 142 145 147 150 153 155
+                                    158 160 163 165 168 170 173 175 178 181
+                                    183 186 188 191 193 196 198 201 204 206
+                                    209 211 214 216 219 221 224 226 229 232
+                                    234 237 239 242 244 247 249 252 255>;
+               default-brightness-level = <0>;
+               enable-gpios = <&gpio5 29 GPIO_ACTIVE_HIGH>;
+               power-supply = <&reg_3v3_lcd>;
+       };
+
+       panel-lvds0 {
+               compatible = "simple-panel";
+               backlight = <&pwm_bl>;
+               power-supply = <&reg_3v3_lcd>;
+
+               port {
+                       panel_in_lvds0: endpoint {
+                               remote-endpoint = <&lvds0_out>;
+                       };
+               };
+       };
+};
+
+&ldb {
+       status = "okay";
+
+       lvds0: lvds-channel@0 {
+               status = "okay";
+
+               port@2 {
+                       reg = <2>;
+                       lvds0_out: endpoint {
+                               remote-endpoint = <&panel_in_lvds0>;
+                       };
+               };
+       };
 };
 
 &iomuxc {
@@ -41,6 +105,12 @@
                >;
        };
 
+       pinctrl_pwm2: pwm2grp {
+               fsl,pins = <
+               MX53_PAD_DISP0_DAT9__PWM2_PWMO          0x5
+               >;
+       };
+
        pinctrl_i2c1: i2c1grp {
                fsl,pins = <
                        MX53_PAD_EIM_D21__I2C1_SCL              0x400001e4
diff --git a/board/ge/mx53ppd/Makefile b/board/ge/mx53ppd/Makefile
index 9fae414399..f423e80cae 100644
--- a/board/ge/mx53ppd/Makefile
+++ b/board/ge/mx53ppd/Makefile
@@ -7,4 +7,4 @@
 # Jason Liu <r64...@freescale.com>
 
 obj-y                  += mx53ppd.o
-obj-$(CONFIG_VIDEO)    += mx53ppd_video.o
+obj-$(CONFIG_DM_VIDEO) += mx53ppd_video.o
diff --git a/board/ge/mx53ppd/mx53ppd.c b/board/ge/mx53ppd/mx53ppd.c
index 2586daddf3..17ba3a87dd 100644
--- a/board/ge/mx53ppd/mx53ppd.c
+++ b/board/ge/mx53ppd/mx53ppd.c
@@ -38,8 +38,6 @@
 #include "../../ge/common/ge_common.h"
 #include "../../ge/common/vpd_reader.h"
 
-#define MX53PPD_LCD_POWER              IMX_GPIO_NR(3, 24)
-
 DECLARE_GLOBAL_DATA_PTR;
 
 static u32 mx53_dram_size[2];
diff --git a/board/ge/mx53ppd/mx53ppd_video.c b/board/ge/mx53ppd/mx53ppd_video.c
index 9dd9f0c98d..c386dc29de 100644
--- a/board/ge/mx53ppd/mx53ppd_video.c
+++ b/board/ge/mx53ppd/mx53ppd_video.c
@@ -9,35 +9,49 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <linux/list.h>
-#include <asm/gpio.h>
 #include <asm/arch/iomux-mx53.h>
+#include <asm/mach-imx/video.h>
 #include <linux/fb.h>
 #include <ipu_pixfmt.h>
 #include <asm/arch/crm_regs.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/io.h>
-#include <pwm.h>
-#include "ppd_gpio.h"
-
-#define MX53PPD_LCD_POWER              IMX_GPIO_NR(3, 24)
-
-static struct fb_videomode const nv_spwg = {
-       .name           = "NV-SPWGRGB888",
-       .refresh        = 60,
-       .xres           = 800,
-       .yres           = 480,
-       .pixclock       = 15384,
-       .left_margin    = 16,
-       .right_margin   = 210,
-       .upper_margin   = 10,
-       .lower_margin   = 22,
-       .hsync_len      = 30,
-       .vsync_len      = 13,
-       .sync           = FB_SYNC_EXT,
-       .vmode          = FB_VMODE_NONINTERLACED
+#include <panel.h>
+
+static int detect_lcd(struct display_info_t const *dev)
+{
+       return 1;
+}
+
+struct display_info_t const displays[] = {
+       {
+               .bus    = -1,
+               .addr   = -1,
+               .pixfmt = IPU_PIX_FMT_RGB24,
+               .detect = detect_lcd,
+               .enable = NULL,
+               .mode = {
+                       .name           = "NV-SPWGRGB888",
+                       .refresh        = 60,
+                       .xres           = 800,
+                       .yres           = 480,
+                       .pixclock       = 15384,
+                       .left_margin    = 16,
+                       .right_margin   = 210,
+                       .upper_margin   = 10,
+                       .lower_margin   = 22,
+                       .hsync_len      = 30,
+                       .vsync_len      = 13,
+                       .sync           = FB_SYNC_EXT,
+                       .vmode          = FB_VMODE_NONINTERLACED
+               }
+       }
 };
 
+size_t display_count = ARRAY_SIZE(displays);
+
 void setup_iomux_lcd(void)
 {
        static const iomux_v3_cfg_t lcd_pads[] = {
@@ -96,24 +110,31 @@ static void lcd_enable(void)
                IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT |
                IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0,
                &iomux->gpr[2]);
-
-       /* Enable backlights  */
-       pwm_init(1, 0, 0);
-
-       /* duty cycle 5000000ns, period: 5000000ns */
-       pwm_config(1, 5000000, 5000000);
-
-       /* Backlight Power */
-       gpio_request(BACKLIGHT_ENABLE, "BACKLIGHT_ENABLE");
-       gpio_direction_output(BACKLIGHT_ENABLE, 1);
-
-       pwm_enable(1);
 }
 
 static int do_lcd_enable(cmd_tbl_t *cmdtp, int flag, int argc,
                         char * const argv[])
 {
        lcd_enable();
+
+       int ret;
+       struct udevice *panel;
+       struct udevice *dev;
+
+       ret = uclass_get_device(UCLASS_PANEL, 0, &panel);
+       if (ret)
+               return ret;
+
+       panel_set_backlight(panel, 100);
+       panel_enable_backlight(panel);
+
+       /* Probe, to find a video device to be used to show a message on
+        * the vidconsole.
+        */
+       ret = uclass_get_device(UCLASS_VIDEO, 0, &dev);
+       if (ret)
+               return ret;
+
        return 0;
 }
 
@@ -122,14 +143,3 @@ U_BOOT_CMD(
        "enable PPD LCD",
        "no parameters"
 );
-
-int board_video_skip(void)
-{
-       int ret;
-
-       ret = ipuv3_fb_init(&nv_spwg, 0, IPU_PIX_FMT_RGB24);
-       if (ret)
-               printf("Display cannot be configured: %d\n", ret);
-
-       return ret;
-}
diff --git a/board/ge/mx53ppd/ppd_gpio.h b/board/ge/mx53ppd/ppd_gpio.h
index 12bb389629..98c41d4d67 100644
--- a/board/ge/mx53ppd/ppd_gpio.h
+++ b/board/ge/mx53ppd/ppd_gpio.h
@@ -51,7 +51,6 @@ struct gpio_cfg {
 #define POWER_DOWN_LVDS0_DESERIALIZER_N IMX_GPIO_NR(2, 22)
 #define POWER_DOWN_LVDS1_DESERIALIZER_N IMX_GPIO_NR(2, 27)
 #define ENABLE_PWR_TO_LCD_AND_UI_INTERFACE IMX_GPIO_NR(2, 17)
-#define BACKLIGHT_ENABLE IMX_GPIO_NR(5, 29)
 #define RESET_I2C1_BUS_SEGMENT_MUX_N IMX_GPIO_NR(2, 18)
 #define ECSPI1_CS0 IMX_GPIO_NR(5, 17)
 #define ECSPI1_CS1 IMX_GPIO_NR(4, 10)
@@ -81,7 +80,6 @@ static const struct gpio_cfg ppd_gpios[] = {
        { POWER_DOWN_LVDS0_DESERIALIZER_N, 1 },
        { POWER_DOWN_LVDS1_DESERIALIZER_N, 1 },
        { ENABLE_PWR_TO_LCD_AND_UI_INTERFACE, 1 },
-       { BACKLIGHT_ENABLE, 0 },
        { RESET_I2C1_BUS_SEGMENT_MUX_N, 1 },
        { ECSPI1_CS0, 1 },
        { ECSPI1_CS1, 1 },
diff --git a/configs/mx53ppd_defconfig b/configs/mx53ppd_defconfig
index 51d79f602a..4d4f93614f 100644
--- a/configs/mx53ppd_defconfig
+++ b/configs/mx53ppd_defconfig
@@ -53,7 +53,6 @@ CONFIG_RTC_S35392A=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_MX5=y
 CONFIG_VIDEO_IPUV3=y
-CONFIG_VIDEO=y
 # CONFIG_VIDEO_SW_CURSOR is not set
 CONFIG_WATCHDOG_TIMEOUT_MSECS=8000
 CONFIG_IMX_WATCHDOG=y
@@ -61,5 +60,9 @@ CONFIG_WDT=y
 CONFIG_SYSRESET=y
 CONFIG_SYSRESET_WATCHDOG=y
 CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_USB=y
 CONFIG_SYS_MALLOC_F_LEN=0x4000
+CONFIG_DM_VIDEO=y
+CONFIG_SYS_WHITE_ON_BLACK=y
+CONFIG_DM_PWM=y
diff --git a/include/configs/mx53ppd.h b/include/configs/mx53ppd.h
index 941b8c00cc..c7414213a7 100644
--- a/include/configs/mx53ppd.h
+++ b/include/configs/mx53ppd.h
@@ -92,12 +92,9 @@
        "swappartitions=setexpr partnum 3 - ${partnum}\0" \
        "failbootcmd=" \
                "ppd_lcd_enable; " \
-               "msg=\"Monitor failed to start.  " \
-                       "Try again, or contact GE Service for support.\"; " \
-               "echo $msg; " \
-               "setenv stdout vga; " \
-               "echo \"\n\n\n\n    \" $msg; " \
-               "setenv stdout serial; " \
+               "setcurs 5 4; " \
+               "lcdputs \"Monitor failed to start. " \
+               "Try again, or contact GE Service for support.\"; " \
                "bootcount reset; \0" \
        "altbootcmd=" \
                "run doquiet; " \
@@ -174,4 +171,6 @@
 /* Backlight Control */
 #define CONFIG_IMX6_PWM_PER_CLK 66666000
 
+#define CONFIG_IMX_VIDEO_SKIP
+
 #endif                         /* __CONFIG_H */
-- 
2.20.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to