author | Cao Jian <jian.cao@amlogic.com> | 2019-11-25 04:54:03 (GMT) |
---|---|---|
committer | Xiaobo Gu <xiaobo.gu@amlogic.com> | 2019-11-27 09:44:35 (GMT) |
commit | bb4e6a810d0cb3773101d66df535e8186d6b9b1d (patch) | |
tree | d268647333901dcacc100342084575fa8eaec54d | |
parent | 5333fafa83b3b3cf54244dea870a02b87836abf5 (diff) | |
download | uboot-bb4e6a810d0cb3773101d66df535e8186d6b9b1d.zip uboot-bb4e6a810d0cb3773101d66df535e8186d6b9b1d.tar.gz uboot-bb4e6a810d0cb3773101d66df535e8186d6b9b1d.tar.bz2 |
osd: recovery always displays on panel for portrait case [2/4]
PD#SWPL-16902
Problem:
garbage screen for portrait panel in recovery mode
Solution:
take panel as viu1 in recovery for portrait case
add a macro CONFIG_RECOVERY_DUAL_LOGO to define
Verify:
g12b-w400
Change-Id: I3650e625719b1d044a13ecd6a721fc823f7bafa2
Signed-off-by: Cao Jian <jian.cao@amlogic.com>
-rw-r--r-- | board/amlogic/configs/g12b_w400_v1.h | 14 | ||||
-rw-r--r-- | common/cmd_osd.c | 27 |
2 files changed, 33 insertions, 8 deletions
diff --git a/board/amlogic/configs/g12b_w400_v1.h b/board/amlogic/configs/g12b_w400_v1.h index f67799d..13c2260 100644 --- a/board/amlogic/configs/g12b_w400_v1.h +++ b/board/amlogic/configs/g12b_w400_v1.h @@ -343,12 +343,22 @@ * logo2: bootup_rotate_secondary.bmp (for portrait screen) */ #define CONFIG_DUAL_LOGO \ - "setenv outputmode $hdmimode;setenv display_layer osd0;"\ - "vout output $hdmimode;osd open;osd clear;imgread pic logo bootup $loadaddr;bmp display $bootup_offset;bmp scale;"\ + "setenv outputmode 1080p60hz;setenv display_layer osd0;"\ + "setenv fb_height 1080; setenv fb_width 1920;"\ + "vout output $outputmode;osd open;osd clear;imgread pic logo bootup $loadaddr;bmp display $bootup_offset;bmp scale;"\ "setenv outputmode2 panel;setenv display_layer viu2_osd0;"\ "vout2 prepare panel;osd open;osd clear;imgread pic logo bootup_rotate_secondary $loadaddr;bmp display $bootup_rotate_secondary_offset;bmp scale;vout2 output panel;"\ "\0"\ +/* for portrait panel, recovery always displays on panel */ +#define CONFIG_RECOVERY_DUAL_LOGO \ + "setenv outputmode panel;setenv display_layer osd0;"\ + "setenv fb_height 1920; setenv fb_width 1080;"\ + "vout output $outputmode;osd open;osd clear;imgread pic logo bootup_rotate $loadaddr;bmp display $bootup_rotate_offset;bmp scale;"\ + "setenv outputmode2 1080p60hz;setenv display_layer viu2_osd0;"\ + "vout2 prepare $outputmode2;vout2 output $outputmode2;osd open;osd clear;imgread pic logo bootup $loadaddr;bmp display $bootup_offset;bmp scale;"\ + "\0"\ + /* buffer rotate for portrait screen */ #define CONFIG_SINGLE_LOGO \ "setenv outputmode panel;setenv display_layer osd0;"\ diff --git a/common/cmd_osd.c b/common/cmd_osd.c index 56d68ec..bf0deb7 100644 --- a/common/cmd_osd.c +++ b/common/cmd_osd.c @@ -261,12 +261,27 @@ static int do_osd_dual_logo(cmd_tbl_t *cmdtp, int flag, int argc, printf("osd: hpd_state=%c\n", st ? '1' : '0'); if (st) { - /* hdmi plugin, dual logo display */ - #if defined(CONFIG_DUAL_LOGO) - run_command(CONFIG_DUAL_LOGO, 0); - #else - printf("osd: dual logo cmd macro is not defined\n"); - #endif + /* hdmi plugin, dual logo display + * CONFIG_RECOVERY_DUAL_LOGO is given priority in recovery + */ + if (!strncmp(getenv("reboot_mode"), "factory_reset", 13)) { + #if defined(CONFIG_RECOVERY_DUAL_LOGO) + run_command(CONFIG_RECOVERY_DUAL_LOGO, 0); + #else + #if defined(CONFIG_DUAL_LOGO) + printf("osd: use dual logo cmd macro in recovery mode\n"); + run_command(CONFIG_DUAL_LOGO, 0); + #else + printf("osd: dual logo cmd macro is not defined in recovery mode\n"); + #endif + #endif + } else { + #if defined(CONFIG_DUAL_LOGO) + run_command(CONFIG_DUAL_LOGO, 0); + #else + printf("osd: dual logo cmd macro is not defined\n"); + #endif + } } else { /* hdmi plugout, single logo display */ #if defined(CONFIG_SINGLE_LOGO) |