diff --git a/src/devices/pci_rom.c b/src/devices/pci_rom.c index 702f010eb5..9eaea84115 100644 --- a/src/devices/pci_rom.c +++ b/src/devices/pci_rom.c @@ -31,32 +31,40 @@ struct rom_header * pci_rom_probe(struct device *dev) { - unsigned long rom_address; + unsigned long rom_address = 0; struct rom_header *rom_header; struct pci_data *rom_data; if (CONFIG_ROMFS) { - rom_address = (unsigned long) romfs_load_optionrom(dev->vendor, dev->device, NULL); + void *v; /* if it's in FLASH, then it's as if dev->on_mainboard was true */ - dev->on_mainboard = 1; - /* and we might as well set the address correctly */ - dev->rom_address = rom_address; - } else if (dev->on_mainboard) { + v = romfs_load_optionrom(dev->vendor, dev->device, NULL); + printk_debug("In cbfs, rom address for %s = %lx\n", + dev_path(dev), rom_address); + if (v) { + dev->rom_address = v; + dev->on_mainboard = 1; + } + } + + if (dev->on_mainboard) { /* this is here as a legacy path. We hope it goes away soon. Users should not have to * compute the ROM address at build time! */ // in case some device PCI_ROM_ADDRESS can not be set or readonly rom_address = dev->rom_address; + printk_debug("On mainboard, rom address for %s = %lx\n", + dev_path(dev), rom_address); } else { rom_address = pci_read_config32(dev, PCI_ROM_ADDRESS); + printk_debug("On card, rom address for %s = %lx\n", + dev_path(dev), rom_address); } if (rom_address == 0x00000000 || rom_address == 0xffffffff) { return NULL; } - printk_debug("rom address for %s = %lx\n", dev_path(dev), rom_address); - if(!dev->on_mainboard) { /* enable expansion ROM address decoding */ pci_write_config32(dev, PCI_ROM_ADDRESS, diff --git a/src/mainboard/emulation/qemu-x86/Options.lb b/src/mainboard/emulation/qemu-x86/Options.lb index b45f97be9c..a6e09ba1f3 100644 --- a/src/mainboard/emulation/qemu-x86/Options.lb +++ b/src/mainboard/emulation/qemu-x86/Options.lb @@ -49,7 +49,7 @@ uses CONFIG_ROMFS default CONFIG_CONSOLE_SERIAL8250=1 default DEFAULT_CONSOLE_LOGLEVEL=8 default MAXIMUM_CONSOLE_LOGLEVEL=8 -default CONFIG_ROMFS=0 +default CONFIG_ROMFS=1 ## ROM_SIZE is the size of boot ROM that this board will use. default ROM_SIZE = 256*1024 diff --git a/targets/emulation/qemu-x86/Config.lb b/targets/emulation/qemu-x86/Config.lb index 7bdfda5ad4..308371305f 100644 --- a/targets/emulation/qemu-x86/Config.lb +++ b/targets/emulation/qemu-x86/Config.lb @@ -10,12 +10,12 @@ option CC="gcc -m32" option HAVE_PIRQ_TABLE=1 option IRQ_SLOT_COUNT=6 -romimage "image" +romimage "normal" option ROM_IMAGE_SIZE=0x10000 option COREBOOT_EXTRA_VERSION="-GRUB2" # payload /home/stepan/core.img payload ../payload.elf end -buildrom ./coreboot.rom ROM_SIZE "image" +buildrom ./coreboot.rom ROM_SIZE "normal"