Some changes for option roms:
authorRonald G. Minnich <rminnich@gmail.com>
Mon, 6 Apr 2009 20:38:34 +0000 (20:38 +0000)
committerRonald G. Minnich <rminnich@gmail.com>
Mon, 6 Apr 2009 20:38:34 +0000 (20:38 +0000)
- don't make users pick the name. Names for option roms are in the v3-defined
format of pci%04x,%04x.rom with the vendor and device id filling in the
%04x.
- users pass in vendor and device id.
- users pass in a dest. If the dest is 0, the address of the ROM image in
FLASH is returned. If the address is non-zero, then the decmpressor is called,
and it will make sure the ROM image is copied to the destination (even
in the uncompressed case).

move qemu over to always using ROMFS

Signed-off-by: Ronald G. Minnich <rminnich@gmail.com>
Acked-by: Patrick Georgi <patrick.georgi@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4078 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

src/devices/pci_rom.c
src/mainboard/emulation/qemu-x86/Options.lb
targets/emulation/qemu-x86/Config.lb

index 702f010eb543dd7c8f4ec23d4cb290f7e0aa28e1..9eaea84115910e85c857e3099c1a2dc73c4575d6 100644 (file)
 
 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,
index b45f97be9c38daaf3a0c01e801e263aaae9415e8..a6e09ba1f3fb0ffe96967fc74d8135d7b52d4879 100644 (file)
@@ -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
index 7bdfda5ad4567e98d538d93e5885203f8a348ada..308371305fa26d63a87820a0f3469f27ae503757 100644 (file)
@@ -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"