Merge branch 'remotes/lorenzo/pci/bridge-emul'
authorBjorn Helgaas <bhelgaas@google.com>
Thu, 13 Jan 2022 15:57:51 +0000 (09:57 -0600)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 13 Jan 2022 15:57:51 +0000 (09:57 -0600)
- Make emulated ROM BAR read-only by default (Pali Rohár)

- Make some emulated legacy PCI bits read-only for PCIe devices (Pali
  Rohár)

- Update reserved bits in emulated PCIe Capability (Pali Rohár)

- Allow drivers to emulate different PCIe Capability versions (Pali Rohár)

- Set emulated Capabilities List bit for all PCIe devices, since they must
  have at least a PCIe Capability (Pali Rohár)

* remotes/lorenzo/pci/bridge-emul:
  PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device
  PCI: pci-bridge-emul: Correctly set PCIe capabilities
  PCI: pci-bridge-emul: Fix definitions of reserved bits
  PCI: pci-bridge-emul: Properly mark reserved PCIe bits in PCI config space
  PCI: pci-bridge-emul: Make expansion ROM Base Address register read-only

1  2 
drivers/pci/controller/pci-aardvark.c
drivers/pci/controller/pci-mvebu.c
drivers/pci/pci-bridge-emul.c

index b654d06b64df8cc19f30a6308a38c90e745b9755,62fc55f2ed40dc78072ccf6bea8a300fad9c5a57..a3987e717258325f8f256363c374f31909b4b5a1
@@@ -883,16 -881,10 +883,15 @@@ advk_pci_bridge_emul_pcie_conf_read(str
                return PCI_BRIDGE_EMUL_HANDLED;
        }
  
-       case PCI_CAP_LIST_ID:
        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;
        }
index d7de48c10bdadbf5f32fc497f6405bb839693671,2dc6890dbcaa263471714d7989b4185b90e6b738..4f2508dc1ed2d5453f9d508ddbba96500a207f40
@@@ -720,9 -570,11 +720,11 @@@ static struct pci_bridge_emul_ops mvebu
   * Initialize the configuration space of the PCI-to-PCI bridge
   * associated with the given PCIe interface.
   */
 -static void mvebu_pci_bridge_emul_init(struct mvebu_pcie_port *port)
 +static int mvebu_pci_bridge_emul_init(struct mvebu_pcie_port *port)
  {
        struct pci_bridge_emul *bridge = &port->bridge;
+       u32 pcie_cap = mvebu_readl(port, PCIE_CAP_PCIEXP);
+       u8 pcie_cap_ver = ((pcie_cap >> 16) & PCI_EXP_FLAGS_VERS);
  
        bridge->conf.vendor = PCI_VENDOR_ID_MARVELL;
        bridge->conf.device = mvebu_readl(port, PCIE_DEV_ID_OFF) >> 16;
Simple merge