/*
* The PCI Library
*
- * Copyright (c) 1997--2023 Martin Mares <mj@ucw.cz>
+ * Copyright (c) 1997--2024 Martin Mares <mj@ucw.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL v2+
*
#include "header.h"
#include "types.h"
-#define PCI_LIB_VERSION 0x030a00
+#define PCI_LIB_VERSION 0x030c00
#ifndef PCI_ABI
#define PCI_ABI
PCI_ACCESS_MMIO_TYPE1, /* MMIO ports, type 1 */
PCI_ACCESS_MMIO_TYPE1_EXT, /* MMIO ports, type 1 extended */
PCI_ACCESS_ECAM, /* PCIe ECAM via /dev/mem */
+ PCI_ACCESS_AOS_EXPANSION, /* AmigaOS Expansion library */
PCI_ACCESS_MAX
};
struct pci_param *params;
struct id_entry **id_hash; /* names.c */
struct id_bucket *current_id_bucket;
- int id_load_failed;
+ int id_load_attempted;
int id_cache_status; /* 0=not read, 1=read, 2=dirty */
+ char *id_cache_name;
struct udev *id_udev; /* names-hwdb.c */
struct udev_hwdb *id_udev_hwdb;
int fd; /* proc/sys: fd for config space */
int fd_rw; /* proc/sys: fd opened read-write */
- int fd_pos; /* proc/sys: current position */
int fd_vpd; /* sys: fd for VPD */
struct pci_dev *cached_dev; /* proc/sys: device the fds are for */
- void *aux; /* Auxiliary data for use by the back-end */
+ void *backend_data; /* Private data of the back end */
};
/* Initialize PCI access */
u8 *cache; /* Cached config registers */
int cache_len;
int hdrtype; /* Cached low 7 bits of header type, -1 if unknown */
- void *aux; /* Auxiliary data for use by the back-end */
+ void *backend_data; /* Private data for of the back end */
struct pci_property *properties; /* A linked list of extra properties */
struct pci_cap *last_cap; /* Last capability in the list */
};
int pci_fill_info(struct pci_dev *, int flags) PCI_ABI;
char *pci_get_string_property(struct pci_dev *d, u32 prop) PCI_ABI;
-#define PCI_FILL_IDENT 0x0001
+#define PCI_FILL_IDENT 0x0001 /* vendor and device ID */
#define PCI_FILL_IRQ 0x0002
#define PCI_FILL_BASES 0x0004
#define PCI_FILL_ROM_BASE 0x0008
#define PCI_FILL_SIZES 0x0010
#define PCI_FILL_CLASS 0x0020
-#define PCI_FILL_CAPS 0x0040
-#define PCI_FILL_EXT_CAPS 0x0080
-#define PCI_FILL_PHYS_SLOT 0x0100
-#define PCI_FILL_MODULE_ALIAS 0x0200
-#define PCI_FILL_LABEL 0x0400
+#define PCI_FILL_CAPS 0x0040 /* capabilities */
+#define PCI_FILL_EXT_CAPS 0x0080 /* extended capabilities */
+#define PCI_FILL_PHYS_SLOT 0x0100 /* physical slot (string property) */
+#define PCI_FILL_MODULE_ALIAS 0x0200 /* Linux kernel module alias (string property) */
+#define PCI_FILL_LABEL 0x0400 /* (string property) */
#define PCI_FILL_NUMA_NODE 0x0800
#define PCI_FILL_IO_FLAGS 0x1000
-#define PCI_FILL_DT_NODE 0x2000 /* Device tree node */
-#define PCI_FILL_IOMMU_GROUP 0x4000
+#define PCI_FILL_DT_NODE 0x2000 /* Device tree node (string property) */
+#define PCI_FILL_IOMMU_GROUP 0x4000 /* (string property) */
#define PCI_FILL_BRIDGE_BASES 0x8000
-#define PCI_FILL_RESCAN 0x00010000
+#define PCI_FILL_RESCAN 0x00010000 /* force re-scan of cached properties */
#define PCI_FILL_CLASS_EXT 0x00020000 /* prog_if and rev_id */
#define PCI_FILL_SUBSYS 0x00040000 /* subsys_vendor_id and subsys_id */
#define PCI_FILL_PARENT 0x00080000