From a5a3dc8434831ab23aa21e199796d62e4e67e7ff Mon Sep 17 00:00:00 2001 From: Ye Li Date: Mon, 13 Apr 2020 20:29:46 -0700 Subject: [PATCH] MLK-14418-12 imx: mx7dsabresd: Update LCD splash screen codes Update LCD setup codes to use the parameters structure used for all i.mx platforms, discard to use videmode environment variable. Signed-off-by: Ye Li (cherry picked from commit 3b0609ca267baaf6a78bebaccc6896e6508d1844) (cherry picked from commit e97965bbd8f9346d909cda433cafd04a750d9867) (cherry picked from commit d8bcdcb95df9ed6661be589726bba66da26a1cdf) (cherry picked from commit 07795520e74cfb85ab9112a5a6347290e0082d07) --- board/freescale/mx7dsabresd/mx7dsabresd.c | 68 +++++++++++++++++++---- 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/board/freescale/mx7dsabresd/mx7dsabresd.c b/board/freescale/mx7dsabresd/mx7dsabresd.c index 911120c6db..d28e52ba66 100644 --- a/board/freescale/mx7dsabresd/mx7dsabresd.c +++ b/board/freescale/mx7dsabresd/mx7dsabresd.c @@ -25,6 +25,7 @@ #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -147,26 +148,75 @@ static iomux_v3_cfg_t const pwm_pads[] = { MX7D_PAD_GPIO1_IO01__GPIO1_IO1 | MUX_PAD_CTRL(NO_PAD_CTRL), }; -static int setup_lcd(void) +void do_enable_parallel_lcd(struct display_info_t const *dev) { + int ret; + struct gpio_desc desc; + imx_iomux_v3_setup_multiple_pads(lcd_pads, ARRAY_SIZE(lcd_pads)); imx_iomux_v3_setup_multiple_pads(pwm_pads, ARRAY_SIZE(pwm_pads)); /* Reset LCD */ - gpio_request(IMX_GPIO_NR(3, 4), "lcd reset"); - gpio_direction_output(IMX_GPIO_NR(3, 4) , 0); + ret = dm_gpio_lookup_name("GPIO3_4", &desc); + if (ret) { + printf("%s lookup GPIO3_4 failed ret = %d\n", __func__, ret); + return; + } + + ret = dm_gpio_request(&desc, "lcd reset"); + if (ret) { + printf("%s request lcd reset failed ret = %d\n", __func__, ret); + return; + } + + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT); + dm_gpio_set_value(&desc, 0); udelay(500); - gpio_direction_output(IMX_GPIO_NR(3, 4) , 1); + dm_gpio_set_value(&desc, 1); /* Set Brightness to high */ - gpio_request(IMX_GPIO_NR(1, 1), "lcd backlight"); - gpio_direction_output(IMX_GPIO_NR(1, 1) , 1); + ret = dm_gpio_lookup_name("GPIO1_1", &desc); + if (ret) { + printf("%s lookup GPIO1_1 failed ret = %d\n", __func__, ret); + return; + } - return 0; + ret = dm_gpio_request(&desc, "lcd backlight"); + if (ret) { + printf("%s request lcd backlight failed ret = %d\n", __func__, ret); + return; + } + + dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE); + + return; } + +struct display_info_t const displays[] = {{ + .bus = ELCDIF1_IPS_BASE_ADDR, + .addr = 0, + .pixfmt = 24, + .detect = NULL, + .enable = do_enable_parallel_lcd, + .mode = { + .name = "TFT43AB", + .xres = 480, + .yres = 272, + .pixclock = 108695, + .left_margin = 8, + .right_margin = 4, + .upper_margin = 2, + .lower_margin = 4, + .hsync_len = 41, + .vsync_len = 10, + .sync = 0, + .vmode = FB_VMODE_NONINTERLACED +} } }; +size_t display_count = ARRAY_SIZE(displays); #endif + static void setup_iomux_uart(void) { imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads)); @@ -250,10 +300,6 @@ int board_init(void) setup_gpmi_nand(); #endif -#ifdef CONFIG_VIDEO_MXS - setup_lcd(); -#endif - #ifdef CONFIG_FSL_QSPI board_qspi_init(); #endif -- 2.17.1