1*6854f87cSSimon Glass /* 2*6854f87cSSimon Glass * From coreboot file of same name 3*6854f87cSSimon Glass * 4*6854f87cSSimon Glass * SPDX-License-Identifier: GPL-2.0+ 5*6854f87cSSimon Glass */ 6*6854f87cSSimon Glass 7*6854f87cSSimon Glass #ifndef _PCI_ROM_H 8*6854f87cSSimon Glass #define _PCI_ROM_H 9*6854f87cSSimon Glass 10*6854f87cSSimon Glass #define PCI_ROM_HDR 0xaa55 11*6854f87cSSimon Glass #define PCI_VGA_RAM_IMAGE_START 0xc0000 12*6854f87cSSimon Glass 13*6854f87cSSimon Glass struct pci_rom_header { 14*6854f87cSSimon Glass uint16_t signature; 15*6854f87cSSimon Glass uint8_t size; 16*6854f87cSSimon Glass uint8_t init[3]; 17*6854f87cSSimon Glass uint8_t reserved[0x12]; 18*6854f87cSSimon Glass uint16_t data; 19*6854f87cSSimon Glass }; 20*6854f87cSSimon Glass 21*6854f87cSSimon Glass struct pci_rom_data { 22*6854f87cSSimon Glass uint32_t signature; 23*6854f87cSSimon Glass uint16_t vendor; 24*6854f87cSSimon Glass uint16_t device; 25*6854f87cSSimon Glass uint16_t reserved_1; 26*6854f87cSSimon Glass uint16_t dlen; 27*6854f87cSSimon Glass uint8_t drevision; 28*6854f87cSSimon Glass uint8_t class_lo; 29*6854f87cSSimon Glass uint16_t class_hi; 30*6854f87cSSimon Glass uint16_t ilen; 31*6854f87cSSimon Glass uint16_t irevision; 32*6854f87cSSimon Glass uint8_t type; 33*6854f87cSSimon Glass uint8_t indicator; 34*6854f87cSSimon Glass uint16_t reserved_2; 35*6854f87cSSimon Glass }; 36*6854f87cSSimon Glass 37*6854f87cSSimon Glass /** 38*6854f87cSSimon Glass * pci_run_vga_bios() - Run the VGA BIOS in an x86 PC 39*6854f87cSSimon Glass * 40*6854f87cSSimon Glass * @dev: Video device containing the BIOS 41*6854f87cSSimon Glass * @int15_handler: Function to call to handle int 0x15 42*6854f87cSSimon Glass * @emulate: true to use the x86 emulator, false to run native 43*6854f87cSSimon Glass */ 44*6854f87cSSimon Glass int pci_run_vga_bios(pci_dev_t dev, int (*int15_handler)(void), bool emulate); 45*6854f87cSSimon Glass 46*6854f87cSSimon Glass /** 47*6854f87cSSimon Glass * board_map_oprom_vendev() - map several PCI IDs to the one the ROM expects 48*6854f87cSSimon Glass * 49*6854f87cSSimon Glass * Some VGA option roms are used for several chipsets but they only have one 50*6854f87cSSimon Glass * PCI ID in their header. If we encounter such an option rom, we need to do 51*6854f87cSSimon Glass * the mapping ourselves. 52*6854f87cSSimon Glass * 53*6854f87cSSimon Glass * @vendev: Vendor and device for the video device 54*6854f87cSSimon Glass * @return standard vendor and device expected by the ROM 55*6854f87cSSimon Glass */ 56*6854f87cSSimon Glass uint32_t board_map_oprom_vendev(uint32_t vendev); 57*6854f87cSSimon Glass 58*6854f87cSSimon Glass #endif 59