blob: 2fb2f7a8d519e21e3bce4c360e62d54f7581f07a [file] [log] [blame]
Yinghai Lu6308d582005-01-13 18:42:22 +00001#ifndef PCI_ROM_H
2#define PCI_ROM_H
Julius Werner9ff8f6f2015-02-23 14:31:09 -08003#include <endian.h>
Li-Ta Lo883b8792005-01-10 23:16:22 +00004#include <stddef.h>
5
6#define PCI_ROM_HDR 0xAA55
7#define PCI_DATA_HDR (uint32_t) ( ('R' << 24) | ('I' << 16) | ('C' << 8) | 'P' )
8
9#define PCI_RAM_IMAGE_START 0xD0000
10#define PCI_VGA_RAM_IMAGE_START 0xC0000
11
12struct rom_header {
13 uint16_t signature;
14 uint8_t size;
15 uint8_t init[3];
16 uint8_t reserved[0x12];
17 uint16_t data;
18};
19
20struct pci_data {
21 uint32_t signature;
22 uint16_t vendor;
23 uint16_t device;
24 uint16_t reserved_1;
25 uint16_t dlen;
26 uint8_t drevision;
Yinghai Lu54ab3112005-01-18 03:10:46 +000027 uint8_t class_lo;
28 uint16_t class_hi;
Li-Ta Lo883b8792005-01-10 23:16:22 +000029 uint16_t ilen;
30 uint16_t irevision;
31 uint8_t type;
32 uint8_t indicator;
33 uint16_t reserved_2;
34};
Yinghai Lu6308d582005-01-13 18:42:22 +000035
Stefan Reinauerf5c38c02009-07-22 01:42:13 +000036struct rom_header *pci_rom_probe(struct device *dev);
37struct rom_header *pci_rom_load(struct device *dev, struct rom_header *rom_header);
Kyösti Mälkki1bdd3212014-12-26 13:29:09 +020038u32 map_oprom_vendev(u32 vendev);
arch import user (historical)23053642005-07-06 16:49:59 +000039
Yinghai Lu6308d582005-01-13 18:42:22 +000040#endif