diff options
-rw-r--r-- | src/soc/nvidia/tegra124/soc.c | 6 | ||||
-rw-r--r-- | src/vendorcode/google/chromeos/chromeos.h | 2 | ||||
-rw-r--r-- | src/vendorcode/google/chromeos/vboot_handoff.c | 12 |
3 files changed, 19 insertions, 1 deletions
diff --git a/src/soc/nvidia/tegra124/soc.c b/src/soc/nvidia/tegra124/soc.c index 08a4cf8e13..48e50bdc3f 100644 --- a/src/soc/nvidia/tegra124/soc.c +++ b/src/soc/nvidia/tegra124/soc.c @@ -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"); } diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h index c162891fdd..6e3b2dacf1 100644 --- a/src/vendorcode/google/chromeos/chromeos.h +++ b/src/vendorcode/google/chromeos/chromeos.h @@ -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" diff --git a/src/vendorcode/google/chromeos/vboot_handoff.c b/src/vendorcode/google/chromeos/vboot_handoff.c index c3c5a138d7..71ac5cdb48 100644 --- a/src/vendorcode/google/chromeos/vboot_handoff.c +++ b/src/vendorcode/google/chromeos/vboot_handoff.c @@ -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)) { |