diff options
author | Aaron Durbin <adurbin@chromium.org> | 2015-09-02 09:21:36 -0500 |
---|---|---|
committer | Aaron Durbin <adurbin@chromium.org> | 2015-09-04 15:09:00 +0000 |
commit | bc98cc66b2fe787173ec04b84ea11bc3e57fe373 (patch) | |
tree | 15e1aa71a74fd52bfbc25f0055c3015cb31ca983 /src/soc | |
parent | 5fc6f90ef7d3a69e87a004b07b99ef337c6d3380 (diff) |
bootmode: add display_init_required()
Some of the Chrome OS boards were directly calling vboot
called in some form after contorting around #ifdef preprocessor
macros. The reasoning is that Chrome OS doesn't always do display
initialization during startup. It's runtime dependent. While
this is a requirement that doesn't mean vboot functions should be
sprinkled around in the mainboard and chipset code. Instead provide
one function, display_init_required(), that provides the policy
for determining display initialization action. For Chrome OS
devices this function honors vboot_skip_display_init() and all
other configurations default to initializing display.
Change-Id: I403213e22c0e621e148773597a550addfbaf3f7e
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/11490
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
Diffstat (limited to 'src/soc')
-rw-r--r-- | src/soc/nvidia/tegra124/soc.c | 8 | ||||
-rw-r--r-- | src/soc/nvidia/tegra132/soc.c | 13 | ||||
-rw-r--r-- | src/soc/nvidia/tegra210/soc.c | 13 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/soc.c | 8 |
4 files changed, 22 insertions, 20 deletions
diff --git a/src/soc/nvidia/tegra124/soc.c b/src/soc/nvidia/tegra124/soc.c index 406457bc79..c38232daec 100644 --- a/src/soc/nvidia/tegra124/soc.c +++ b/src/soc/nvidia/tegra124/soc.c @@ -20,13 +20,13 @@ */ #include <arch/io.h> +#include <bootmode.h> #include <console/console.h> #include <device/device.h> #include <soc/nvidia/tegra/dc.h> #include <soc/display.h> #include <soc/sdram.h> #include <symbols.h> -#include <vendorcode/google/chromeos/chromeos.h> #include "chip.h" @@ -53,10 +53,10 @@ static void soc_enable(device_t dev) static void soc_init(device_t dev) { - if (vboot_skip_display_init()) - printk(BIOS_INFO, "Skipping display init.\n"); - else + if (display_init_required()) display_startup(dev); + else + printk(BIOS_INFO, "Skipping display init.\n"); printk(BIOS_INFO, "CPU: Tegra124\n"); } diff --git a/src/soc/nvidia/tegra132/soc.c b/src/soc/nvidia/tegra132/soc.c index 4ca866cbf6..a65f36d430 100644 --- a/src/soc/nvidia/tegra132/soc.c +++ b/src/soc/nvidia/tegra132/soc.c @@ -22,6 +22,7 @@ #include <arch/cache.h> #include <arch/spintable.h> #include <cpu/cpu.h> +#include <bootmode.h> #include <bootstate.h> #include <cbmem.h> #include <console/console.h> @@ -34,7 +35,6 @@ #include <soc/nvidia/tegra/apbmisc.h> #include <string.h> #include <timer.h> -#include <vendorcode/google/chromeos/chromeos.h> #include "chip.h" @@ -101,12 +101,13 @@ static void soc_init(device_t dev) /* Lock down VPR */ lock_down_vpr(); -#if IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT) - if (vboot_skip_display_init()) - printk(BIOS_INFO, "Skipping display init.\n"); - else + if (!IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT)) + return; + + if (display_init_required()) display_startup(dev); -#endif + else + printk(BIOS_INFO, "Skipping display init.\n"); } static struct device_operations soc_ops = { diff --git a/src/soc/nvidia/tegra210/soc.c b/src/soc/nvidia/tegra210/soc.c index 9e67531b76..981b09c8a2 100644 --- a/src/soc/nvidia/tegra210/soc.c +++ b/src/soc/nvidia/tegra210/soc.c @@ -22,6 +22,7 @@ #include <arch/cache.h> #include <arch/spintable.h> #include <cpu/cpu.h> +#include <bootmode.h> #include <bootstate.h> #include <cbmem.h> #include <console/console.h> @@ -35,7 +36,6 @@ #include <soc/nvidia/tegra/apbmisc.h> #include <string.h> #include <timer.h> -#include <vendorcode/google/chromeos/chromeos.h> #include <soc/sdram.h> #include <soc/sdram_configs.h> @@ -92,12 +92,13 @@ static void soc_init(device_t dev) spintable_init((void *)cfg->spintable_addr); arch_initialize_cpus(dev, &cntrl_ops); -#if IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT) - if (vboot_skip_display_init()) - printk(BIOS_INFO, "Skipping display init.\n"); - else + if (!IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT)) + return; + + if (display_init_required()) display_startup(dev); -#endif + else + printk(BIOS_INFO, "Skipping display init.\n"); } static void soc_noop(device_t dev) diff --git a/src/soc/rockchip/rk3288/soc.c b/src/soc/rockchip/rk3288/soc.c index a13086a21f..a9484b4831 100644 --- a/src/soc/rockchip/rk3288/soc.c +++ b/src/soc/rockchip/rk3288/soc.c @@ -18,6 +18,7 @@ */ #include <arch/cache.h> +#include <bootmode.h> #include <cbmem.h> #include <console/console.h> #include <delay.h> @@ -30,18 +31,17 @@ #include <stdlib.h> #include <string.h> #include <symbols.h> -#include <vendorcode/google/chromeos/chromeos.h> #include "chip.h" static void soc_init(device_t dev) { ram_resource(dev, 0, (uintptr_t)_dram/KiB, sdram_size_mb()*(MiB/KiB)); - if (vboot_skip_display_init()) - printk(BIOS_INFO, "Skipping display init.\n"); - else + if (display_init_required()) rk_display_init(dev, (uintptr_t)_framebuffer, _framebuffer_size); + else + printk(BIOS_INFO, "Skipping display init.\n"); } static struct device_operations soc_ops = { |