[coreboot-gerrit] New patch to review for coreboot: 8dff8d5 tegra124: Skip display init when vboot says we don't need it.

Marc Jones (marc.jones@se-eng.com) gerrit at coreboot.org
Tue Dec 9 23:07:15 CET 2014


Marc Jones (marc.jones at se-eng.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7734

-gerrit

commit 8dff8d5bafdd44ff8036bde27935fc73c28db598
Author: Gabe Black <gabeblack at google.com>
Date:   Mon Mar 31 21:01:14 2014 -0700

    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 at google.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/192544
    Original-Reviewed-by: Tom Warren <twarren at nvidia.com>
    Original-Reviewed-by: Hung-Te Lin <hungte at chromium.org>
    Original-Commit-Queue: Gabe Black <gabeblack at chromium.org>
    Original-Tested-by: Gabe Black <gabeblack at chromium.org>
    (cherry picked from commit a672d18c3570e6991a1c1c0089697112a4cd71d0)
    Signed-off-by: Marc Jones <marc.jones at se-eng.com>
    
    Change-Id: I95e8bd7a447876174305f755cc632365ed6f5a30
---
 src/soc/nvidia/tegra124/soc.c                  |  6 +++++-
 src/vendorcode/google/chromeos/chromeos.h      |  2 ++
 src/vendorcode/google/chromeos/vboot_handoff.c | 12 ++++++++++++
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/src/soc/nvidia/tegra124/soc.c b/src/soc/nvidia/tegra124/soc.c
index 08a4cf8..48e50bd 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 c162891..c4e4448 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;
 }
+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 c3c5a13..71ac5cd 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)) {



More information about the coreboot-gerrit mailing list