In certain cases we need a variant of pci_read_vpd()/pci_write_vpd() that does not check against dev->vpd.len. Such cases are: - reading VPD if dev->vpd.len isn't set yet (in pci_vpd_size()) - devices that map non-VPD information to arbitrary places in VPD address space (example: Chelsio T3 EEPROM write-protect flag) Therefore add function variants that check against PCI_VPD_MAX_SIZE only. Make the cxgb3 driver the first user of the new functions. Preferably this series should go through the PCI tree. Heiner Kallweit (5): PCI/VPD: Add pci_read/write_vpd_any() PCI/VPD: Use pci_read_vpd_any() in pci_vpd_size() cxgb3: Remove t3_seeprom_read and use VPD API cxgb3: Use VPD API in t3_seeprom_wp() cxgb3: Remove seeprom_write and user VPD API drivers/net/ethernet/chelsio/cxgb3/common.h | 2 - .../net/ethernet/chelsio/cxgb3/cxgb3_main.c | 38 +++---- drivers/net/ethernet/chelsio/cxgb3/t3_hw.c | 98 +++---------------- drivers/pci/vpd.c | 79 ++++++++++----- include/linux/pci.h | 2 + 5 files changed, 83 insertions(+), 136 deletions(-) -- 2.33.0