xref: /freebsd/sys/contrib/device-tree/Bindings/phy/qcom,sc8280xp-qmp-pcie-phy.yaml (revision cb7aa33ac6cd46a5434798e50363136e64f3ae98)
18bab661aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28bab661aSEmmanuel Vadot%YAML 1.2
38bab661aSEmmanuel Vadot---
48bab661aSEmmanuel Vadot$id: http://devicetree.org/schemas/phy/qcom,sc8280xp-qmp-pcie-phy.yaml#
58bab661aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
68bab661aSEmmanuel Vadot
78bab661aSEmmanuel Vadottitle: Qualcomm QMP PHY controller (PCIe, SC8280XP)
88bab661aSEmmanuel Vadot
98bab661aSEmmanuel Vadotmaintainers:
108bab661aSEmmanuel Vadot  - Vinod Koul <vkoul@kernel.org>
118bab661aSEmmanuel Vadot
128bab661aSEmmanuel Vadotdescription:
138bab661aSEmmanuel Vadot  The QMP PHY controller supports physical layer functionality for a number of
148bab661aSEmmanuel Vadot  controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
158bab661aSEmmanuel Vadot
168bab661aSEmmanuel Vadotproperties:
178bab661aSEmmanuel Vadot  compatible:
188bab661aSEmmanuel Vadot    enum:
198bab661aSEmmanuel Vadot      - qcom,sc8280xp-qmp-gen3x1-pcie-phy
208bab661aSEmmanuel Vadot      - qcom,sc8280xp-qmp-gen3x2-pcie-phy
218bab661aSEmmanuel Vadot      - qcom,sc8280xp-qmp-gen3x4-pcie-phy
22*cb7aa33aSEmmanuel Vadot      - qcom,sm8350-qmp-gen3x1-pcie-phy
23*cb7aa33aSEmmanuel Vadot      - qcom,sm8550-qmp-gen3x2-pcie-phy
24*cb7aa33aSEmmanuel Vadot      - qcom,sm8550-qmp-gen4x2-pcie-phy
258bab661aSEmmanuel Vadot
268bab661aSEmmanuel Vadot  reg:
278bab661aSEmmanuel Vadot    minItems: 1
288bab661aSEmmanuel Vadot    maxItems: 2
298bab661aSEmmanuel Vadot
308bab661aSEmmanuel Vadot  clocks:
31*cb7aa33aSEmmanuel Vadot    minItems: 5
328bab661aSEmmanuel Vadot    maxItems: 6
338bab661aSEmmanuel Vadot
348bab661aSEmmanuel Vadot  clock-names:
35*cb7aa33aSEmmanuel Vadot    minItems: 5
368bab661aSEmmanuel Vadot    items:
378bab661aSEmmanuel Vadot      - const: aux
388bab661aSEmmanuel Vadot      - const: cfg_ahb
398bab661aSEmmanuel Vadot      - const: ref
408bab661aSEmmanuel Vadot      - const: rchng
418bab661aSEmmanuel Vadot      - const: pipe
428bab661aSEmmanuel Vadot      - const: pipediv2
438bab661aSEmmanuel Vadot
448bab661aSEmmanuel Vadot  power-domains:
458bab661aSEmmanuel Vadot    maxItems: 1
468bab661aSEmmanuel Vadot
478bab661aSEmmanuel Vadot  resets:
48*cb7aa33aSEmmanuel Vadot    minItems: 1
49*cb7aa33aSEmmanuel Vadot    maxItems: 2
508bab661aSEmmanuel Vadot
518bab661aSEmmanuel Vadot  reset-names:
52*cb7aa33aSEmmanuel Vadot    minItems: 1
538bab661aSEmmanuel Vadot    items:
548bab661aSEmmanuel Vadot      - const: phy
55*cb7aa33aSEmmanuel Vadot      - const: phy_nocsr
568bab661aSEmmanuel Vadot
578bab661aSEmmanuel Vadot  vdda-phy-supply: true
588bab661aSEmmanuel Vadot
598bab661aSEmmanuel Vadot  vdda-pll-supply: true
608bab661aSEmmanuel Vadot
61*cb7aa33aSEmmanuel Vadot  vdda-qref-supply: true
62*cb7aa33aSEmmanuel Vadot
638bab661aSEmmanuel Vadot  qcom,4ln-config-sel:
648bab661aSEmmanuel Vadot    description: PCIe 4-lane configuration
658bab661aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle-array
668bab661aSEmmanuel Vadot    items:
678bab661aSEmmanuel Vadot      - items:
688bab661aSEmmanuel Vadot          - description: phandle of TCSR syscon
698bab661aSEmmanuel Vadot          - description: offset of PCIe 4-lane configuration register
708bab661aSEmmanuel Vadot          - description: offset of configuration bit for this PHY
718bab661aSEmmanuel Vadot
728bab661aSEmmanuel Vadot  "#clock-cells":
738bab661aSEmmanuel Vadot    const: 0
748bab661aSEmmanuel Vadot
758bab661aSEmmanuel Vadot  clock-output-names:
768bab661aSEmmanuel Vadot    maxItems: 1
778bab661aSEmmanuel Vadot
788bab661aSEmmanuel Vadot  "#phy-cells":
798bab661aSEmmanuel Vadot    const: 0
808bab661aSEmmanuel Vadot
818bab661aSEmmanuel Vadotrequired:
828bab661aSEmmanuel Vadot  - compatible
838bab661aSEmmanuel Vadot  - reg
848bab661aSEmmanuel Vadot  - clocks
858bab661aSEmmanuel Vadot  - clock-names
868bab661aSEmmanuel Vadot  - power-domains
878bab661aSEmmanuel Vadot  - resets
888bab661aSEmmanuel Vadot  - reset-names
898bab661aSEmmanuel Vadot  - vdda-phy-supply
908bab661aSEmmanuel Vadot  - vdda-pll-supply
918bab661aSEmmanuel Vadot  - "#clock-cells"
928bab661aSEmmanuel Vadot  - clock-output-names
938bab661aSEmmanuel Vadot  - "#phy-cells"
948bab661aSEmmanuel Vadot
958bab661aSEmmanuel VadotadditionalProperties: false
968bab661aSEmmanuel Vadot
978bab661aSEmmanuel VadotallOf:
988bab661aSEmmanuel Vadot  - if:
998bab661aSEmmanuel Vadot      properties:
1008bab661aSEmmanuel Vadot        compatible:
1018bab661aSEmmanuel Vadot          contains:
1028bab661aSEmmanuel Vadot            enum:
1038bab661aSEmmanuel Vadot              - qcom,sc8280xp-qmp-gen3x4-pcie-phy
1048bab661aSEmmanuel Vadot    then:
1058bab661aSEmmanuel Vadot      properties:
1068bab661aSEmmanuel Vadot        reg:
1078bab661aSEmmanuel Vadot          items:
1088bab661aSEmmanuel Vadot            - description: port a
1098bab661aSEmmanuel Vadot            - description: port b
1108bab661aSEmmanuel Vadot      required:
1118bab661aSEmmanuel Vadot        - qcom,4ln-config-sel
1128bab661aSEmmanuel Vadot    else:
1138bab661aSEmmanuel Vadot      properties:
1148bab661aSEmmanuel Vadot        reg:
1158bab661aSEmmanuel Vadot          maxItems: 1
1168bab661aSEmmanuel Vadot
117*cb7aa33aSEmmanuel Vadot  - if:
118*cb7aa33aSEmmanuel Vadot      properties:
119*cb7aa33aSEmmanuel Vadot        compatible:
120*cb7aa33aSEmmanuel Vadot          contains:
121*cb7aa33aSEmmanuel Vadot            enum:
122*cb7aa33aSEmmanuel Vadot              - qcom,sm8350-qmp-gen3x1-pcie-phy
123*cb7aa33aSEmmanuel Vadot              - qcom,sm8550-qmp-gen3x2-pcie-phy
124*cb7aa33aSEmmanuel Vadot              - qcom,sm8550-qmp-gen4x2-pcie-phy
125*cb7aa33aSEmmanuel Vadot    then:
126*cb7aa33aSEmmanuel Vadot      properties:
127*cb7aa33aSEmmanuel Vadot        clocks:
128*cb7aa33aSEmmanuel Vadot          maxItems: 5
129*cb7aa33aSEmmanuel Vadot        clock-names:
130*cb7aa33aSEmmanuel Vadot          maxItems: 5
131*cb7aa33aSEmmanuel Vadot    else:
132*cb7aa33aSEmmanuel Vadot      properties:
133*cb7aa33aSEmmanuel Vadot        clocks:
134*cb7aa33aSEmmanuel Vadot          minItems: 6
135*cb7aa33aSEmmanuel Vadot        clock-names:
136*cb7aa33aSEmmanuel Vadot          minItems: 6
137*cb7aa33aSEmmanuel Vadot
138*cb7aa33aSEmmanuel Vadot  - if:
139*cb7aa33aSEmmanuel Vadot      properties:
140*cb7aa33aSEmmanuel Vadot        compatible:
141*cb7aa33aSEmmanuel Vadot          contains:
142*cb7aa33aSEmmanuel Vadot            enum:
143*cb7aa33aSEmmanuel Vadot              - qcom,sm8550-qmp-gen4x2-pcie-phy
144*cb7aa33aSEmmanuel Vadot    then:
145*cb7aa33aSEmmanuel Vadot      properties:
146*cb7aa33aSEmmanuel Vadot        resets:
147*cb7aa33aSEmmanuel Vadot          minItems: 2
148*cb7aa33aSEmmanuel Vadot        reset-names:
149*cb7aa33aSEmmanuel Vadot          minItems: 2
150*cb7aa33aSEmmanuel Vadot    else:
151*cb7aa33aSEmmanuel Vadot      properties:
152*cb7aa33aSEmmanuel Vadot        resets:
153*cb7aa33aSEmmanuel Vadot          maxItems: 1
154*cb7aa33aSEmmanuel Vadot        reset-names:
155*cb7aa33aSEmmanuel Vadot          maxItems: 1
156*cb7aa33aSEmmanuel Vadot
1578bab661aSEmmanuel Vadotexamples:
1588bab661aSEmmanuel Vadot  - |
1598bab661aSEmmanuel Vadot    #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
1608bab661aSEmmanuel Vadot
1618bab661aSEmmanuel Vadot    pcie2b_phy: phy@1c18000 {
1628bab661aSEmmanuel Vadot      compatible = "qcom,sc8280xp-qmp-gen3x2-pcie-phy";
1638bab661aSEmmanuel Vadot      reg = <0x01c18000 0x2000>;
1648bab661aSEmmanuel Vadot
1658bab661aSEmmanuel Vadot      clocks = <&gcc GCC_PCIE_2B_AUX_CLK>,
1668bab661aSEmmanuel Vadot               <&gcc GCC_PCIE_2B_CFG_AHB_CLK>,
1678bab661aSEmmanuel Vadot               <&gcc GCC_PCIE_2A2B_CLKREF_CLK>,
1688bab661aSEmmanuel Vadot               <&gcc GCC_PCIE2B_PHY_RCHNG_CLK>,
1698bab661aSEmmanuel Vadot               <&gcc GCC_PCIE_2B_PIPE_CLK>,
1708bab661aSEmmanuel Vadot               <&gcc GCC_PCIE_2B_PIPEDIV2_CLK>;
1718bab661aSEmmanuel Vadot      clock-names = "aux", "cfg_ahb", "ref", "rchng",
1728bab661aSEmmanuel Vadot                    "pipe", "pipediv2";
1738bab661aSEmmanuel Vadot
1748bab661aSEmmanuel Vadot      power-domains = <&gcc PCIE_2B_GDSC>;
1758bab661aSEmmanuel Vadot
1768bab661aSEmmanuel Vadot      resets = <&gcc GCC_PCIE_2B_PHY_BCR>;
1778bab661aSEmmanuel Vadot      reset-names = "phy";
1788bab661aSEmmanuel Vadot
1798bab661aSEmmanuel Vadot      vdda-phy-supply = <&vreg_l6d>;
1808bab661aSEmmanuel Vadot      vdda-pll-supply = <&vreg_l4d>;
1818bab661aSEmmanuel Vadot
1828bab661aSEmmanuel Vadot      #clock-cells = <0>;
1838bab661aSEmmanuel Vadot      clock-output-names = "pcie_2b_pipe_clk";
1848bab661aSEmmanuel Vadot
1858bab661aSEmmanuel Vadot      #phy-cells = <0>;
1868bab661aSEmmanuel Vadot    };
1878bab661aSEmmanuel Vadot
1888bab661aSEmmanuel Vadot    pcie2a_phy: phy@1c24000 {
1898bab661aSEmmanuel Vadot      compatible = "qcom,sc8280xp-qmp-gen3x4-pcie-phy";
1908bab661aSEmmanuel Vadot      reg = <0x01c24000 0x2000>, <0x01c26000 0x2000>;
1918bab661aSEmmanuel Vadot
1928bab661aSEmmanuel Vadot      clocks = <&gcc GCC_PCIE_2A_AUX_CLK>,
1938bab661aSEmmanuel Vadot               <&gcc GCC_PCIE_2A_CFG_AHB_CLK>,
1948bab661aSEmmanuel Vadot               <&gcc GCC_PCIE_2A2B_CLKREF_CLK>,
1958bab661aSEmmanuel Vadot               <&gcc GCC_PCIE2A_PHY_RCHNG_CLK>,
1968bab661aSEmmanuel Vadot               <&gcc GCC_PCIE_2A_PIPE_CLK>,
1978bab661aSEmmanuel Vadot               <&gcc GCC_PCIE_2A_PIPEDIV2_CLK>;
1988bab661aSEmmanuel Vadot      clock-names = "aux", "cfg_ahb", "ref", "rchng",
1998bab661aSEmmanuel Vadot                    "pipe", "pipediv2";
2008bab661aSEmmanuel Vadot
2018bab661aSEmmanuel Vadot      power-domains = <&gcc PCIE_2A_GDSC>;
2028bab661aSEmmanuel Vadot
2038bab661aSEmmanuel Vadot      resets = <&gcc GCC_PCIE_2A_PHY_BCR>;
2048bab661aSEmmanuel Vadot      reset-names = "phy";
2058bab661aSEmmanuel Vadot
2068bab661aSEmmanuel Vadot      vdda-phy-supply = <&vreg_l6d>;
2078bab661aSEmmanuel Vadot      vdda-pll-supply = <&vreg_l4d>;
2088bab661aSEmmanuel Vadot
2098bab661aSEmmanuel Vadot      qcom,4ln-config-sel = <&tcsr 0xa044 0>;
2108bab661aSEmmanuel Vadot
2118bab661aSEmmanuel Vadot      #clock-cells = <0>;
2128bab661aSEmmanuel Vadot      clock-output-names = "pcie_2a_pipe_clk";
2138bab661aSEmmanuel Vadot
2148bab661aSEmmanuel Vadot      #phy-cells = <0>;
2158bab661aSEmmanuel Vadot    };
216