diff --git a/device/pci_device.c b/device/pci_device.c index 2b09e3301f..1ed1226f3a 100644 --- a/device/pci_device.c +++ b/device/pci_device.c @@ -649,9 +649,9 @@ void pci_dev_set_subsystem(struct device *dev, unsigned int vendor, void pci_dev_init(struct device *dev) { + printk(BIOS_SPEW, "PCI: pci_dev_init\n"); #if defined(CONFIG_PCI_OPTION_ROM_RUN) && CONFIG_PCI_OPTION_ROM_RUN == 1 void run_bios(struct device *dev, unsigned long addr); - void do_vgabios(void); struct rom_header *rom, *ram; printk(BIOS_INFO, "Probing for option ROM\n"); @@ -661,15 +661,8 @@ void pci_dev_init(struct device *dev) ram = pci_rom_load(dev, rom); if (ram == NULL) return; -#if defined(CONFIG_PCI_OPTION_ROM_RUN_X86EMU) && \ - CONFIG_PCI_OPTION_ROM_RUN_X86EMU == 1 run_bios(dev, ram); #endif -#if defined(CONFIG_PCI_OPTION_ROM_RUN_VM86) && \ - CONFIG_PCI_OPTION_ROM_RUN_VM86 == 1 - do_vgabios(); -#endif -#endif } /** Default device operation for PCI devices. */ diff --git a/util/x86emu/vm86.c b/util/x86emu/vm86.c index 60fe5d82b7..1f95309576 100644 --- a/util/x86emu/vm86.c +++ b/util/x86emu/vm86.c @@ -307,13 +307,8 @@ void vga_enable_console(void) ); } -void do_vgabios(void) +void run_bios(struct device *dev, unsigned long addr) { - struct device *dev; - unsigned int busdevfn; - unsigned long rom = 0; - unsigned char *buf; - unsigned int size = 64*1024; int i; /* clear vga bios data area */ @@ -321,41 +316,7 @@ void do_vgabios(void) *(unsigned char *) i = 0; } - dev = dev_find_class(PCI_CLASS_DISPLAY_VGA<<8 , 0); - - if (!dev) { - printk(BIOS_DEBUG, "NO VGA FOUND\n"); - return; - } - printk(BIOS_DEBUG,"found VGA: vid=%x, did=%x\n", dev->vendor, dev->device); - - /* declare rom address here - keep any config data out of the way - * of core LXB stuff */ -#warning fix rom address - rom = 0xc0000; - pci_write_config32(dev, PCI_ROM_ADDRESS, rom|1); - printk(BIOS_DEBUG, "rom base, size: %p\n", (void *)rom); - - buf = (unsigned char *) rom; - if ((buf[0] == 0x55) && (buf[1] == 0xaa)) { - memcpy((void *) 0xc0000, buf, size); - -#warning Implement write_protect_vgabios() - //write_protect_vgabios(); // in northbridge - - // check signature again - buf = (unsigned char *) 0xc0000; - if (buf[0]==0x55 && buf[1]==0xAA) { - busdevfn = (dev->bus->secondary << 8) | dev->path.u.pci.devfn; - printk(BIOS_DEBUG, "bus/devfn = %#x\n", busdevfn); - - real_mode_switch_call_vga(busdevfn); - } else - printk(BIOS_DEBUG, "Failed to copy VGA BIOS to 0xc0000\n"); - } else - printk(BIOS_DEBUG, "BAD SIGNATURE 0x%x 0x%x\n", buf[0], buf[1]); - - pci_write_config32(dev, PCI_ROM_ADDRESS, 0); + real_mode_switch_call_vga((dev->bus->secondary << 8) | dev->path.u.pci.devfn); }