This patchset improves Loongson PCI controller driver and resolves some problems: LS2K/LS7A's PCI config space supports 1/2/4-bytes access, so the first patch use pci_generic_config_read()/pci_generic_config_write() for them; the second patch add ACPI init support which will be used by LoongArch; the third patch improves the mrrs quirk for LS7A chipset; The fourth patch add a new quirk for LS7A chipset to avoid poweroff/reboot failure, and the fifth patch add a new quirk for LS7A chipset to fix the multifunction devices' irq pin mappings. V1 -> V2: 1, Rework the 4th patch; 2, Improve commit messages; 3, Remove the last patch since there is better solutions. V2 -> V3: 1, Add more affected device ids for the 4th patch; 2, Improve commit messages to describe root causes. V3 -> V4: 1, Rework the MRRS quirk patch; 2, Improve commit messages to describe root causes, again. V4 -> V5: 1, Improve the MRRS quirk patch; 2, Change the order of 2nd and 3rd patch; 3, Improve commit messages to describe root causes, again. V5 -> V6: 1, Rework the 1st patch; 2, Adjust the order of the series. V6 -> V7: 1, Use correct pci config access operations; 2, Add ACPI init support for LoongArch; 3, Don't move to quirks.c since the driver has ACPI support; 4, Some other minor improvements. V7 -> V8: 1, Use CFG1 method for LS2K/LS7A pci config. V8 -> V9: 1, Use pci_controller_data for the first patch. V9 -> V10: 1, Add a patch to avoid LS2K/LS7A access unexisting devices. V10 -> V11: 1, Rebased on 5.16-rc4. Huacai Chen, Tiezhu Yang and Jianmin Lv(6): PCI: loongson: Use generic 8/16/32-bit config ops on LS2K/LS7A. PCI: loongson: Add ACPI init support. PCI: loongson: Don't access unexisting devices. PCI: loongson: Improve the MRRS quirk for LS7A. PCI: Add quirk for LS7A to avoid reboot failure. PCI: Add quirk for multifunction devices of LS7A. Signed-off-by: Huacai Chen <chenhuacai@xxxxxxxxxxx> Signed-off-by: Jianmin Lv <lvjianmin@xxxxxxxxxxx> Signed-off-by: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx> --- drivers/acpi/pci_mcfg.c | 13 +++ drivers/pci/controller/Kconfig | 2 +- drivers/pci/controller/pci-loongson.c | 184 ++++++++++++++++++++++++++-------- drivers/pci/pci.c | 6 ++ drivers/pci/pcie/portdrv_core.c | 6 +- include/linux/pci-ecam.h | 1 + include/linux/pci.h | 2 + 7 files changed, 169 insertions(+), 45 deletions(-) -- 2.27.0