Commit f54ff407 authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

Merge branch 'pci/controller/qcom'

- Enable MSI interrupts if 'global' IRQ is supported, since a previous
  commit unintentionally masked them (Manivannan Sadhasivam)

- Move endpoint controller cleanups that depend on refclk from the host to
  the notifier that tells us the host has deasserted PERST# (Manivannan
  Sadhasivam)

- Add DT binding and driver support for IPQ9574, with Synopsys IP v5.80a
  and Qcom IP 1.27.0 (devi priya)

- Move the OPP "operating-points-v2" table from the qcom,pcie-sm8450.yaml
  DT binding to qcom,pcie-common.yaml, where it can be used by other Qcom
  platforms (Qiang Yu)

- Add 'global' SPI interrupt for events like link-up, link-down to
  qcom,pcie-x1e80100 DT binding so we can start enumeration when the link
  comes up (Qiang Yu)

- Disable ASPM L0s for qcom,pcie-x1e80100 since the PHY is not tuned to
  support this (Qiang Yu)

- Add ops_1_21_0 for SC8280X family SoC, which doesn't use the 'iommu-map'
  DT property and doesn't need BDF-to-SID translation (Qiang Yu)

* pci/controller/qcom:
  PCI: qcom: Disable ASPM L0s for X1E80100
  PCI: qcom: Remove BDF2SID mapping config for SC8280X family SoC
  dt-bindings: PCI: qcom,pcie-x1e80100: Add 'global' interrupt
  dt-bindings: PCI: qcom: Move OPP table to qcom,pcie-common.yaml
  PCI: qcom: Add support for IPQ9574
  dt-bindings: PCI: qcom: Document the IPQ9574 PCIe controller
  PCI: qcom-ep: Move controller cleanups to qcom_pcie_perst_deassert()
  PCI: qcom: Enable MSI interrupts together with Link up if 'Global IRQ' is supported
parents 7b5d234e fba60451
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -81,6 +81,10 @@ properties:
  vddpe-3v3-supply:
    description: PCIe endpoint power supply

  operating-points-v2: true
  opp-table:
    type: object

required:
  - reg
  - reg-names
+0 −4
Original line number Diff line number Diff line
@@ -70,10 +70,6 @@ properties:
      - const: msi7
      - const: global

  operating-points-v2: true
  opp-table:
    type: object

  resets:
    maxItems: 1

+6 −3
Original line number Diff line number Diff line
@@ -47,9 +47,10 @@ properties:

  interrupts:
    minItems: 8
    maxItems: 8
    maxItems: 9

  interrupt-names:
    minItems: 8
    items:
      - const: msi0
      - const: msi1
@@ -59,6 +60,7 @@ properties:
      - const: msi5
      - const: msi6
      - const: msi7
      - const: global

  resets:
    minItems: 1
@@ -130,9 +132,10 @@ examples:
                         <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
                         <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
            interrupt-names = "msi0", "msi1", "msi2", "msi3",
                              "msi4", "msi5", "msi6", "msi7";
                              "msi4", "msi5", "msi6", "msi7", "global";
            #interrupt-cells = <1>;
            interrupt-map-mask = <0 0 0 0x7>;
            interrupt-map = <0 0 0 1 &intc 0 0 0 149 IRQ_TYPE_LEVEL_HIGH>, /* int_a */
+50 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ properties:
          - qcom,pcie-ipq8064-v2
          - qcom,pcie-ipq8074
          - qcom,pcie-ipq8074-gen3
          - qcom,pcie-ipq9574
          - qcom,pcie-msm8996
          - qcom,pcie-qcs404
          - qcom,pcie-sdm845
@@ -164,6 +165,7 @@ allOf:
            enum:
              - qcom,pcie-ipq6018
              - qcom,pcie-ipq8074-gen3
              - qcom,pcie-ipq9574
    then:
      properties:
        reg:
@@ -400,6 +402,53 @@ allOf:
            - const: axi_m_sticky # AXI Master Sticky reset
            - const: axi_s_sticky # AXI Slave Sticky reset

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,pcie-ipq9574
    then:
      properties:
        clocks:
          minItems: 6
          maxItems: 6
        clock-names:
          items:
            - const: axi_m # AXI Master clock
            - const: axi_s # AXI Slave clock
            - const: axi_bridge
            - const: rchng
            - const: ahb
            - const: aux

        resets:
          minItems: 8
          maxItems: 8
        reset-names:
          items:
            - const: pipe # PIPE reset
            - const: sticky # Core Sticky reset
            - const: axi_s_sticky # AXI Slave Sticky reset
            - const: axi_s # AXI Slave reset
            - const: axi_m_sticky # AXI Master Sticky reset
            - const: axi_m # AXI Master reset
            - const: aux # AUX Reset
            - const: ahb # AHB Reset

        interrupts:
          minItems: 8
        interrupt-names:
          items:
            - const: msi0
            - const: msi1
            - const: msi2
            - const: msi3
            - const: msi4
            - const: msi5
            - const: msi6
            - const: msi7

  - if:
      properties:
        compatible:
@@ -510,6 +559,7 @@ allOf:
                - qcom,pcie-ipq8064v2
                - qcom,pcie-ipq8074
                - qcom,pcie-ipq8074-gen3
                - qcom,pcie-ipq9574
                - qcom,pcie-qcs404
    then:
      required:
+4 −2
Original line number Diff line number Diff line
@@ -396,6 +396,10 @@ static int qcom_pcie_perst_deassert(struct dw_pcie *pci)
		return ret;
	}

	/* Perform cleanup that requires refclk */
	pci_epc_deinit_notify(pci->ep.epc);
	dw_pcie_ep_cleanup(&pci->ep);

	/* Assert WAKE# to RC to indicate device is ready */
	gpiod_set_value_cansleep(pcie_ep->wake, 1);
	usleep_range(WAKE_DELAY_US, WAKE_DELAY_US + 500);
@@ -540,8 +544,6 @@ static void qcom_pcie_perst_assert(struct dw_pcie *pci)
{
	struct qcom_pcie_ep *pcie_ep = to_pcie_ep(pci);

	pci_epc_deinit_notify(pci->ep.epc);
	dw_pcie_ep_cleanup(&pci->ep);
	qcom_pcie_disable_resources(pcie_ep);
	pcie_ep->link_status = QCOM_PCIE_EP_LINK_DISABLED;
}
Loading