board: toradex: turn off lcd backlight before OS handover
authorGerard Salvatella <gerard.salvatella@toradex.com>
Mon, 19 Nov 2018 14:54:10 +0000 (15:54 +0100)
committerTom Warren <twarren@nvidia.com>
Wed, 20 Feb 2019 16:01:45 +0000 (09:01 -0700)
U-Boot typically tears down the display controller before handing
control over to Linux. On LCD displays disabling pixel clock leads to a
fading out effect with vertical/horizontal lines. Make sure to disable
back light before booting Linux.

Signed-off-by: Gerard Salvatella <gerard.salvatella@toradex.com>
Signed-off-by: Philippe Schenker <philippe.schenker@toradex.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
board/toradex/apalis-tk1/apalis-tk1.c
board/toradex/apalis_imx6/apalis_imx6.c
board/toradex/apalis_t30/apalis_t30.c
board/toradex/colibri_imx6/colibri_imx6.c
board/toradex/colibri_imx7/colibri_imx7.c
board/toradex/colibri_t20/colibri_t20.c
board/toradex/colibri_t30/colibri_t30.c
board/toradex/colibri_vf/colibri_vf.c

index d6a736d8aa1d99caf299fafb9021eabcffa5b357..b87e9e7a3efc21c2dd1602d6e7fe612f7bd4c876 100644 (file)
@@ -240,3 +240,12 @@ void tegra_pcie_board_port_reset(struct tegra_pcie_port *port)
        }
 }
 #endif /* CONFIG_PCI_TEGRA */
+
+/*
+ * Backlight off before OS handover
+ */
+void board_preboot_os(void)
+{
+       gpio_request(TEGRA_GPIO(BB, 5), "BL_ON");
+       gpio_direction_output(TEGRA_GPIO(BB, 5), 0);
+}
index 368db9c488c79afc28988346375808cdbf34bae9..d11207c7f446c0349e40556fc693acb107e50e74 100644 (file)
@@ -745,6 +745,15 @@ static void setup_display(void)
        gpio_direction_output(RGB_BACKLIGHTPWM_OE, 0);
        gpio_direction_output(RGB_BACKLIGHT_GP, 1);
 }
+
+/*
+ * Backlight off before OS handover
+ */
+void board_preboot_os(void)
+{
+       gpio_direction_output(RGB_BACKLIGHTPWM_GP, 1);
+       gpio_direction_output(RGB_BACKLIGHT_GP, 0);
+}
 #endif /* defined(CONFIG_VIDEO_IPUV3) */
 
 int board_early_init_f(void)
index ace9c5b168438edac43b9e0ea78e1766fbb03e1b..df9bc8e7075cfac3ab25d00c8725961451d26d18 100644 (file)
@@ -164,3 +164,12 @@ void tegra_pcie_board_port_reset(struct tegra_pcie_port *port)
 #endif /* CONFIG_APALIS_T30_PCIE_EVALBOARD_INIT */
 }
 #endif /* CONFIG_PCI_TEGRA */
+
+/*
+ * Backlight off before OS handover
+ */
+void board_preboot_os(void)
+{
+       gpio_request(TEGRA_GPIO(V, 2), "BKL1_ON");
+       gpio_direction_output(TEGRA_GPIO(V, 2), 0);
+}
index 68c0c02a8acb41c4369ab57e60e649f157cc211a..17876f27e96766103acaffaf792ebe58ce58ab32 100644 (file)
@@ -622,6 +622,15 @@ static void setup_display(void)
        gpio_direction_output(RGB_BACKLIGHTPWM_GP, 0);
        gpio_direction_output(RGB_BACKLIGHT_GP, 1);
 }
+
+/*
+ * Backlight off before OS handover
+ */
+void board_preboot_os(void)
+{
+       gpio_direction_output(RGB_BACKLIGHTPWM_GP, 1);
+       gpio_direction_output(RGB_BACKLIGHT_GP, 0);
+}
 #endif /* defined(CONFIG_VIDEO_IPUV3) */
 
 int board_early_init_f(void)
index 392fda92daee987a957a36d55b48d5568f682e3e..61bf8bfd58f3b4235fdc42b381662d1d9f472114 100644 (file)
@@ -150,6 +150,15 @@ static int setup_lcd(void)
 }
 #endif
 
+/*
+ * Backlight off before OS handover
+ */
+void board_preboot_os(void)
+{
+       gpio_direction_output(GPIO_PWM_A, 1);
+       gpio_direction_output(GPIO_BL_ON, 0);
+}
+
 #ifdef CONFIG_FEC_MXC
 static iomux_v3_cfg_t const fec1_pads[] = {
 #ifndef CONFIG_COLIBRI_IMX7_EXT_PHYCLK
index 5dd0f288ed9568c0a47b7e844b631047d86e4c98..e0b27e92f8e339e7ab99d29337fb1d6b20cfbca8 100644 (file)
@@ -150,4 +150,13 @@ void pin_mux_display(void)
        pinmux_set_func(PMUX_PINGRP_SDC, PMUX_FUNC_PWM);
        pinmux_tristate_disable(PMUX_PINGRP_SDC);
 }
+
+/*
+ * Backlight off before OS handover
+ */
+void board_preboot_os(void)
+{
+       gpio_request(TEGRA_GPIO(T, 4), "BL_ON");
+       gpio_direction_output(TEGRA_GPIO(T, 4), 0);
+}
 #endif
index 8ea96188f621140cac7c7fc23a6914432d32a4b1..b6b00e3860d8df18e7d105a6b627f9503f2c2252 100644 (file)
@@ -66,3 +66,12 @@ void pin_mux_usb(void)
        udelay(5);
        gpio_set_value(TEGRA_GPIO(DD, 0), 1);
 }
+
+/*
+ * Backlight off before OS handover
+ */
+void board_preboot_os(void)
+{
+       gpio_request(TEGRA_GPIO(V, 2), "BL_ON");
+       gpio_direction_output(TEGRA_GPIO(V, 2), 0);
+}
index 19cf748c5d647bdb23dd3e9d2ad9787c38b1a97f..79f702f2bf104cbda6da572f4815c706f5d50c71 100644 (file)
@@ -38,8 +38,9 @@ DECLARE_GLOBAL_DATA_PTR;
 #define ENET_PAD_CTRL  (PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_HIGH | \
                        PAD_CTL_DSE_50ohm | PAD_CTL_OBE_IBE_ENABLE)
 
-#define USB_PEN_GPIO           83
+#define USB_PEN_GPIO           83
 #define USB_CDET_GPIO          102
+#define PTC0_GPIO_45           45
 
 static struct ddrmc_cr_setting colibri_vf_cr_settings[] = {
        /* AXI */
@@ -632,3 +633,12 @@ int board_usb_phy_mode(int port)
        }
 }
 #endif
+
+/*
+ * Backlight off before OS handover
+ */
+void board_preboot_os(void)
+{
+       gpio_request(PTC0_GPIO_45, "BL_ON");
+       gpio_direction_output(PTC0_GPIO_45, 0);
+}