blob: 94ca4ae10f40ecdc2789851d4f7b7f24eea6363e [file] [log] [blame]
#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
#endif