12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- From 1d3e170344dff2cef8827db6c09909b78cbc11d7 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <[email protected]>
- Date: Tue, 30 Nov 2021 18:29:05 +0100
- Subject: [PATCH] PCI: aardvark: Add support for DEVCAP2, DEVCTL2, LNKCAP2 and
- LNKCTL2 registers on emulated bridge
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- PCI aardvark hardware supports access to DEVCAP2, DEVCTL2, LNKCAP2 and
- LNKCTL2 configuration registers of PCIe core via PCIE_CORE_PCIEXP_CAP.
- Export them via emulated software root bridge.
- Link: https://lore.kernel.org/r/[email protected]
- Signed-off-by: Pali Rohár <[email protected]>
- Signed-off-by: Marek Behún <[email protected]>
- Signed-off-by: Lorenzo Pieralisi <[email protected]>
- ---
- drivers/pci/controller/pci-aardvark.c | 15 +++++++++++----
- 1 file changed, 11 insertions(+), 4 deletions(-)
- --- a/drivers/pci/controller/pci-aardvark.c
- +++ b/drivers/pci/controller/pci-aardvark.c
- @@ -883,8 +883,13 @@ advk_pci_bridge_emul_pcie_conf_read(stru
-
- case PCI_EXP_DEVCAP:
- case PCI_EXP_DEVCTL:
- + case PCI_EXP_DEVCAP2:
- + case PCI_EXP_DEVCTL2:
- + case PCI_EXP_LNKCAP2:
- + case PCI_EXP_LNKCTL2:
- *value = advk_readl(pcie, PCIE_CORE_PCIEXP_CAP + reg);
- return PCI_BRIDGE_EMUL_HANDLED;
- +
- default:
- return PCI_BRIDGE_EMUL_NOT_HANDLED;
- }
- @@ -898,10 +903,6 @@ advk_pci_bridge_emul_pcie_conf_write(str
- struct advk_pcie *pcie = bridge->data;
-
- switch (reg) {
- - case PCI_EXP_DEVCTL:
- - advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg);
- - break;
- -
- case PCI_EXP_LNKCTL:
- advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg);
- if (new & PCI_EXP_LNKCTL_RL)
- @@ -923,6 +924,12 @@ advk_pci_bridge_emul_pcie_conf_write(str
- advk_writel(pcie, new, PCIE_ISR0_REG);
- break;
-
- + case PCI_EXP_DEVCTL:
- + case PCI_EXP_DEVCTL2:
- + case PCI_EXP_LNKCTL2:
- + advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg);
- + break;
- +
- default:
- break;
- }
|