19 #define PCI_VPD_ADDRESS 0x02 22 #define PCI_VPD_FLAG 0x8000 25 #define PCI_VPD_DATA 0x04 36 #define PCI_VPD_MAX_LEN 0xff 45 #define PCI_VPD_FIELD( tag, keyword1, keyword2 ) \ 46 ( ( (tag) << 16 ) | ( (keyword2) << 8 ) | ( (keyword1) << 0 ) ) 53 #define PCI_VPD_WHOLE_TAG_FIELD( tag ) PCI_VPD_FIELD ( (tag), '\0', '\0' ) 60 #define PCI_VPD_TAG( field ) ( (field) >> 16 ) 67 #define PCI_VPD_KEYWORD( field ) ( cpu_to_le16 ( (field) & 0xffff ) ) 70 #define PCI_VPD_FIELD_FMT "%c%c" 73 #define PCI_VPD_FIELD_ARGS( field ) \ 74 ( (field) >> 0 ), ( (field) >> 8 ) 77 #define PCI_VPD_TAG_RO 0x90 80 #define PCI_VPD_TAG_RW 0x91 83 #define PCI_VPD_FIELD_NAME PCI_VPD_WHOLE_TAG_FIELD ( ISAPNP_TAG_ANSISTR ) 86 #define PCI_VPD_FIELD_PN PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'P', 'N' ) 89 #define PCI_VPD_FIELD_EC PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'E', 'C' ) 92 #define PCI_VPD_FIELD_FG PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'F', 'G' ) 95 #define PCI_VPD_FIELD_LC PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'L', 'C' ) 98 #define PCI_VPD_FIELD_MN PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'M', 'N' ) 101 #define PCI_VPD_FIELD_PG PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'P', 'G' ) 104 #define PCI_VPD_FIELD_SN PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'S', 'N' ) 107 #define PCI_VPD_FIELD_CP PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'C', 'P' ) 110 #define PCI_VPD_FIELD_RV PCI_VPD_FIELD ( PCI_VPD_TAG_RO, 'R', 'V' ) 113 #define PCI_VPD_FIELD_YA PCI_VPD_FIELD ( PCI_VPD_TAG_RW, 'Y', 'A' ) 116 #define PCI_VPD_FIELD_RW PCI_VPD_FIELD ( PCI_VPD_TAG_RW, 'R', 'W' ) 119 #define PCI_VPD_MAX_WAIT_MS 100 147 return ( vpd->
cap != 0 );
173 void *buf,
size_t len );
175 const void *buf,
size_t len );
int pci_vpd_init(struct pci_vpd *vpd, struct pci_device *pci)
Initialise PCI Vital Product Data.
int pci_vpd_write(struct pci_vpd *vpd, unsigned int address, const void *buf, size_t len)
Write PCI VPD.
uint64_t address
Base address.
static int pci_vpd_is_present(struct pci_vpd *vpd)
Check for presence of PCI VPD.
int pci_vpd_find(struct pci_vpd *vpd, unsigned int field, unsigned int *address, size_t *len)
Locate PCI VPD field.
static void pci_vpd_invalidate_cache(struct pci_vpd *vpd)
Invalidate PCI VPD read cache.
int cap
VPD capability offset.
int pci_vpd_read(struct pci_vpd *vpd, unsigned int address, void *buf, size_t len)
Read PCI VPD.
static int pci_vpd_cache_is_valid(struct pci_vpd *vpd)
Check if PCI VPD read cache is valid.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
struct pci_vpd_cache cache
Read cache.
int pci_vpd_resize(struct pci_vpd *vpd, unsigned int field, size_t len, unsigned int *address)
Resize VPD field.
struct pci_device * pci
PCI device.