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

Merge branch 'pci/controller/qcom'

- Add DT compatible for qcom MSM8998 (Krzysztof Kozlowski)

- Unify qcom MSM8996 and MSM8998 clock orderings (Krzysztof Kozlowski)

- Correct qcom,perst-regs (Krzysztof Kozlowski)

- Add qcom SM8350 DT binding and driver support (Dmitry Baryshkov)

- Add qcom_pcie_host_deinit() so the PHY is powered off and regulators and
  clocks are disabled on late host-init errors (Johan Hovold)

- Add IPQ8074 Gen3 port DT binding and driver support (the Gen2 port was
  already supported) (Robert Marko)

* pci/controller/qcom:
  PCI: qcom: Add IPQ8074 Gen3 port support
  dt-bindings: PCI: qcom: Add IPQ8074 Gen3 port
  dt-bindings: PCI: qcom: Sort compatibles alphabetically
  PCI: qcom: Fix host-init error handling
  PCI: qcom: Add SM8350 support
  dt-bindings: PCI: qcom: Add SM8350
  dt-bindings: PCI: qcom-ep: Correct qcom,perst-regs
  dt-bindings: PCI: qcom: Unify MSM8996 and MSM8998 clock order
  dt-bindings: PCI: qcom: Add MSM8998 specific compatible
  dt-bindings: PCI: qcom: Add oneOf to compatible match
parents 7cfd342b f3561322
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -47,8 +47,10 @@ properties:
                 enable registers
    $ref: "/schemas/types.yaml#/definitions/phandle-array"
    items:
      minItems: 3
      maxItems: 3
      - items:
          - description: Syscon to TCSR system registers
          - description: Perst enable offset
          - description: Perst separation enable offset

  interrupts:
    items:
+67 −36
Original line number Diff line number Diff line
@@ -16,14 +16,17 @@ description: |

properties:
  compatible:
    enum:
      - qcom,pcie-ipq8064
      - qcom,pcie-ipq8064-v2
    oneOf:
      - enum:
          - qcom,pcie-apq8064
          - qcom,pcie-apq8084
      - qcom,pcie-msm8996
          - qcom,pcie-ipq4019
          - qcom,pcie-ipq6018
          - qcom,pcie-ipq8064
          - qcom,pcie-ipq8064-v2
          - qcom,pcie-ipq8074
          - qcom,pcie-ipq8074-gen3
          - qcom,pcie-msm8996
          - qcom,pcie-qcs404
          - qcom,pcie-sa8540p
          - qcom,pcie-sc7280
@@ -32,9 +35,12 @@ properties:
          - qcom,pcie-sdm845
          - qcom,pcie-sm8150
          - qcom,pcie-sm8250
          - qcom,pcie-sm8350
          - qcom,pcie-sm8450-pcie0
          - qcom,pcie-sm8450-pcie1
      - qcom,pcie-ipq6018
      - items:
          - const: qcom,pcie-msm8998
          - const: qcom,pcie-msm8996

  reg:
    minItems: 4
@@ -153,6 +159,7 @@ allOf:
          contains:
            enum:
              - qcom,pcie-ipq6018
              - qcom,pcie-ipq8074-gen3
    then:
      properties:
        reg:
@@ -195,6 +202,7 @@ allOf:
              - qcom,pcie-sc8180x
              - qcom,pcie-sc8280xp
              - qcom,pcie-sm8250
              - qcom,pcie-sm8350
              - qcom,pcie-sm8450-pcie0
              - qcom,pcie-sm8450-pcie1
    then:
@@ -312,8 +320,10 @@ allOf:
            enum:
              - qcom,pcie-msm8996
    then:
      oneOf:
        - properties:
      properties:
        clocks:
          minItems: 5
          maxItems: 5
        clock-names:
          items:
            - const: pipe # Pipe Clock driving internal logic
@@ -321,18 +331,6 @@ allOf:
            - const: cfg # Configuration clock
            - const: bus_master # Master AXI clock
            - const: bus_slave # Slave AXI clock
        - properties:
            clock-names:
              items:
                - const: pipe # Pipe Clock driving internal logic
                - const: bus_master # Master AXI clock
                - const: bus_slave # Slave AXI clock
                - const: cfg # Configuration clock
                - const: aux # Auxiliary (AUX) clock
      properties:
        clocks:
          minItems: 5
          maxItems: 5
        resets: false
        reset-names: false

