summaryrefslogtreecommitdiff
authorCao 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)
commitbb4e6a810d0cb3773101d66df535e8186d6b9b1d (patch)
treed268647333901dcacc100342084575fa8eaec54d
parent5333fafa83b3b3cf54244dea870a02b87836abf5 (diff)
downloaduboot-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>
Diffstat
-rw-r--r--board/amlogic/configs/g12b_w400_v1.h14
-rw-r--r--common/cmd_osd.c27
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)