Skip to contentSkip to conversation

mx6sabresd: Allow LVDS backlight to be functional after a kernel reboot

PATCH New Marco Franchi 3 participants 4 messages Jun 8, 2016 – Jun 18, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mx6sabresd: Allow LVDS backlight to be functional after a kernel reboot

Currently the LVDS backlight does not work in U-Boot after a ?reboot? comand in the kernel.

This problem occurs because the kernel uses this pin in PWM mode and U-Boot does not configure the backlight pin as GPIO functionality.

So fix the problem by explicitly configuring the backlight pin as GPIO in U-Boot.

---
 board/freescale/mx6sabresd/mx6sabresd.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)
board/freescale/mx6sabresd/mx6sabresd.c +16 -2
index 54ba36b..28c969d 100644
@@ -177,13 +177,27 @@ static iomux_v3_cfg_t const rgb_pads[] = {
 	MX6_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 | MUX_PAD_CTRL(NO_PAD_CTRL),
 	MX6_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 | MUX_PAD_CTRL(NO_PAD_CTRL),
 	MX6_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const bl_pads[] = {
 	MX6_PAD_SD1_DAT3__GPIO1_IO21 | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
 
+static void enable_backlight(void)
+{
+	imx_iomux_v3_setup_multiple_pads(bl_pads, ARRAY_SIZE(bl_pads));
+	gpio_direction_output(DISP0_PWR_EN, 1);
+}
+
 static void enable_rgb(struct display_info_t const *dev)
 {
 	imx_iomux_v3_setup_multiple_pads(rgb_pads, ARRAY_SIZE(rgb_pads));
-	gpio_direction_output(DISP0_PWR_EN, 1);
+	enable_backlight();
+}
+
+static void enable_lvds(struct display_info_t const *dev)
+{
+	enable_backlight();
 }
 
 static struct i2c_pads_info i2c_pad_info1 = {
@@ -370,7 +384,7 @@ struct display_info_t const displays[] = {{
 	.addr	= 0,
 	.pixfmt	= IPU_PIX_FMT_RGB666,
 	.detect	= NULL,
-	.enable	= NULL,
+	.enable	= enable_lvds,
 	.mode	= {
 		.name           = "Hannstar-XGA",
 		.refresh        = 60,
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/1 mx6sabresd: Allow LVDS backlight to be functional after a kernel reboot

Hi Marco,

Quoted 49 lines · Marco Franchi

Currently the LVDS backlight does not work in U-Boot after a ?reboot? comand in the kernel.

This problem occurs because the kernel uses this pin in PWM mode and U-Boot does not configure the backlight pin as GPIO functionality.

So fix the problem by explicitly configuring the backlight pin as GPIO in U-Boot.

---
 board/freescale/mx6sabresd/mx6sabresd.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)
board/freescale/mx6sabresd/mx6sabresd.c +15 -1
index 54ba36b..28c969d 100644
@@ -177,13 +177,27 @@ static iomux_v3_cfg_t const rgb_pads[] = {
 	MX6_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 | MUX_PAD_CTRL(NO_PAD_CTRL),
 	MX6_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 | MUX_PAD_CTRL(NO_PAD_CTRL),
 	MX6_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const bl_pads[] = {
 	MX6_PAD_SD1_DAT3__GPIO1_IO21 | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
 
+static void enable_backlight(void)
+{
+	imx_iomux_v3_setup_multiple_pads(bl_pads, ARRAY_SIZE(bl_pads));
+	gpio_direction_output(DISP0_PWR_EN, 1);
+}
+
 static void enable_rgb(struct display_info_t const *dev)
 {
 	imx_iomux_v3_setup_multiple_pads(rgb_pads, ARRAY_SIZE(rgb_pads));
-	gpio_direction_output(DISP0_PWR_EN, 1);
+	enable_backlight();
+}
+
+static void enable_lvds(struct display_info_t const *dev)
+{
+	enable_backlight();
 }
 
 static struct i2c_pads_info i2c_pad_info1 = {

board/freescale/mx6sabresd/mx6sabresd.c struct display_info_t const displays[] = {{ · line 390

Quoted 8 lines
board/freescale/mx6sabresd/mx6sabresd.c +1 -1
@@ -370,7 +384,7 @@ struct display_info_t const displays[] = {{
 	.addr	= 0,
 	.pixfmt	= IPU_PIX_FMT_RGB666,
 	.detect	= NULL,
-	.enable	= NULL,
+	.enable	= enable_lvds,
 	.mode	= {
 		.name           = "Hannstar-XGA",
 		.refresh        = 60,

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
#2 lore raw

PATCH 1/1 mx6sabresd: Allow LVDS backlight to be functional after a kernel reboot

In reply to Marco Franchi

Hi Marco,

Quoted 10 lines · Marco Franchi

Currently the LVDS backlight does not work in U-Boot after a ?reboot? comand in the kernel.

This problem occurs because the kernel uses this pin in PWM mode and U-Boot does not configure the backlight pin as GPIO functionality.

So fix the problem by explicitly configuring the backlight pin as GPIO in U-Boot.

Thanks for fixing this bug:

#3 lore raw

PATCH 1/1 mx6sabresd: Allow LVDS backlight to be functional after a kernel reboot

In reply to Marco Franchi
Quoted 11 lines · Marco Franchi

Currently the LVDS backlight does not work in U-Boot after a ?reboot? comand in the kernel.

This problem occurs because the kernel uses this pin in PWM mode and U-Boot does not configure the backlight pin as GPIO functionality.

So fix the problem by explicitly configuring the backlight pin as GPIO in U-Boot.

---

Applied to master (bug fix), thanks !

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================