@@ -373,6 +371,7 @@ allOf:
          contains:
            enum:
              - qcom,pcie-ipq6018
              - qcom,pcie-ipq8074-gen3
    then:
      properties:
        clocks:
@@ -550,6 +549,35 @@ allOf:
          items:
            - const: pci # PCIe core reset

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,pcie-sm8350
    then:
      properties:
        clocks:
          minItems: 8
          maxItems: 9
        clock-names:
          minItems: 8
          items:
            - const: aux # Auxiliary clock
            - const: cfg # Configuration clock
            - const: bus_master # Master AXI clock
            - const: bus_slave # Slave AXI clock
            - const: slave_q2a # Slave Q2A clock
            - const: tbu # PCIe TBU clock
            - const: ddrss_sf_tbu # PCIe SF TBU clock
            - const: aggre1 # Aggre NoC PCIe1 AXI clock
            - const: aggre0 # Aggre NoC PCIe0 AXI clock
        resets:
          maxItems: 1
        reset-names:
          items:
            - const: pci # PCIe core reset

  - if:
      properties:
        compatible:
@@ -664,6 +692,7 @@ allOf:
                - qcom,pcie-ipq8064
                - qcom,pcie-ipq8064v2
                - qcom,pcie-ipq8074
                - qcom,pcie-ipq8074-gen3
                - qcom,pcie-qcs404
    then:
      required:
@@ -692,6 +721,7 @@ allOf:
              - qcom,pcie-sdm845
              - qcom,pcie-sm8150
              - qcom,pcie-sm8250
              - qcom,pcie-sm8350
              - qcom,pcie-sm8450-pcie0
              - qcom,pcie-sm8450-pcie1
    then:
@@ -746,6 +776,7 @@ allOf:
              - qcom,pcie-ipq8064
              - qcom,pcie-ipq8064-v2
              - qcom,pcie-ipq8074
              - qcom,pcie-ipq8074-gen3
              - qcom,pcie-qcs404
              - qcom,pcie-sa8540p
    then:
+14 −1
Original line number Diff line number Diff line
@@ -1534,8 +1534,19 @@ static int qcom_pcie_host_init(struct dw_pcie_rp *pp)
	return ret;
}

static void qcom_pcie_host_deinit(struct dw_pcie_rp *pp)
{
	struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
	struct qcom_pcie *pcie = to_qcom_pcie(pci);

	qcom_ep_reset_assert(pcie);
	phy_power_off(pcie->phy);
	pcie->cfg->ops->deinit(pcie);
}

static const struct dw_pcie_host_ops qcom_pcie_dw_ops = {
	.host_init	= qcom_pcie_host_init,
	.host_deinit	= qcom_pcie_host_deinit,
};

/* Qcom IP rev.: 2.1.0	Synopsys IP rev.: 4.01a */
@@ -1817,6 +1828,7 @@ static const struct of_device_id qcom_pcie_match[] = {
	{ .compatible = "qcom,pcie-ipq8064", .data = &cfg_2_1_0 },
	{ .compatible = "qcom,pcie-ipq8064-v2", .data = &cfg_2_1_0 },
	{ .compatible = "qcom,pcie-ipq8074", .data = &cfg_2_3_3 },
	{ .compatible = "qcom,pcie-ipq8074-gen3", .data = &cfg_2_9_0 },
	{ .compatible = "qcom,pcie-msm8996", .data = &cfg_2_3_2 },
	{ .compatible = "qcom,pcie-qcs404", .data = &cfg_2_4_0 },
	{ .compatible = "qcom,pcie-sa8540p", .data = &cfg_1_9_0 },
@@ -1826,6 +1838,7 @@ static const struct of_device_id qcom_pcie_match[] = {
	{ .compatible = "qcom,pcie-sdm845", .data = &cfg_2_7_0 },
	{ .compatible = "qcom,pcie-sm8150", .data = &cfg_1_9_0 },
	{ .compatible = "qcom,pcie-sm8250", .data = &cfg_1_9_0 },
	{ .compatible = "qcom,pcie-sm8350", .data = &cfg_1_9_0 },
	{ .compatible = "qcom,pcie-sm8450-pcie0", .data = &cfg_1_9_0 },
	{ .compatible = "qcom,pcie-sm8450-pcie1", .data = &cfg_1_9_0 },
	{ }