14506dc82SJohan Hovold# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
24506dc82SJohan Hovold%YAML 1.2
34506dc82SJohan Hovold---
44506dc82SJohan Hovold$id: http://devicetree.org/schemas/phy/qcom,msm8996-qmp-pcie-phy.yaml#
54506dc82SJohan Hovold$schema: http://devicetree.org/meta-schemas/core.yaml#
64506dc82SJohan Hovold
74506dc82SJohan Hovoldtitle: Qualcomm QMP PHY controller (MSM8996 PCIe)
84506dc82SJohan Hovold
94506dc82SJohan Hovoldmaintainers:
104506dc82SJohan Hovold  - Vinod Koul <vkoul@kernel.org>
114506dc82SJohan Hovold
124506dc82SJohan Hovolddescription:
134506dc82SJohan Hovold  QMP PHY controller supports physical layer functionality for a number of
144506dc82SJohan Hovold  controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
154506dc82SJohan Hovold
164506dc82SJohan Hovoldproperties:
174506dc82SJohan Hovold  compatible:
184506dc82SJohan Hovold    const: qcom,msm8996-qmp-pcie-phy
194506dc82SJohan Hovold
204506dc82SJohan Hovold  reg:
214506dc82SJohan Hovold    items:
224506dc82SJohan Hovold      - description: serdes
234506dc82SJohan Hovold
244506dc82SJohan Hovold  "#address-cells":
254506dc82SJohan Hovold    enum: [ 1, 2 ]
264506dc82SJohan Hovold
274506dc82SJohan Hovold  "#size-cells":
284506dc82SJohan Hovold    enum: [ 1, 2 ]
294506dc82SJohan Hovold
304506dc82SJohan Hovold  ranges: true
314506dc82SJohan Hovold
324506dc82SJohan Hovold  clocks:
334506dc82SJohan Hovold    maxItems: 3
344506dc82SJohan Hovold
354506dc82SJohan Hovold  clock-names:
364506dc82SJohan Hovold    items:
374506dc82SJohan Hovold      - const: aux
384506dc82SJohan Hovold      - const: cfg_ahb
394506dc82SJohan Hovold      - const: ref
404506dc82SJohan Hovold
414506dc82SJohan Hovold  resets:
424506dc82SJohan Hovold    maxItems: 3
434506dc82SJohan Hovold
444506dc82SJohan Hovold  reset-names:
454506dc82SJohan Hovold    items:
464506dc82SJohan Hovold      - const: phy
474506dc82SJohan Hovold      - const: common
484506dc82SJohan Hovold      - const: cfg
494506dc82SJohan Hovold
504506dc82SJohan Hovold  vdda-phy-supply: true
514506dc82SJohan Hovold
524506dc82SJohan Hovold  vdda-pll-supply: true
534506dc82SJohan Hovold
544506dc82SJohan Hovold  vddp-ref-clk-supply: true
554506dc82SJohan Hovold
564506dc82SJohan HovoldpatternProperties:
574506dc82SJohan Hovold  "^phy@[0-9a-f]+$":
584506dc82SJohan Hovold    type: object
594506dc82SJohan Hovold    description: one child node per PHY provided by this block
60ea188846SJohan Hovold    properties:
61ea188846SJohan Hovold      reg:
62ea188846SJohan Hovold        items:
63ea188846SJohan Hovold          - description: TX
64ea188846SJohan Hovold          - description: RX
65ea188846SJohan Hovold          - description: PCS
66ea188846SJohan Hovold
67ea188846SJohan Hovold      clocks:
68ea188846SJohan Hovold        items:
69ea188846SJohan Hovold          - description: PIPE clock
70ea188846SJohan Hovold
71ea188846SJohan Hovold      clock-names:
72dd346f5aSJohan Hovold        deprecated: true
73ea188846SJohan Hovold        items:
74ea188846SJohan Hovold          - enum:
75ea188846SJohan Hovold              - pipe0
76ea188846SJohan Hovold              - pipe1
77ea188846SJohan Hovold              - pipe2
78ea188846SJohan Hovold
79ea188846SJohan Hovold      resets:
80ea188846SJohan Hovold        items:
81*f858940eSJohan Hovold          - description: PHY reset
82ea188846SJohan Hovold
83ea188846SJohan Hovold      reset-names:
84*f858940eSJohan Hovold        deprecated: true
85ea188846SJohan Hovold        items:
86ea188846SJohan Hovold          - enum:
87ea188846SJohan Hovold              - lane0
88ea188846SJohan Hovold              - lane1
89ea188846SJohan Hovold              - lane2
90ea188846SJohan Hovold
91ea188846SJohan Hovold      "#clock-cells":
92ea188846SJohan Hovold        const: 0
93ea188846SJohan Hovold
94ea188846SJohan Hovold      clock-output-names:
95ea188846SJohan Hovold        maxItems: 1
96ea188846SJohan Hovold
97ea188846SJohan Hovold      "#phy-cells":
98ea188846SJohan Hovold        const: 0
99ea188846SJohan Hovold
100ea188846SJohan Hovold    required:
101ea188846SJohan Hovold      - reg
102ea188846SJohan Hovold      - clocks
103ea188846SJohan Hovold      - resets
104ea188846SJohan Hovold      - "#clock-cells"
105ea188846SJohan Hovold      - clock-output-names
106ea188846SJohan Hovold      - "#phy-cells"
107ea188846SJohan Hovold
108ea188846SJohan Hovold    additionalProperties: false
1094506dc82SJohan Hovold
1104506dc82SJohan Hovoldrequired:
1114506dc82SJohan Hovold  - compatible
1124506dc82SJohan Hovold  - reg
1134506dc82SJohan Hovold  - "#address-cells"
1144506dc82SJohan Hovold  - "#size-cells"
1154506dc82SJohan Hovold  - ranges
1164506dc82SJohan Hovold  - clocks
1174506dc82SJohan Hovold  - clock-names
1184506dc82SJohan Hovold  - resets
1194506dc82SJohan Hovold  - reset-names
1204506dc82SJohan Hovold  - vdda-phy-supply
1214506dc82SJohan Hovold  - vdda-pll-supply
1224506dc82SJohan Hovold
1234506dc82SJohan HovoldadditionalProperties: false
1244506dc82SJohan Hovold
1254506dc82SJohan Hovoldexamples:
1264506dc82SJohan Hovold  - |
1274506dc82SJohan Hovold    #include <dt-bindings/clock/qcom,gcc-msm8996.h>
1284506dc82SJohan Hovold    pcie_phy: phy-wrapper@34000 {
1294506dc82SJohan Hovold        compatible = "qcom,msm8996-qmp-pcie-phy";
1304506dc82SJohan Hovold        reg = <0x34000 0x488>;
1314506dc82SJohan Hovold        #address-cells = <1>;
1324506dc82SJohan Hovold        #size-cells = <1>;
1334506dc82SJohan Hovold        ranges = <0x0 0x34000 0x4000>;
1344506dc82SJohan Hovold
1354506dc82SJohan Hovold        clocks = <&gcc GCC_PCIE_PHY_AUX_CLK>,
1364506dc82SJohan Hovold                 <&gcc GCC_PCIE_PHY_CFG_AHB_CLK>,
1374506dc82SJohan Hovold                 <&gcc GCC_PCIE_CLKREF_CLK>;
1384506dc82SJohan Hovold        clock-names = "aux", "cfg_ahb", "ref";
1394506dc82SJohan Hovold
1404506dc82SJohan Hovold        resets = <&gcc GCC_PCIE_PHY_BCR>,
1414506dc82SJohan Hovold                 <&gcc GCC_PCIE_PHY_COM_BCR>,
1424506dc82SJohan Hovold                 <&gcc GCC_PCIE_PHY_COM_NOCSR_BCR>;
1434506dc82SJohan Hovold        reset-names = "phy", "common", "cfg";
1444506dc82SJohan Hovold
1454506dc82SJohan Hovold        vdda-phy-supply = <&vreg_l28a_0p925>;
1464506dc82SJohan Hovold        vdda-pll-supply = <&vreg_l12a_1p8>;
1474506dc82SJohan Hovold
1484506dc82SJohan Hovold        pciephy_0: phy@1000 {
1494506dc82SJohan Hovold            reg = <0x1000 0x130>,
1504506dc82SJohan Hovold                  <0x1200 0x200>,
1514506dc82SJohan Hovold                  <0x1400 0x1dc>;
1524506dc82SJohan Hovold
1534506dc82SJohan Hovold            clocks = <&gcc GCC_PCIE_0_PIPE_CLK>;
1544506dc82SJohan Hovold            resets = <&gcc GCC_PCIE_0_PHY_BCR>;
1554506dc82SJohan Hovold
1564506dc82SJohan Hovold            #clock-cells = <0>;
1574506dc82SJohan Hovold            clock-output-names = "pcie_0_pipe_clk_src";
1584506dc82SJohan Hovold
1594506dc82SJohan Hovold            #phy-cells = <0>;
1604506dc82SJohan Hovold        };
1614506dc82SJohan Hovold
1624506dc82SJohan Hovold        pciephy_1: phy@2000 {
1634506dc82SJohan Hovold            reg = <0x2000 0x130>,
1644506dc82SJohan Hovold                  <0x2200 0x200>,
1654506dc82SJohan Hovold                  <0x2400 0x1dc>;
1664506dc82SJohan Hovold
1674506dc82SJohan Hovold            clocks = <&gcc GCC_PCIE_1_PIPE_CLK>;
1684506dc82SJohan Hovold            resets = <&gcc GCC_PCIE_1_PHY_BCR>;
1694506dc82SJohan Hovold
1704506dc82SJohan Hovold            #clock-cells = <0>;
1714506dc82SJohan Hovold            clock-output-names = "pcie_1_pipe_clk_src";
1724506dc82SJohan Hovold
1734506dc82SJohan Hovold            #phy-cells = <0>;
1744506dc82SJohan Hovold        };
1754506dc82SJohan Hovold
1764506dc82SJohan Hovold        pciephy_2: phy@3000 {
1774506dc82SJohan Hovold            reg = <0x3000 0x130>,
1784506dc82SJohan Hovold                  <0x3200 0x200>,
1794506dc82SJohan Hovold                  <0x3400 0x1dc>;
1804506dc82SJohan Hovold
1814506dc82SJohan Hovold            clocks = <&gcc GCC_PCIE_2_PIPE_CLK>;
1824506dc82SJohan Hovold            resets = <&gcc GCC_PCIE_2_PHY_BCR>;
1834506dc82SJohan Hovold
1844506dc82SJohan Hovold            #clock-cells = <0>;
1854506dc82SJohan Hovold            clock-output-names = "pcie_2_pipe_clk_src";
1864506dc82SJohan Hovold
1874506dc82SJohan Hovold            #phy-cells = <0>;
1884506dc82SJohan Hovold        };
1894506dc82SJohan Hovold    };
190