Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / drivers / pci_database.h
1 typedef struct pci_config_t pci_config_t;
2
3 struct pci_config_t {
4         char path[256];
5         uint32_t dev;           /* bus, dev, fn */
6         uint32_t regions[7];
7         uint32_t assigned[7];
8         uint32_t sizes[7];
9         int irq_pin;
10         int irq_line;
11         u32 primary_bus;
12         u32 secondary_bus;
13         u32 subordinate_bus;
14 };
15
16 typedef struct pci_dev_t pci_dev_t;
17 struct pci_dev_t {
18     uint16_t vendor;
19     uint16_t product;
20     const char *type;
21     const char *name;
22     const char *model;
23     const char *compat;
24     int acells;
25     int scells;
26     int icells;
27     int (*config_cb)(const pci_config_t *config);
28     const void *private;
29 };
30
31 extern int ide_config_cb2(const pci_config_t *config);
32 extern int eth_config_cb(const pci_config_t *config);
33 extern int macio_heathrow_config_cb(const pci_config_t *config);
34 extern int macio_keylargo_config_cb(const pci_config_t *config);
35 extern int vga_config_cb(const pci_config_t *config);
36 extern int host_config_cb(const pci_config_t *config);
37 extern int sabre_config_cb(const pci_config_t *config);
38 extern int bridge_config_cb(const pci_config_t *config);
39 extern int ebus_config_cb(const pci_config_t *config);
40 extern int i82378_config_cb(const pci_config_t *config);
41 extern int usb_ohci_config_cb(const pci_config_t *config);
42
43 static inline int pci_compat_len(const pci_dev_t *dev)
44 {
45         int len, ret;
46         const char *path = dev->compat;
47         ret = 0;
48         while ((len = strlen(path)) != 0) {
49                 ret += len + 1;
50                 path += len + 1;
51         }
52         return ret;
53 }
54
55 extern const pci_dev_t *pci_find_device(uint8_t class, uint8_t subclass,
56                                         uint8_t iface, uint16_t vendor,
57                                         uint16_t product);