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 |
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 --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; " \