summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/device/pci_device.c11
-rw-r--r--src/include/bootmode.h3
-rw-r--r--src/lib/bootmode.c17
-rw-r--r--src/mainboard/google/bolt/chromeos.c2
-rw-r--r--src/mainboard/google/butterfly/chromeos.c2
-rw-r--r--src/mainboard/google/falco/chromeos.c2
-rw-r--r--src/mainboard/google/link/chromeos.c2
-rw-r--r--src/mainboard/google/link/i915.c4
-rw-r--r--src/mainboard/google/parrot/chromeos.c2
-rw-r--r--src/mainboard/google/peppy/chromeos.c2
-rw-r--r--src/mainboard/google/rambi/chromeos.c2
-rw-r--r--src/mainboard/google/slippy/chromeos.c2
-rw-r--r--src/mainboard/google/slippy/gma.c4
-rw-r--r--src/mainboard/google/stout/chromeos.c2
-rw-r--r--src/mainboard/google/stout/i915.c4
-rw-r--r--src/mainboard/intel/baskingridge/chromeos.c2
-rw-r--r--src/mainboard/intel/emeraldlake2/chromeos.c2
-rw-r--r--src/mainboard/intel/wtm2/chromeos.c2
-rw-r--r--src/mainboard/intel/wtm2/i915.c4
-rw-r--r--src/mainboard/lenovo/x60/i915.c2
-rw-r--r--src/mainboard/samsung/lumpy/chromeos.c2
-rw-r--r--src/mainboard/samsung/stumpy/chromeos.c2
-rw-r--r--src/northbridge/intel/haswell/gma.c3
-rw-r--r--src/northbridge/intel/i945/gma.c5
-rw-r--r--src/northbridge/intel/sandybridge/gma.c5
-rw-r--r--src/vendorcode/google/chromeos/chromeos.h1
26 files changed, 53 insertions, 38 deletions
diff --git a/src/device/pci_device.c b/src/device/pci_device.c
index ca3604611d..dfc08987e7 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 d64bf93291..a2c3411c0b 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 156321f790..98184901df 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 76f2c313c8..57241017c8 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 b5a645fb24..397679aa0f 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 51d625b82c..780e58f2f9 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 dd1606f1cc..33069b15f1 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 a38760b1a5..2b62bf45c8 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 6f50a794b2..1e79e4bb40 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 51d625b82c..780e58f2f9 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 f6f13edc24..636aae112b 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 51d625b82c..780e58f2f9 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 e698fc918e..f2f93b141c 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 0e43250008..297626cd84 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 8085de6554..4ebd567efe 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 6bf5116c64..7b64f10604 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 4d998ec4e8..2194973fb5 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 594b4a75d3..a5ca4eb88b 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 b664c35ebf..64fa6b1ce2 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 4870fd83dc..b41a0baaa1 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 afbdeeb9d0..c9fa1d973f 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 e639fd3cbd..be1837061e 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 2ceffe4a83..0c56f76018 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 433152c26d..453e9c86b9 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 b9a07a2d72..2d8bd77e9c 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 9430276abb..e501427901 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);