diff mbox series

[U-Boot,PATCHv1] board: ge: bx50v3: enable backlight on demand

Message ID 20180309144125.16046-1-sebastian.reichel@collabora.co.uk
State Changes Requested
Delegated to: Stefano Babic
Headers show
Series [U-Boot,PATCHv1] board: ge: bx50v3: enable backlight on demand | expand

Commit Message

Sebastian Reichel March 9, 2018, 2:41 p.m. UTC
From: Ian Ray <ian.ray@ge.com>

Enable display backlight only if a message needs to be displayed.
The kernel re-initializes the backlight, which results in some
unwanted artifacts.

Signed-off-by: Ian Ray <ian.ray@ge.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
---
 board/ge/bx50v3/bx50v3.c    | 43 ++++++++++++++++++++++++++-----------------
 include/configs/ge_bx50v3.h |  1 +
 2 files changed, 27 insertions(+), 17 deletions(-)

Comments

Stefano Babic March 29, 2018, 3:54 p.m. UTC | #1
On 09/03/2018 15:41, Sebastian Reichel wrote:
> From: Ian Ray <ian.ray@ge.com>
> 
> Enable display backlight only if a message needs to be displayed.
> The kernel re-initializes the backlight, which results in some
> unwanted artifacts.
> 
> Signed-off-by: Ian Ray <ian.ray@ge.com>
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
> ---
>  board/ge/bx50v3/bx50v3.c    | 43 ++++++++++++++++++++++++++-----------------
>  include/configs/ge_bx50v3.h |  1 +
>  2 files changed, 27 insertions(+), 17 deletions(-)
> 
> diff --git a/board/ge/bx50v3/bx50v3.c b/board/ge/bx50v3/bx50v3.c
> index c7a29185bf49..35efe159d598 100644
> --- a/board/ge/bx50v3/bx50v3.c
> +++ b/board/ge/bx50v3/bx50v3.c
> @@ -786,23 +786,6 @@ int board_late_init(void)
>  	add_board_boot_modes(board_boot_modes);
>  #endif
>  
> -#ifdef CONFIG_VIDEO_IPUV3
> -	/* We need at least 200ms between power on and backlight on
> -	 * as per specifications from CHI MEI */
> -	mdelay(250);
> -
> -	/* enable backlight PWM 1 */
> -	pwm_init(0, 0, 0);
> -
> -	/* duty cycle 5000000ns, period: 5000000ns */
> -	pwm_config(0, 5000000, 5000000);
> -
> -	/* Backlight Power */
> -	gpio_direction_output(LVDS_BACKLIGHT_GP, 1);
> -
> -	pwm_enable(0);
> -#endif
> -
>  	/* board specific pmic init */
>  	pmic_init();
>  
> @@ -843,3 +826,29 @@ int checkboard(void)
>  	printf("BOARD: %s\n", CONFIG_BOARD_NAME);
>  	return 0;
>  }
> +
> +static int do_backlight_enable(void)

Function must return an int

> +{
> +#ifdef CONFIG_VIDEO_IPUV3
> +	/* We need at least 200ms between power on and backlight on
> +	 * as per specifications from CHI MEI */
> +	mdelay(250);
> +
> +	/* enable backlight PWM 1 */
> +	pwm_init(0, 0, 0);
> +
> +	/* duty cycle 5000000ns, period: 5000000ns */
> +	pwm_config(0, 5000000, 5000000);
> +
> +	/* Backlight Power */
> +	gpio_direction_output(LVDS_BACKLIGHT_GP, 1);
> +
> +	pwm_enable(0);

No return value. This generates warning, please fix and repost - thanks.

Best regards,
Stefano Babic

> +#endif
> +}
> +
> +U_BOOT_CMD(
> +       bx50_backlight_enable, 1,      1,      do_backlight_enable,
> +       "enable Bx50 backlight",
> +       "no parameters"
> +);
> diff --git a/include/configs/ge_bx50v3.h b/include/configs/ge_bx50v3.h
> index cbfe30d536d0..925507fe81f1 100644
> --- a/include/configs/ge_bx50v3.h
> +++ b/include/configs/ge_bx50v3.h
> @@ -128,6 +128,7 @@
>  	"swappartitions=" \
>  		"setexpr partnum 3 - ${partnum}\0" \
>  	"failbootcmd=" \
> +		"bx50_backlight_enable; " \
>  		"msg=\"Monitor failed to start.  Try again, or contact GE Service for support.\"; " \
>  		"echo $msg; " \
>  		"setenv stdout vga; " \
>
diff mbox series

Patch

diff --git a/board/ge/bx50v3/bx50v3.c b/board/ge/bx50v3/bx50v3.c
index c7a29185bf49..35efe159d598 100644
--- a/board/ge/bx50v3/bx50v3.c
+++ b/board/ge/bx50v3/bx50v3.c
@@ -786,23 +786,6 @@  int board_late_init(void)
 	add_board_boot_modes(board_boot_modes);
 #endif
 
-#ifdef CONFIG_VIDEO_IPUV3
-	/* We need at least 200ms between power on and backlight on
-	 * as per specifications from CHI MEI */
-	mdelay(250);
-
-	/* enable backlight PWM 1 */
-	pwm_init(0, 0, 0);
-
-	/* duty cycle 5000000ns, period: 5000000ns */
-	pwm_config(0, 5000000, 5000000);
-
-	/* Backlight Power */
-	gpio_direction_output(LVDS_BACKLIGHT_GP, 1);
-
-	pwm_enable(0);
-#endif
-
 	/* board specific pmic init */
 	pmic_init();
 
@@ -843,3 +826,29 @@  int checkboard(void)
 	printf("BOARD: %s\n", CONFIG_BOARD_NAME);
 	return 0;
 }
+
+static int do_backlight_enable(void)
+{
+#ifdef CONFIG_VIDEO_IPUV3
+	/* We need at least 200ms between power on and backlight on
+	 * as per specifications from CHI MEI */
+	mdelay(250);
+
+	/* enable backlight PWM 1 */
+	pwm_init(0, 0, 0);
+
+	/* duty cycle 5000000ns, period: 5000000ns */
+	pwm_config(0, 5000000, 5000000);
+
+	/* Backlight Power */
+	gpio_direction_output(LVDS_BACKLIGHT_GP, 1);
+
+	pwm_enable(0);
+#endif
+}
+
+U_BOOT_CMD(
+       bx50_backlight_enable, 1,      1,      do_backlight_enable,
+       "enable Bx50 backlight",
+       "no parameters"
+);
diff --git a/include/configs/ge_bx50v3.h b/include/configs/ge_bx50v3.h
index cbfe30d536d0..925507fe81f1 100644
--- a/include/configs/ge_bx50v3.h
+++ b/include/configs/ge_bx50v3.h
@@ -128,6 +128,7 @@ 
 	"swappartitions=" \
 		"setexpr partnum 3 - ${partnum}\0" \
 	"failbootcmd=" \
+		"bx50_backlight_enable; " \
 		"msg=\"Monitor failed to start.  Try again, or contact GE Service for support.\"; " \
 		"echo $msg; " \
 		"setenv stdout vga; " \