Implement new v3_memalloc romvec interface for allocating aligned memory.
[openbios.git] / drivers / pci_database.h
blob5ddbb2047df657f77f7af815815aa9f00c21d287
1 typedef struct pci_config_t pci_config_t;
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;
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;
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);
41 static inline int pci_compat_len(const pci_dev_t *dev)
43 int len, ret;
44 const char *path = dev->compat;
45 ret = 0;
46 while ((len = strlen(path)) != 0) {
47 ret += len + 1;
48 path += len + 1;
50 return ret;
53 extern const pci_dev_t *pci_find_device(uint8_t class, uint8_t subclass,
54 uint8_t iface, uint16_t vendor,
55 uint16_t product);