diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2015-11-16 11:47:28 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2015-11-17 14:40:23 -0800 |
commit | ffc446b2418d3a01be57c10a7c24db5e92efc708 (patch) | |
tree | f49d6381a9fd0b0fdc65705b9d0e911fb2fae834 | |
parent | bbdd62f9b030db7ad8eef789aaf58a7ff9a25656 (diff) | |
download | vboot-ffc446b2418d3a01be57c10a7c24db5e92efc708.tar.gz |
Give more screen control to vboot_draw_screen
New devices have Depthcharge render vboot screens by calling
vboot_draw_screen. Thus, display initialization and backlight control should
not be duplicated. This patch prevents VbDisplayScreen from initializing
display and controlling backlight when vboot is rendering screens using GBB.
BUG=chrome-os-partner:43706,chromium:502066
BRANCH=tot
TEST=Tested on Glados
Change-Id: I50cd2decb7065af96779601b12f0fbf2554ff6ed
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/312749
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r-- | firmware/lib/vboot_display.c | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/firmware/lib/vboot_display.c b/firmware/lib/vboot_display.c index f8417b9f..8dbf2f2b 100644 --- a/firmware/lib/vboot_display.c +++ b/firmware/lib/vboot_display.c @@ -311,10 +311,15 @@ VbError_t VbDisplayScreenFromGBB(VbCommonParams *cparams, uint32_t screen, return retval; } -VbError_t VbDisplayScreen(VbCommonParams *cparams, uint32_t screen, - int force, VbNvContext *vncptr) +/* + * This is the deprecated display screen function. This should be called only + * if bmpblk.bin is found in GBB. New devices store graphics data in cbfs + * and screens are rendered by Depthcharge (chromium:502066). + */ +static VbError_t VbDisplayScreenLegacy(VbCommonParams *cparams, uint32_t screen, + int force, VbNvContext *vncptr, + uint32_t locale) { - uint32_t locale; VbError_t retval; /* Initialize display if necessary */ @@ -334,9 +339,6 @@ VbError_t VbDisplayScreen(VbCommonParams *cparams, uint32_t screen, /* Request the screen */ disp_current_screen = screen; - /* Read the locale last saved */ - VbNvGet(vncptr, VBNV_LOCALIZATION_INDEX, &locale); - /* Look in the GBB first */ if (VBERROR_SUCCESS == VbDisplayScreenFromGBB(cparams, screen, vncptr, locale)) @@ -346,6 +348,21 @@ VbError_t VbDisplayScreen(VbCommonParams *cparams, uint32_t screen, return VbExDisplayScreen(screen, locale); } +VbError_t VbDisplayScreen(VbCommonParams *cparams, uint32_t screen, + int force, VbNvContext *vncptr) +{ + uint32_t locale; + GoogleBinaryBlockHeader *gbb = cparams->gbb; + + /* Read the locale last saved */ + VbNvGet(vncptr, VBNV_LOCALIZATION_INDEX, &locale); + + if (gbb->bmpfv_size == 0) + return VbExDisplayScreen(screen, locale); + + return VbDisplayScreenLegacy(cparams, screen, force, vncptr, locale); +} + static void Uint8ToString(char *buf, uint8_t val) { const char *trans = "0123456789abcdef"; |