Kyösti Mälkki (kyosti.malkki@gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4309
-gerrit
commit 5ac441586ab342ae2b687a5b83b4dd2d1a475809 Author: Kyösti Mälkki kyosti.malkki@gmail.com Date: Thu Nov 28 16:44:51 2013 +0200
ChromeOS: Remove oprom_is_loaded
A global flag oprom_is_loaded was used to indicate to U-boot that VGA option ROM was loaded and run, or that native VGA init was completed on GMA device.
Implement this feature without dependency to CHROMEOS option and replace use of global variable oprom_is_loaded with call to gfx_get_init_done().
Change-Id: I7e1afd752f18e5346dabdee62e4f7ea08ada5faf Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- src/device/pci_device.c | 11 +++-------- src/include/bootmode.h | 3 +++ src/lib/bootmode.c | 17 +++++++++++++++++ src/mainboard/google/bolt/chromeos.c | 2 +- src/mainboard/google/butterfly/chromeos.c | 2 +- src/mainboard/google/falco/chromeos.c | 2 +- src/mainboard/google/link/chromeos.c | 2 +- src/mainboard/google/link/i915.c | 4 +--- src/mainboard/google/parrot/chromeos.c | 2 +- src/mainboard/google/peppy/chromeos.c | 2 +- src/mainboard/google/rambi/chromeos.c | 2 +- src/mainboard/google/slippy/chromeos.c | 2 +- src/mainboard/google/slippy/gma.c | 4 +--- src/mainboard/google/stout/chromeos.c | 2 +- src/mainboard/google/stout/i915.c | 4 +--- src/mainboard/intel/baskingridge/chromeos.c | 2 +- src/mainboard/intel/emeraldlake2/chromeos.c | 2 +- src/mainboard/intel/wtm2/chromeos.c | 2 +- src/mainboard/intel/wtm2/i915.c | 4 +--- src/mainboard/lenovo/x60/i915.c | 2 +- src/mainboard/samsung/lumpy/chromeos.c | 2 +- src/mainboard/samsung/stumpy/chromeos.c | 2 +- src/northbridge/intel/haswell/gma.c | 3 +++ src/northbridge/intel/i945/gma.c | 5 ++++- src/northbridge/intel/sandybridge/gma.c | 5 ++++- src/vendorcode/google/chromeos/chromeos.h | 1 - 26 files changed, 53 insertions(+), 38 deletions(-)
diff --git a/src/device/pci_device.c b/src/device/pci_device.c index ca36046..dfc0898 100644 --- a/src/device/pci_device.c +++ b/src/device/pci_device.c @@ -32,6 +32,7 @@ #include <device/device.h> #include <device/pci.h> #include <device/pci_ids.h> +#include <bootmode.h> #include <delay.h> #if CONFIG_HYPERTRANSPORT_PLUGIN_SUPPORT #include <device/hypertransport.h> @@ -660,10 +661,6 @@ void pci_dev_set_subsystem(struct device *dev, unsigned vendor, unsigned device) ((device & 0xffff) << 16) | (vendor & 0xffff)); }
-#if CONFIG_CHROMEOS -int oprom_is_loaded = 0; -#endif - #if CONFIG_VGA_ROM_RUN static int should_run_oprom(struct device *dev) { @@ -733,10 +730,8 @@ void pci_dev_init(struct device *dev) return;
run_bios(dev, (unsigned long)ram); -#if CONFIG_CHROMEOS - oprom_is_loaded = 1; - printk(BIOS_DEBUG, "VGA Option ROM has been loaded\n"); -#endif + gfx_set_init_done(1); + printk(BIOS_DEBUG, "VGA Option ROM was run\n"); #endif /* CONFIG_VGA_ROM_RUN */ }
diff --git a/src/include/bootmode.h b/src/include/bootmode.h index d64bf93..a2c3411 100644 --- a/src/include/bootmode.h +++ b/src/include/bootmode.h @@ -23,6 +23,9 @@ int get_developer_mode_switch(void); int get_recovery_mode_switch(void);
+int gfx_get_init_done(void); +void gfx_set_init_done(int done); + #if CONFIG_BOOTMODE_STRAPS int developer_mode_enabled(void); int recovery_mode_enabled(void); diff --git a/src/lib/bootmode.c b/src/lib/bootmode.c index 156321f..9818490 100644 --- a/src/lib/bootmode.c +++ b/src/lib/bootmode.c @@ -17,6 +17,7 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
+#include <rules.h> #include <bootmode.h> #if CONFIG_CHROMEOS || CONFIG_VBOOT_VERIFY_FIRMWARE #include <vendorcode/google/chromeos/chromeos.h> @@ -61,3 +62,19 @@ int recovery_mode_enabled(void) return 0; } #endif /* CONFIG_BOOTMODE_STRAPS */ + +#if ENV_RAMSTAGE +static int gfx_init_done = -1; + +int gfx_get_init_done(void) +{ + if (gfx_init_done < 0) + return 0; + return gfx_init_done; +} + +void gfx_set_init_done(int done) +{ + gfx_init_done = done; +} +#endif diff --git a/src/mainboard/google/bolt/chromeos.c b/src/mainboard/google/bolt/chromeos.c index 76f2c31..5724101 100644 --- a/src/mainboard/google/bolt/chromeos.c +++ b/src/mainboard/google/bolt/chromeos.c @@ -79,7 +79,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "lid", get_lid_switch()); fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "power", 0); - fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", oprom_is_loaded); + fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", gfx_get_init_done()); } #endif
diff --git a/src/mainboard/google/butterfly/chromeos.c b/src/mainboard/google/butterfly/chromeos.c index b5a645f..397679a 100644 --- a/src/mainboard/google/butterfly/chromeos.c +++ b/src/mainboard/google/butterfly/chromeos.c @@ -93,7 +93,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) /* Was VGA Option ROM loaded? */ gpios->gpios[5].port = -1; /* Indicate that this is a pseudo GPIO */ gpios->gpios[5].polarity = ACTIVE_HIGH; - gpios->gpios[5].value = oprom_is_loaded; + gpios->gpios[5].value = gfx_get_init_done(); strncpy((char *)gpios->gpios[5].name,"oprom", GPIO_MAX_NAME_LENGTH);
} diff --git a/src/mainboard/google/falco/chromeos.c b/src/mainboard/google/falco/chromeos.c index 51d625b..780e58f 100644 --- a/src/mainboard/google/falco/chromeos.c +++ b/src/mainboard/google/falco/chromeos.c @@ -76,7 +76,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "lid", get_lid_switch()); fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "power", 0); - fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", oprom_is_loaded); + fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", gfx_get_init_done()); } #endif
diff --git a/src/mainboard/google/link/chromeos.c b/src/mainboard/google/link/chromeos.c index dd1606f..33069b1 100644 --- a/src/mainboard/google/link/chromeos.c +++ b/src/mainboard/google/link/chromeos.c @@ -88,7 +88,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) /* Did we load the VGA Option ROM? */ gpios->gpios[5].port = -1; /* Indicate that this is a pseudo GPIO */ gpios->gpios[5].polarity = ACTIVE_HIGH; - gpios->gpios[5].value = oprom_is_loaded; + gpios->gpios[5].value = gfx_get_init_done(); strncpy((char *)gpios->gpios[5].name,"oprom", GPIO_MAX_NAME_LENGTH); } #endif diff --git a/src/mainboard/google/link/i915.c b/src/mainboard/google/link/i915.c index a38760b..2b62bf4 100644 --- a/src/mainboard/google/link/i915.c +++ b/src/mainboard/google/link/i915.c @@ -58,7 +58,6 @@ static unsigned int graphics; static unsigned short addrport; static unsigned short dataport; static unsigned int physbase; -extern int oprom_is_loaded; static u32 htotal, hblank, hsync, vtotal, vblank, vsync;
const u32 link_edid_data[] = { @@ -379,6 +378,5 @@ int i915lightup(unsigned int pphysbase, unsigned int piobase, printk(BIOS_SPEW, "%ld microseconds\n", globalmicroseconds()); set_vbe_mode_info_valid(&edid, graphics); i915_init_done = 1; - oprom_is_loaded = 1; - return 0; + return i915_init_done; } diff --git a/src/mainboard/google/parrot/chromeos.c b/src/mainboard/google/parrot/chromeos.c index 6f50a79..1e79e4b 100644 --- a/src/mainboard/google/parrot/chromeos.c +++ b/src/mainboard/google/parrot/chromeos.c @@ -84,7 +84,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) /* Did we load the VGA Option ROM? */ gpios->gpios[5].port = -1; /* Indicate that this is a pseudo GPIO */ gpios->gpios[5].polarity = ACTIVE_HIGH; - gpios->gpios[5].value = oprom_is_loaded; + gpios->gpios[5].value = gfx_get_init_done(); strncpy((char *)gpios->gpios[5].name,"oprom", GPIO_MAX_NAME_LENGTH);
} diff --git a/src/mainboard/google/peppy/chromeos.c b/src/mainboard/google/peppy/chromeos.c index 51d625b..780e58f 100644 --- a/src/mainboard/google/peppy/chromeos.c +++ b/src/mainboard/google/peppy/chromeos.c @@ -76,7 +76,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "lid", get_lid_switch()); fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "power", 0); - fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", oprom_is_loaded); + fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", gfx_get_init_done()); } #endif
diff --git a/src/mainboard/google/rambi/chromeos.c b/src/mainboard/google/rambi/chromeos.c index f6f13ed..636aae1 100644 --- a/src/mainboard/google/rambi/chromeos.c +++ b/src/mainboard/google/rambi/chromeos.c @@ -78,7 +78,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) get_developer_mode_switch()); fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "lid", get_lid_switch()); fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "power", 0); - fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", oprom_is_loaded); + fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", gfx_get_init_done()); } #endif
diff --git a/src/mainboard/google/slippy/chromeos.c b/src/mainboard/google/slippy/chromeos.c index 51d625b..780e58f 100644 --- a/src/mainboard/google/slippy/chromeos.c +++ b/src/mainboard/google/slippy/chromeos.c @@ -76,7 +76,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "lid", get_lid_switch()); fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "power", 0); - fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", oprom_is_loaded); + fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", gfx_get_init_done()); } #endif
diff --git a/src/mainboard/google/slippy/gma.c b/src/mainboard/google/slippy/gma.c index e698fc9..f2f93b1 100644 --- a/src/mainboard/google/slippy/gma.c +++ b/src/mainboard/google/slippy/gma.c @@ -89,7 +89,6 @@ static unsigned int graphics; static unsigned short addrport; static unsigned short dataport; static unsigned int physbase; -extern int oprom_is_loaded;
static int ioread = 0, iowrite = 0;
@@ -462,10 +461,9 @@ int i915lightup(unsigned int pphysbase, unsigned int piobase,
set_vbe_mode_info_valid(&dp->edid, graphics); i915_init_done = 1; - oprom_is_loaded = 1; //io_i915_write32( 0x80000000,BLC_PWM_CPU_CTL2); //io_i915_write32( 0x80000000,BLC_PWM_PCH_CTL1); - return 1; + return i915_init_done;
fail: printk(BIOS_SPEW, "Graphics could not be started;"); diff --git a/src/mainboard/google/stout/chromeos.c b/src/mainboard/google/stout/chromeos.c index 0e43250..297626c 100644 --- a/src/mainboard/google/stout/chromeos.c +++ b/src/mainboard/google/stout/chromeos.c @@ -82,7 +82,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) /* Was VGA Option ROM loaded? */ gpios->gpios[5].port = -1; /* Indicate that this is a pseudo GPIO */ gpios->gpios[5].polarity = ACTIVE_HIGH; - gpios->gpios[5].value = oprom_is_loaded; + gpios->gpios[5].value = gfx_get_init_done(); strncpy((char *)gpios->gpios[5].name,"oprom", GPIO_MAX_NAME_LENGTH);
/* EC is in RW mode when it isn't in recovery mode. */ diff --git a/src/mainboard/google/stout/i915.c b/src/mainboard/google/stout/i915.c index 8085de6..4ebd567 100644 --- a/src/mainboard/google/stout/i915.c +++ b/src/mainboard/google/stout/i915.c @@ -41,7 +41,6 @@ static unsigned int graphics; static unsigned short addrport; static unsigned short dataport; static unsigned int physbase; -extern int oprom_is_loaded;
#define READ32(addr) io_i915_READ32(addr) #define WRITE32(val, addr) io_i915_WRITE32(val, addr) @@ -278,6 +277,5 @@ int i915lightup(unsigned int pphysbase, memset((void *)graphics, 0, 4520*4096); printk(BIOS_SPEW, "%ld microseconds\n", globalmicroseconds()); i915_init_done = 1; - oprom_is_loaded = 1; - return 0; + return i915_init_done; } diff --git a/src/mainboard/intel/baskingridge/chromeos.c b/src/mainboard/intel/baskingridge/chromeos.c index 6bf5116..7b64f10 100644 --- a/src/mainboard/intel/baskingridge/chromeos.c +++ b/src/mainboard/intel/baskingridge/chromeos.c @@ -81,7 +81,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) /* Did we load the VGA option ROM? */ gpios->gpios[5].port = -1; gpios->gpios[5].polarity = ACTIVE_HIGH; - gpios->gpios[5].value = oprom_is_loaded; + gpios->gpios[5].value = gfx_get_init_done(); strncpy((char *)gpios->gpios[5].name,"oprom", GPIO_MAX_NAME_LENGTH); } #endif diff --git a/src/mainboard/intel/emeraldlake2/chromeos.c b/src/mainboard/intel/emeraldlake2/chromeos.c index 4d998ec..2194973 100644 --- a/src/mainboard/intel/emeraldlake2/chromeos.c +++ b/src/mainboard/intel/emeraldlake2/chromeos.c @@ -80,7 +80,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) /* Did we load the VGA option ROM? */ gpios->gpios[5].port = -1; gpios->gpios[5].polarity = ACTIVE_HIGH; - gpios->gpios[5].value = oprom_is_loaded; + gpios->gpios[5].value = gfx_get_init_done(); strncpy((char *)gpios->gpios[5].name,"oprom", GPIO_MAX_NAME_LENGTH); } #endif diff --git a/src/mainboard/intel/wtm2/chromeos.c b/src/mainboard/intel/wtm2/chromeos.c index 594b4a7..a5ca4eb 100644 --- a/src/mainboard/intel/wtm2/chromeos.c +++ b/src/mainboard/intel/wtm2/chromeos.c @@ -61,7 +61,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "developer", DEV_MODE_SETTING); fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "lid", 1); // force open fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "power", 0); - fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", oprom_is_loaded); + fill_lb_gpio(gpio++, -1, ACTIVE_HIGH, "oprom", gfx_get_init_done()); } #endif
diff --git a/src/mainboard/intel/wtm2/i915.c b/src/mainboard/intel/wtm2/i915.c index b664c35..64fa6b1 100644 --- a/src/mainboard/intel/wtm2/i915.c +++ b/src/mainboard/intel/wtm2/i915.c @@ -70,7 +70,6 @@ static unsigned int graphics; static unsigned short addrport; static unsigned short dataport; static unsigned int physbase; -extern int oprom_is_loaded;
const u32 link_edid_data[] = { 0xffffff00, 0x00ffffff, 0x0379e430, 0x00000000, @@ -220,8 +219,7 @@ int i915lightup(unsigned int pphysbase, unsigned int piobase, */
i915_init_done = 1; - oprom_is_loaded = 1; - return 1; + return i915_init_done;
fail: printk(BIOS_SPEW, "Graphics could not be started;"); diff --git a/src/mainboard/lenovo/x60/i915.c b/src/mainboard/lenovo/x60/i915.c index 4870fd8..b41a0ba 100644 --- a/src/mainboard/lenovo/x60/i915.c +++ b/src/mainboard/lenovo/x60/i915.c @@ -369,5 +369,5 @@ int i915lightup(unsigned int pphysbase, unsigned int piobase,
set_vbe_mode_info_valid(&edid, graphics);
- return 0; + return 1; } diff --git a/src/mainboard/samsung/lumpy/chromeos.c b/src/mainboard/samsung/lumpy/chromeos.c index afbdeeb..c9fa1d9 100644 --- a/src/mainboard/samsung/lumpy/chromeos.c +++ b/src/mainboard/samsung/lumpy/chromeos.c @@ -86,7 +86,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) /* Did we load the VGA Option ROM? */ gpios->gpios[5].port = -1; /* Indicate that this is a pseudo GPIO */ gpios->gpios[5].polarity = ACTIVE_HIGH; - gpios->gpios[5].value = oprom_is_loaded; + gpios->gpios[5].value = gfx_get_init_done(); strncpy((char *)gpios->gpios[5].name,"oprom", GPIO_MAX_NAME_LENGTH); } #endif diff --git a/src/mainboard/samsung/stumpy/chromeos.c b/src/mainboard/samsung/stumpy/chromeos.c index e639fd3..be18370 100644 --- a/src/mainboard/samsung/stumpy/chromeos.c +++ b/src/mainboard/samsung/stumpy/chromeos.c @@ -83,7 +83,7 @@ void fill_lb_gpios(struct lb_gpios *gpios) /* Did we load the VGA Option ROM? */ gpios->gpios[5].port = -1; /* Indicate that this is a pseudo GPIO */ gpios->gpios[5].polarity = ACTIVE_HIGH; - gpios->gpios[5].value = oprom_is_loaded; + gpios->gpios[5].value = gfx_get_init_done(); strncpy((char *)gpios->gpios[5].name,"oprom", GPIO_MAX_NAME_LENGTH); } #endif diff --git a/src/northbridge/intel/haswell/gma.c b/src/northbridge/intel/haswell/gma.c index 2ceffe4..0c56f76 100644 --- a/src/northbridge/intel/haswell/gma.c +++ b/src/northbridge/intel/haswell/gma.c @@ -19,6 +19,7 @@
#include <arch/io.h> #include <console/console.h> +#include <bootmode.h> #include <delay.h> #include <device/device.h> #include <device/pci.h> @@ -408,6 +409,8 @@ static void gma_func0_init(struct device *dev)
int i915lightup(u32 physbase, u32 iobase, u32 mmiobase, u32 gfx); lightup_ok = i915lightup(physbase, iobase, mmiobase, graphics_base); + if (lightup_ok) + gfx_set_init_done(1); #endif if (! lightup_ok) { printk(BIOS_SPEW, "FUI did not run; using VBIOS\n"); diff --git a/src/northbridge/intel/i945/gma.c b/src/northbridge/intel/i945/gma.c index 433152c..453e9c8 100644 --- a/src/northbridge/intel/i945/gma.c +++ b/src/northbridge/intel/i945/gma.c @@ -18,6 +18,7 @@ */
#include <console/console.h> +#include <bootmode.h> #include <delay.h> #include <device/device.h> #include <device/pci.h> @@ -63,7 +64,9 @@ static void gma_func0_init(struct device *dev) );
int i915lightup(u32 physbase, u32 iobase, u32 mmiobase, u32 gfx); - i915lightup(uma_memory_base, iobase, mmiobase, graphics_base); + int lightup_ok = i915lightup(uma_memory_base, iobase, mmiobase, graphics_base); + if (lightup_ok) + gfx_set_init_done(1); #endif
} diff --git a/src/northbridge/intel/sandybridge/gma.c b/src/northbridge/intel/sandybridge/gma.c index b9a07a2..2d8bd77 100644 --- a/src/northbridge/intel/sandybridge/gma.c +++ b/src/northbridge/intel/sandybridge/gma.c @@ -19,6 +19,7 @@
#include <arch/io.h> #include <console/console.h> +#include <bootmode.h> #include <delay.h> #include <device/device.h> #include <device/pci.h> @@ -649,7 +650,9 @@ static void gma_func0_init(struct device *dev) graphics_base = dev->resource_list[1].base;
int i915lightup(u32 physbase, u32 iobase, u32 mmiobase, u32 gfx); - i915lightup(physbase, iobase, mmiobase, graphics_base); + int lightup_ok = i915lightup(physbase, iobase, mmiobase, graphics_base); + if (lightup_ok) + gfx_set_init_done(1); #endif }
diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h index 9430276..e501427 100644 --- a/src/vendorcode/google/chromeos/chromeos.h +++ b/src/vendorcode/google/chromeos/chromeos.h @@ -33,7 +33,6 @@ void save_chromeos_gpios(void); /* functions implemented in vbnv.c: */ int get_recovery_mode_from_vbnv(void); int vboot_wants_oprom(void); -extern int oprom_is_loaded;
void read_vbnv(uint8_t *vbnv_copy); void save_vbnv(const uint8_t *vbnv_copy);