tegra124: Skip display init when vboot says we don't need it.
If EFS is enabled and vboot didn't tell us it's going to use the display, we
can skip initializing it and save some boot time.
BUG=chrome-os-partner:27094
TEST=Built and booted on nyan without EFS in recovery mode and normal mode.
Built and booted on nyan with EFS in recovery mode and normal mode. Verified
that in normal mode with EFS the display initialization was skipped and boot
time was essentially the same as when display initialization was simply
commented out.
BRANCH=None
Original-Change-Id: I1e2842b57a38061f40514407c8fab1e38b75be80
Original-Signed-off-by: Gabe Black <gabeblack@google.com>
Original-Reviewed-on: https://chromium-review.googlesource.com/192544
Original-Reviewed-by: Tom Warren <twarren@nvidia.com>
Original-Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Original-Commit-Queue: Gabe Black <gabeblack@chromium.org>
Original-Tested-by: Gabe Black <gabeblack@chromium.org>
(cherry picked from commit a672d18c35)
Signed-off-by: Marc Jones <marc.jones@se-eng.com>
Change-Id: I95e8bd7a447876174305f755cc632365ed6f5a30
Reviewed-on: http://review.coreboot.org/7734
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Tested-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
4270a9777c
commit
042f849ef9
3 changed files with 19 additions and 1 deletions
|
|
@ -26,6 +26,7 @@
|
|||
#include <soc/nvidia/tegra124/sdram.h>
|
||||
#include "chip.h"
|
||||
#include <soc/display.h>
|
||||
#include <vendorcode/google/chromeos/chromeos.h>
|
||||
|
||||
/* this sucks, but for now, fb size/location are hardcoded.
|
||||
* Will break if we get 2. Sigh.
|
||||
|
|
@ -50,7 +51,10 @@ static void soc_enable(device_t dev)
|
|||
|
||||
static void soc_init(device_t dev)
|
||||
{
|
||||
display_startup(dev);
|
||||
if (vboot_skip_display_init())
|
||||
printk(BIOS_INFO, "Skipping display init.\n");
|
||||
else
|
||||
display_startup(dev);
|
||||
printk(BIOS_INFO, "CPU: Tegra124\n");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ void *vboot_get_region(uintptr_t offset_addr, size_t size, void *dest);
|
|||
int vboot_get_handoff_info(void **addr, uint32_t *size);
|
||||
int vboot_enable_developer(void);
|
||||
int vboot_enable_recovery(void);
|
||||
int vboot_skip_display_init(void);
|
||||
#else
|
||||
static inline void vboot_verify_firmware(struct romstage_handoff *h) {}
|
||||
static inline void *vboot_get_payload(int *len) { return NULL; }
|
||||
|
|
@ -54,6 +55,7 @@ static inline int vboot_get_handoff_info(void **addr, uint32_t *size)
|
|||
{
|
||||
return -1;
|
||||
}
|
||||
static inline int vboot_skip_display_init(void) { return 0; }
|
||||
#endif
|
||||
|
||||
#include "gnvs.h"
|
||||
|
|
|
|||
|
|
@ -54,6 +54,18 @@ int vboot_enable_recovery(void)
|
|||
return !!(vbho->init_params.out_flags & VB_INIT_OUT_ENABLE_RECOVERY);
|
||||
}
|
||||
|
||||
int vboot_skip_display_init(void)
|
||||
{
|
||||
struct vboot_handoff *vbho;
|
||||
|
||||
vbho = cbmem_find(CBMEM_ID_VBOOT_HANDOFF);
|
||||
|
||||
if (vbho == NULL)
|
||||
return 0;
|
||||
|
||||
return !(vbho->init_params.out_flags & VB_INIT_OUT_ENABLE_DISPLAY);
|
||||
}
|
||||
|
||||
void *vboot_get_region(uintptr_t offset_addr, size_t size, void *dest)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_SPI_FLASH_MEMORY_MAPPED)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue