Allows the ROM to be extracted from a PCI device.
V2: * Declare the PCI header in C * Replace #ifdef CONFIG_VGA_PCI with #if CONFIG_VGA_PCI == 1
Signed-off-by: Julian Pidancet julian.pidancet@gmail.com --- vgasrc/vga.c | 17 +++++++++++++++++ vgasrc/vgaentry.S | 11 ++++++++++- 2 files changed, 27 insertions(+), 1 deletions(-)
diff --git a/vgasrc/vga.c b/vgasrc/vga.c index b515d1d..748ddd4 100644 --- a/vgasrc/vga.c +++ b/vgasrc/vga.c @@ -15,6 +15,8 @@ #include "biosvar.h" // GET_BDA #include "util.h" // memset #include "vgatables.h" // find_vga_entry +#include "optionroms.h" // struct pci_data +#include "config.h" // CONFIG_*
// XXX #define CONFIG_VGA_BOCHS 0 @@ -26,6 +28,21 @@
#define SET_VGA(var, val) SET_FARVAR(get_global_seg(), (var), (val))
+/**************************************************************** + * PCI Data + ****************************************************************/ +#if CONFIG_VGA_PCI == 1 +struct pci_data rom_pci_data VAR16VISIBLE = { + .signature = PCI_ROM_SIGNATURE, + .vendor = CONFIG_VGA_VID, + .device = CONFIG_VGA_DID, + .dlen = 0x18, + .class_hi = 0x300, + .irevision = 1, + .type = PCIROM_CODETYPE_X86, + .indicator = 0x80, +}; +#endif
/**************************************************************** * Helper functions diff --git a/vgasrc/vgaentry.S b/vgasrc/vgaentry.S index fbfa9f7..2dc07c1 100644 --- a/vgasrc/vgaentry.S +++ b/vgasrc/vgaentry.S @@ -12,6 +12,7 @@ .code16gcc #include "vgaccode.16.s"
+#include "config.h" // CONFIG_* #include "entryfuncs.S" // ENTRY_*
@@ -30,7 +31,15 @@ _rom_header_entry: _rom_header_checksum: .byte 0 _rom_header_other: - .space 21 + .space 17 +_rom_header_pcidata: +#if CONFIG_VGA_PCI == 1 + .word rom_pci_data +#else + .word 0 +#endif +_rom_header_pnpdata: + .word 0
/****************************************************************