PCI controllers and lot of non-ECAM compliant PCIe controllers still use Intel PCI Configuration Mechanism #1 for accessing PCI config space. Native PCIe controller drivers invents its own macros which implements config space address calculation and in lof of cases it is just duplication of the same code. PCIe ECAM address macro PCIE_ECAM_OFFSET() is already in include header file linux/pci-ecam.h and ECAM compliant drivers were already converted to use it. Do similar thing also for Intel PCI Configuration Mechanism #1. Introduce a new file linux/pci-conf1.h with PCI_CONF1_ADDRESS() and PCI_CONF1_EXT_ADDRESS() macros and convert two drivers pci-ftpci100.c and pcie-mt7621.c to use it. There are many more drivers which could be converted to this common macros. This is just RFC patch series and if you like it, I can look at conversion of other drivers. What do you think? Note that similar cleanup was applied for U-Boot PCI controller drivers: https://lore.kernel.org/u-boot/20211126104252.5443-1-pali@xxxxxxxxxx/ Pali Rohár (3): PCI: Add standard PCI Config Address macros PCI: ftpci100: Use PCI_CONF1_ADDRESS() macro PCI: mt7621: Use PCI_CONF1_EXT_ADDRESS() macro drivers/pci/controller/pci-ftpci100.c | 22 +++--------- drivers/pci/controller/pcie-mt7621.c | 4 +-- include/linux/pci-conf1.h | 51 +++++++++++++++++++++++++++ 3 files changed, 58 insertions(+), 19 deletions(-) create mode 100644 include/linux/pci-conf1.h -- 2.20.1