1*30638230SJohan Hovold# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*30638230SJohan Hovold%YAML 1.2
3*30638230SJohan Hovold---
4*30638230SJohan Hovold$id: http://devicetree.org/schemas/phy/qcom,sc8280xp-qmp-pcie-phy.yaml#
5*30638230SJohan Hovold$schema: http://devicetree.org/meta-schemas/core.yaml#
6*30638230SJohan Hovold
7*30638230SJohan Hovoldtitle: Qualcomm QMP PHY controller (PCIe, SC8280XP)
8*30638230SJohan Hovold
9*30638230SJohan Hovoldmaintainers:
10*30638230SJohan Hovold  - Vinod Koul <vkoul@kernel.org>
11*30638230SJohan Hovold
12*30638230SJohan Hovolddescription:
13*30638230SJohan Hovold  The QMP PHY controller supports physical layer functionality for a number of
14*30638230SJohan Hovold  controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
15*30638230SJohan Hovold
16*30638230SJohan Hovoldproperties:
17*30638230SJohan Hovold  compatible:
18*30638230SJohan Hovold    enum:
19*30638230SJohan Hovold      - qcom,sc8280xp-qmp-gen3x1-pcie-phy
20*30638230SJohan Hovold      - qcom,sc8280xp-qmp-gen3x2-pcie-phy
21*30638230SJohan Hovold      - qcom,sc8280xp-qmp-gen3x4-pcie-phy
22*30638230SJohan Hovold
23*30638230SJohan Hovold  reg:
24*30638230SJohan Hovold    minItems: 1
25*30638230SJohan Hovold    maxItems: 2
26*30638230SJohan Hovold
27*30638230SJohan Hovold  clocks:
28*30638230SJohan Hovold    maxItems: 6
29*30638230SJohan Hovold
30*30638230SJohan Hovold  clock-names:
31*30638230SJohan Hovold    items:
32*30638230SJohan Hovold      - const: aux
33*30638230SJohan Hovold      - const: cfg_ahb
34*30638230SJohan Hovold      - const: ref
35*30638230SJohan Hovold      - const: rchng
36*30638230SJohan Hovold      - const: pipe
37*30638230SJohan Hovold      - const: pipediv2
38*30638230SJohan Hovold
39*30638230SJohan Hovold  power-domains:
40*30638230SJohan Hovold    maxItems: 1
41*30638230SJohan Hovold
42*30638230SJohan Hovold  resets:
43*30638230SJohan Hovold    maxItems: 1
44*30638230SJohan Hovold
45*30638230SJohan Hovold  reset-names:
46*30638230SJohan Hovold    items:
47*30638230SJohan Hovold      - const: phy
48*30638230SJohan Hovold
49*30638230SJohan Hovold  vdda-phy-supply: true
50*30638230SJohan Hovold
51*30638230SJohan Hovold  vdda-pll-supply: true
52*30638230SJohan Hovold
53*30638230SJohan Hovold  qcom,4ln-config-sel:
54*30638230SJohan Hovold    description: PCIe 4-lane configuration
55*30638230SJohan Hovold    $ref: /schemas/types.yaml#/definitions/phandle-array
56*30638230SJohan Hovold    items:
57*30638230SJohan Hovold      - items:
58*30638230SJohan Hovold          - description: phandle of TCSR syscon
59*30638230SJohan Hovold          - description: offset of PCIe 4-lane configuration register
60*30638230SJohan Hovold          - description: offset of configuration bit for this PHY
61*30638230SJohan Hovold
62*30638230SJohan Hovold  "#clock-cells":
63*30638230SJohan Hovold    const: 0
64*30638230SJohan Hovold
65*30638230SJohan Hovold  clock-output-names:
66*30638230SJohan Hovold    maxItems: 1
67*30638230SJohan Hovold
68*30638230SJohan Hovold  "#phy-cells":
69*30638230SJohan Hovold    const: 0
70*30638230SJohan Hovold
71*30638230SJohan Hovoldrequired:
72*30638230SJohan Hovold  - compatible
73*30638230SJohan Hovold  - reg
74*30638230SJohan Hovold  - clocks
75*30638230SJohan Hovold  - clock-names
76*30638230SJohan Hovold  - power-domains
77*30638230SJohan Hovold  - resets
78*30638230SJohan Hovold  - reset-names
79*30638230SJohan Hovold  - vdda-phy-supply
80*30638230SJohan Hovold  - vdda-pll-supply
81*30638230SJohan Hovold  - "#clock-cells"
82*30638230SJohan Hovold  - clock-output-names
83*30638230SJohan Hovold  - "#phy-cells"
84*30638230SJohan Hovold
85*30638230SJohan HovoldadditionalProperties: false
86*30638230SJohan Hovold
87*30638230SJohan HovoldallOf:
88*30638230SJohan Hovold  - if:
89*30638230SJohan Hovold      properties:
90*30638230SJohan Hovold        compatible:
91*30638230SJohan Hovold          contains:
92*30638230SJohan Hovold            enum:
93*30638230SJohan Hovold              - qcom,sc8280xp-qmp-gen3x4-pcie-phy
94*30638230SJohan Hovold    then:
95*30638230SJohan Hovold      properties:
96*30638230SJohan Hovold        reg:
97*30638230SJohan Hovold          items:
98*30638230SJohan Hovold            - description: port a
99*30638230SJohan Hovold            - description: port b
100*30638230SJohan Hovold      required:
101*30638230SJohan Hovold        - qcom,4ln-config-sel
102*30638230SJohan Hovold    else:
103*30638230SJohan Hovold      properties:
104*30638230SJohan Hovold        reg:
105*30638230SJohan Hovold          maxItems: 1
106*30638230SJohan Hovold
107*30638230SJohan Hovoldexamples:
108*30638230SJohan Hovold  - |
109*30638230SJohan Hovold    #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
110*30638230SJohan Hovold
111*30638230SJohan Hovold    pcie2b_phy: phy@1c18000 {
112*30638230SJohan Hovold      compatible = "qcom,sc8280xp-qmp-gen3x2-pcie-phy";
113*30638230SJohan Hovold      reg = <0x01c18000 0x2000>;
114*30638230SJohan Hovold
115*30638230SJohan Hovold      clocks = <&gcc GCC_PCIE_2B_AUX_CLK>,
116*30638230SJohan Hovold               <&gcc GCC_PCIE_2B_CFG_AHB_CLK>,
117*30638230SJohan Hovold               <&gcc GCC_PCIE_2A2B_CLKREF_CLK>,
118*30638230SJohan Hovold               <&gcc GCC_PCIE2B_PHY_RCHNG_CLK>,
119*30638230SJohan Hovold               <&gcc GCC_PCIE_2B_PIPE_CLK>,
120*30638230SJohan Hovold               <&gcc GCC_PCIE_2B_PIPEDIV2_CLK>;
121*30638230SJohan Hovold      clock-names = "aux", "cfg_ahb", "ref", "rchng",
122*30638230SJohan Hovold                    "pipe", "pipediv2";
123*30638230SJohan Hovold
124*30638230SJohan Hovold      power-domains = <&gcc PCIE_2B_GDSC>;
125*30638230SJohan Hovold
126*30638230SJohan Hovold      resets = <&gcc GCC_PCIE_2B_PHY_BCR>;
127*30638230SJohan Hovold      reset-names = "phy";
128*30638230SJohan Hovold
129*30638230SJohan Hovold      vdda-phy-supply = <&vreg_l6d>;
130*30638230SJohan Hovold      vdda-pll-supply = <&vreg_l4d>;
131*30638230SJohan Hovold
132*30638230SJohan Hovold      #clock-cells = <0>;
133*30638230SJohan Hovold      clock-output-names = "pcie_2b_pipe_clk";
134*30638230SJohan Hovold
135*30638230SJohan Hovold      #phy-cells = <0>;
136*30638230SJohan Hovold    };
137*30638230SJohan Hovold
138*30638230SJohan Hovold    pcie2a_phy: phy@1c24000 {
139*30638230SJohan Hovold      compatible = "qcom,sc8280xp-qmp-gen3x4-pcie-phy";
140*30638230SJohan Hovold      reg = <0x01c24000 0x2000>, <0x01c26000 0x2000>;
141*30638230SJohan Hovold
142*30638230SJohan Hovold      clocks = <&gcc GCC_PCIE_2A_AUX_CLK>,
143*30638230SJohan Hovold               <&gcc GCC_PCIE_2A_CFG_AHB_CLK>,
144*30638230SJohan Hovold               <&gcc GCC_PCIE_2A2B_CLKREF_CLK>,
145*30638230SJohan Hovold               <&gcc GCC_PCIE2A_PHY_RCHNG_CLK>,
146*30638230SJohan Hovold               <&gcc GCC_PCIE_2A_PIPE_CLK>,
147*30638230SJohan Hovold               <&gcc GCC_PCIE_2A_PIPEDIV2_CLK>;
148*30638230SJohan Hovold      clock-names = "aux", "cfg_ahb", "ref", "rchng",
149*30638230SJohan Hovold                    "pipe", "pipediv2";
150*30638230SJohan Hovold
151*30638230SJohan Hovold      power-domains = <&gcc PCIE_2A_GDSC>;
152*30638230SJohan Hovold
153*30638230SJohan Hovold      resets = <&gcc GCC_PCIE_2A_PHY_BCR>;
154*30638230SJohan Hovold      reset-names = "phy";
155*30638230SJohan Hovold
156*30638230SJohan Hovold      vdda-phy-supply = <&vreg_l6d>;
157*30638230SJohan Hovold      vdda-pll-supply = <&vreg_l4d>;
158*30638230SJohan Hovold
159*30638230SJohan Hovold      qcom,4ln-config-sel = <&tcsr 0xa044 0>;
160*30638230SJohan Hovold
161*30638230SJohan Hovold      #clock-cells = <0>;
162*30638230SJohan Hovold      clock-output-names = "pcie_2a_pipe_clk";
163*30638230SJohan Hovold
164*30638230SJohan Hovold      #phy-cells = <0>;
165*30638230SJohan Hovold    };
166