mbox series

[0/3] CM4 ACPI PCIe quirk

Message ID 20210805211200.491275-1-jeremy.linton@arm.com
Headers show
Series CM4 ACPI PCIe quirk | expand

Message

Jeremy Linton Aug. 5, 2021, 9:11 p.m. UTC
The PFTF CM4 is an ACPI platform that is following the PCIe SMCCC
standard because its PCIe config space isn't ECAM compliant and is
split into two parts. One part for the root port registers and a
moveable window which points at a given device's 4K config space.
Thus it doesn't have a MCFG (and really any MCFG provided would be
nonsense anyway). As linux doesn't support the PCIe SMCCC standard
we key off a linux specific host bridge _DSD to add custom ECAM
ops and cfgres. The cfg op selects between those two regions, as
well as disallowing problematic accesses, particularly if the link
is down because there isn't an attached device.

Jeremy Linton (3):
  PCI: brcmstb: Break register definitions into separate header
  PCI: brcmstb: Add ACPI config space quirk
  PCI/ACPI: Add new quirk detection, enable bcm2711

 drivers/acpi/pci_mcfg.c                    |  14 ++
 drivers/pci/controller/Makefile            |   1 +
 drivers/pci/controller/pcie-brcmstb-acpi.c |  77 +++++++++
 drivers/pci/controller/pcie-brcmstb.c      | 179 +-------------------
 drivers/pci/controller/pcie-brcmstb.h      | 182 +++++++++++++++++++++
 include/linux/pci-ecam.h                   |   1 +
 6 files changed, 276 insertions(+), 178 deletions(-)
 create mode 100644 drivers/pci/controller/pcie-brcmstb-acpi.c
 create mode 100644 drivers/pci/controller/pcie-brcmstb.h

-- 
2.31.1

Comments

Stefan Wahren Aug. 6, 2021, 11:40 a.m. UTC | #1
Hi Jeremy,

Am 05.08.21 um 23:11 schrieb Jeremy Linton:
> The PFTF CM4 is an ACPI platform that is following the PCIe SMCCC

> standard because its PCIe config space isn't ECAM compliant and is

> split into two parts. One part for the root port registers and a

> moveable window which points at a given device's 4K config space.

> Thus it doesn't have a MCFG (and really any MCFG provided would be

> nonsense anyway). As linux doesn't support the PCIe SMCCC standard

> we key off a linux specific host bridge _DSD to add custom ECAM

> ops and cfgres. The cfg op selects between those two regions, as

> well as disallowing problematic accesses, particularly if the link

> is down because there isn't an attached device.


i just want to inform you, that i recently submitted the inital patch
series for DT support regarding CM4 [1].

I left out anything related to PCIe (including downstream changes to
pcie-brcmstb).

Best regards
Stefan

[1] - https://marc.info/?l=linux-arm-kernel&m=162782110325813&w=2