| #ifndef __OPTIONROMS_H |
| #define __OPTIONROMS_H |
| |
| #include "types.h" // u32 |
| |
| #define OPTION_ROM_SIGNATURE 0xaa55 |
| |
| struct rom_header { |
| u16 signature; |
| u8 size; |
| u8 initVector[4]; |
| u8 reserved[17]; |
| u16 pcioffset; |
| u16 pnpoffset; |
| } PACKED; |
| |
| #define PCI_ROM_SIGNATURE 0x52494350 // "PCIR" |
| |
| struct pci_data { |
| u32 signature; |
| u16 vendor; |
| u16 device; |
| u16 vitaldata; |
| u16 dlen; |
| u8 drevision; |
| u8 class_lo; |
| u16 class_hi; |
| u16 ilen; |
| u16 irevision; |
| u8 type; |
| u8 indicator; |
| u16 reserved; |
| } PACKED; |
| |
| struct pnp_data { |
| u32 signature; |
| u8 revision; |
| u8 len; |
| u16 nextoffset; |
| u8 reserved_08; |
| u8 checksum; |
| u32 devid; |
| u16 manufacturer; |
| u16 productname; |
| u8 type_lo; |
| u16 type_hi; |
| u8 dev_flags; |
| u16 bcv; |
| u16 dv; |
| u16 bev; |
| u16 reserved_1c; |
| u16 staticresource; |
| } PACKED; |
| |
| #define OPTION_ROM_ALIGN 2048 |
| #define OPTION_ROM_INITVECTOR offsetof(struct rom_header, initVector[0]) |
| #define PCIROM_CODETYPE_X86 0 |
| |
| void |
| callrom(struct rom_header *rom, u16 bdf); |
| |
| #endif |