130638230SJohan Hovold# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
230638230SJohan Hovold%YAML 1.2
330638230SJohan Hovold---
430638230SJohan Hovold$id: http://devicetree.org/schemas/phy/qcom,sc8280xp-qmp-pcie-phy.yaml#
530638230SJohan Hovold$schema: http://devicetree.org/meta-schemas/core.yaml#
630638230SJohan Hovold
730638230SJohan Hovoldtitle: Qualcomm QMP PHY controller (PCIe, SC8280XP)
830638230SJohan Hovold
930638230SJohan Hovoldmaintainers:
1030638230SJohan Hovold  - Vinod Koul <vkoul@kernel.org>
1130638230SJohan Hovold
1230638230SJohan Hovolddescription:
1330638230SJohan Hovold  The QMP PHY controller supports physical layer functionality for a number of
1430638230SJohan Hovold  controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
1530638230SJohan Hovold
1630638230SJohan Hovoldproperties:
1730638230SJohan Hovold  compatible:
1830638230SJohan Hovold    enum:
1930638230SJohan Hovold      - qcom,sc8280xp-qmp-gen3x1-pcie-phy
2030638230SJohan Hovold      - qcom,sc8280xp-qmp-gen3x2-pcie-phy
2130638230SJohan Hovold      - qcom,sc8280xp-qmp-gen3x4-pcie-phy
22*43a6a29bSDmitry Baryshkov      - qcom,sm8350-qmp-gen3x1-pcie-phy
2330638230SJohan Hovold
2430638230SJohan Hovold  reg:
2530638230SJohan Hovold    minItems: 1
2630638230SJohan Hovold    maxItems: 2
2730638230SJohan Hovold
2830638230SJohan Hovold  clocks:
29*43a6a29bSDmitry Baryshkov    minItems: 5
3030638230SJohan Hovold    maxItems: 6
3130638230SJohan Hovold
3230638230SJohan Hovold  clock-names:
33*43a6a29bSDmitry Baryshkov    minItems: 5
3430638230SJohan Hovold    items:
3530638230SJohan Hovold      - const: aux
3630638230SJohan Hovold      - const: cfg_ahb
3730638230SJohan Hovold      - const: ref
3830638230SJohan Hovold      - const: rchng
3930638230SJohan Hovold      - const: pipe
4030638230SJohan Hovold      - const: pipediv2
4130638230SJohan Hovold
4230638230SJohan Hovold  power-domains:
4330638230SJohan Hovold    maxItems: 1
4430638230SJohan Hovold
4530638230SJohan Hovold  resets:
4630638230SJohan Hovold    maxItems: 1
4730638230SJohan Hovold
4830638230SJohan Hovold  reset-names:
4930638230SJohan Hovold    items:
5030638230SJohan Hovold      - const: phy
5130638230SJohan Hovold
5230638230SJohan Hovold  vdda-phy-supply: true
5330638230SJohan Hovold
5430638230SJohan Hovold  vdda-pll-supply: true
5530638230SJohan Hovold
5630638230SJohan Hovold  qcom,4ln-config-sel:
5730638230SJohan Hovold    description: PCIe 4-lane configuration
5830638230SJohan Hovold    $ref: /schemas/types.yaml#/definitions/phandle-array
5930638230SJohan Hovold    items:
6030638230SJohan Hovold      - items:
6130638230SJohan Hovold          - description: phandle of TCSR syscon
6230638230SJohan Hovold          - description: offset of PCIe 4-lane configuration register
6330638230SJohan Hovold          - description: offset of configuration bit for this PHY
6430638230SJohan Hovold
6530638230SJohan Hovold  "#clock-cells":
6630638230SJohan Hovold    const: 0
6730638230SJohan Hovold
6830638230SJohan Hovold  clock-output-names:
6930638230SJohan Hovold    maxItems: 1
7030638230SJohan Hovold
7130638230SJohan Hovold  "#phy-cells":
7230638230SJohan Hovold    const: 0
7330638230SJohan Hovold
7430638230SJohan Hovoldrequired:
7530638230SJohan Hovold  - compatible
7630638230SJohan Hovold  - reg
7730638230SJohan Hovold  - clocks
7830638230SJohan Hovold  - clock-names
7930638230SJohan Hovold  - power-domains
8030638230SJohan Hovold  - resets
8130638230SJohan Hovold  - reset-names
8230638230SJohan Hovold  - vdda-phy-supply
8330638230SJohan Hovold  - vdda-pll-supply
8430638230SJohan Hovold  - "#clock-cells"
8530638230SJohan Hovold  - clock-output-names
8630638230SJohan Hovold  - "#phy-cells"
8730638230SJohan Hovold
8830638230SJohan HovoldadditionalProperties: false
8930638230SJohan Hovold
9030638230SJohan HovoldallOf:
9130638230SJohan Hovold  - if:
9230638230SJohan Hovold      properties:
9330638230SJohan Hovold        compatible:
9430638230SJohan Hovold          contains:
9530638230SJohan Hovold            enum:
9630638230SJohan Hovold              - qcom,sc8280xp-qmp-gen3x4-pcie-phy
9730638230SJohan Hovold    then:
9830638230SJohan Hovold      properties:
9930638230SJohan Hovold        reg:
10030638230SJohan Hovold          items:
10130638230SJohan Hovold            - description: port a
10230638230SJohan Hovold            - description: port b
10330638230SJohan Hovold      required:
10430638230SJohan Hovold        - qcom,4ln-config-sel
10530638230SJohan Hovold    else:
10630638230SJohan Hovold      properties:
10730638230SJohan Hovold        reg:
10830638230SJohan Hovold          maxItems: 1
10930638230SJohan Hovold
110*43a6a29bSDmitry Baryshkov  - if:
111*43a6a29bSDmitry Baryshkov      properties:
112*43a6a29bSDmitry Baryshkov        compatible:
113*43a6a29bSDmitry Baryshkov          contains:
114*43a6a29bSDmitry Baryshkov            enum:
115*43a6a29bSDmitry Baryshkov              - qcom,sm8350-qmp-gen3x1-pcie-phy
116*43a6a29bSDmitry Baryshkov    then:
117*43a6a29bSDmitry Baryshkov      properties:
118*43a6a29bSDmitry Baryshkov        clocks:
119*43a6a29bSDmitry Baryshkov          maxItems: 5
120*43a6a29bSDmitry Baryshkov        clock-names:
121*43a6a29bSDmitry Baryshkov          maxItems: 5
122*43a6a29bSDmitry Baryshkov    else:
123*43a6a29bSDmitry Baryshkov      properties:
124*43a6a29bSDmitry Baryshkov        clocks:
125*43a6a29bSDmitry Baryshkov          minItems: 6
126*43a6a29bSDmitry Baryshkov        clock-names:
127*43a6a29bSDmitry Baryshkov          minItems: 6
128*43a6a29bSDmitry Baryshkov
12930638230SJohan Hovoldexamples:
13030638230SJohan Hovold  - |
13130638230SJohan Hovold    #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
13230638230SJohan Hovold
13330638230SJohan Hovold    pcie2b_phy: phy@1c18000 {
13430638230SJohan Hovold      compatible = "qcom,sc8280xp-qmp-gen3x2-pcie-phy";
13530638230SJohan Hovold      reg = <0x01c18000 0x2000>;
13630638230SJohan Hovold
13730638230SJohan Hovold      clocks = <&gcc GCC_PCIE_2B_AUX_CLK>,
13830638230SJohan Hovold               <&gcc GCC_PCIE_2B_CFG_AHB_CLK>,
13930638230SJohan Hovold               <&gcc GCC_PCIE_2A2B_CLKREF_CLK>,
14030638230SJohan Hovold               <&gcc GCC_PCIE2B_PHY_RCHNG_CLK>,
14130638230SJohan Hovold               <&gcc GCC_PCIE_2B_PIPE_CLK>,
14230638230SJohan Hovold               <&gcc GCC_PCIE_2B_PIPEDIV2_CLK>;
14330638230SJohan Hovold      clock-names = "aux", "cfg_ahb", "ref", "rchng",
14430638230SJohan Hovold                    "pipe", "pipediv2";
14530638230SJohan Hovold
14630638230SJohan Hovold      power-domains = <&gcc PCIE_2B_GDSC>;
14730638230SJohan Hovold
14830638230SJohan Hovold      resets = <&gcc GCC_PCIE_2B_PHY_BCR>;
14930638230SJohan Hovold      reset-names = "phy";
15030638230SJohan Hovold
15130638230SJohan Hovold      vdda-phy-supply = <&vreg_l6d>;
15230638230SJohan Hovold      vdda-pll-supply = <&vreg_l4d>;
15330638230SJohan Hovold
15430638230SJohan Hovold      #clock-cells = <0>;
15530638230SJohan Hovold      clock-output-names = "pcie_2b_pipe_clk";
15630638230SJohan Hovold
15730638230SJohan Hovold      #phy-cells = <0>;
15830638230SJohan Hovold    };
15930638230SJohan Hovold
16030638230SJohan Hovold    pcie2a_phy: phy@1c24000 {
16130638230SJohan Hovold      compatible = "qcom,sc8280xp-qmp-gen3x4-pcie-phy";
16230638230SJohan Hovold      reg = <0x01c24000 0x2000>, <0x01c26000 0x2000>;
16330638230SJohan Hovold
16430638230SJohan Hovold      clocks = <&gcc GCC_PCIE_2A_AUX_CLK>,
16530638230SJohan Hovold               <&gcc GCC_PCIE_2A_CFG_AHB_CLK>,
16630638230SJohan Hovold               <&gcc GCC_PCIE_2A2B_CLKREF_CLK>,
16730638230SJohan Hovold               <&gcc GCC_PCIE2A_PHY_RCHNG_CLK>,
16830638230SJohan Hovold               <&gcc GCC_PCIE_2A_PIPE_CLK>,
16930638230SJohan Hovold               <&gcc GCC_PCIE_2A_PIPEDIV2_CLK>;
17030638230SJohan Hovold      clock-names = "aux", "cfg_ahb", "ref", "rchng",
17130638230SJohan Hovold                    "pipe", "pipediv2";
17230638230SJohan Hovold
17330638230SJohan Hovold      power-domains = <&gcc PCIE_2A_GDSC>;
17430638230SJohan Hovold
17530638230SJohan Hovold      resets = <&gcc GCC_PCIE_2A_PHY_BCR>;
17630638230SJohan Hovold      reset-names = "phy";
17730638230SJohan Hovold
17830638230SJohan Hovold      vdda-phy-supply = <&vreg_l6d>;
17930638230SJohan Hovold      vdda-pll-supply = <&vreg_l4d>;
18030638230SJohan Hovold
18130638230SJohan Hovold      qcom,4ln-config-sel = <&tcsr 0xa044 0>;
18230638230SJohan Hovold
18330638230SJohan Hovold      #clock-cells = <0>;
18430638230SJohan Hovold      clock-output-names = "pcie_2a_pipe_clk";
18530638230SJohan Hovold
18630638230SJohan Hovold      #phy-cells = <0>;
18730638230SJohan Hovold    };
188