1*7ef62cebSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2*7ef62cebSEmmanuel Vadot%YAML 1.2 3*7ef62cebSEmmanuel Vadot--- 4*7ef62cebSEmmanuel Vadot$id: http://devicetree.org/schemas/phy/qcom,qmp-pcie-phy.yaml# 5*7ef62cebSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*7ef62cebSEmmanuel Vadot 7*7ef62cebSEmmanuel Vadottitle: Qualcomm QMP PHY controller (PCIe) 8*7ef62cebSEmmanuel Vadot 9*7ef62cebSEmmanuel Vadotmaintainers: 10*7ef62cebSEmmanuel Vadot - Vinod Koul <vkoul@kernel.org> 11*7ef62cebSEmmanuel Vadot 12*7ef62cebSEmmanuel Vadotdescription: 13*7ef62cebSEmmanuel Vadot QMP PHY controller supports physical layer functionality for a number of 14*7ef62cebSEmmanuel Vadot controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB. 15*7ef62cebSEmmanuel Vadot 16*7ef62cebSEmmanuel Vadotproperties: 17*7ef62cebSEmmanuel Vadot compatible: 18*7ef62cebSEmmanuel Vadot enum: 19*7ef62cebSEmmanuel Vadot - qcom,ipq6018-qmp-pcie-phy 20*7ef62cebSEmmanuel Vadot - qcom,ipq8074-qmp-gen3-pcie-phy 21*7ef62cebSEmmanuel Vadot - qcom,ipq8074-qmp-pcie-phy 22*7ef62cebSEmmanuel Vadot - qcom,msm8998-qmp-pcie-phy 23*7ef62cebSEmmanuel Vadot - qcom,sc8180x-qmp-pcie-phy 24*7ef62cebSEmmanuel Vadot - qcom,sdm845-qhp-pcie-phy 25*7ef62cebSEmmanuel Vadot - qcom,sdm845-qmp-pcie-phy 26*7ef62cebSEmmanuel Vadot - qcom,sdx55-qmp-pcie-phy 27*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-gen3x1-pcie-phy 28*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-gen3x2-pcie-phy 29*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-modem-pcie-phy 30*7ef62cebSEmmanuel Vadot - qcom,sm8450-qmp-gen3x1-pcie-phy 31*7ef62cebSEmmanuel Vadot - qcom,sm8450-qmp-gen4x2-pcie-phy 32*7ef62cebSEmmanuel Vadot 33*7ef62cebSEmmanuel Vadot reg: 34*7ef62cebSEmmanuel Vadot items: 35*7ef62cebSEmmanuel Vadot - description: serdes 36*7ef62cebSEmmanuel Vadot 37*7ef62cebSEmmanuel Vadot "#address-cells": 38*7ef62cebSEmmanuel Vadot enum: [ 1, 2 ] 39*7ef62cebSEmmanuel Vadot 40*7ef62cebSEmmanuel Vadot "#size-cells": 41*7ef62cebSEmmanuel Vadot enum: [ 1, 2 ] 42*7ef62cebSEmmanuel Vadot 43*7ef62cebSEmmanuel Vadot ranges: true 44*7ef62cebSEmmanuel Vadot 45*7ef62cebSEmmanuel Vadot clocks: 46*7ef62cebSEmmanuel Vadot minItems: 2 47*7ef62cebSEmmanuel Vadot maxItems: 4 48*7ef62cebSEmmanuel Vadot 49*7ef62cebSEmmanuel Vadot clock-names: 50*7ef62cebSEmmanuel Vadot minItems: 2 51*7ef62cebSEmmanuel Vadot maxItems: 4 52*7ef62cebSEmmanuel Vadot 53*7ef62cebSEmmanuel Vadot resets: 54*7ef62cebSEmmanuel Vadot minItems: 1 55*7ef62cebSEmmanuel Vadot maxItems: 2 56*7ef62cebSEmmanuel Vadot 57*7ef62cebSEmmanuel Vadot reset-names: 58*7ef62cebSEmmanuel Vadot minItems: 1 59*7ef62cebSEmmanuel Vadot maxItems: 2 60*7ef62cebSEmmanuel Vadot 61*7ef62cebSEmmanuel Vadot vdda-phy-supply: true 62*7ef62cebSEmmanuel Vadot 63*7ef62cebSEmmanuel Vadot vdda-pll-supply: true 64*7ef62cebSEmmanuel Vadot 65*7ef62cebSEmmanuel Vadot vddp-ref-clk-supply: true 66*7ef62cebSEmmanuel Vadot 67*7ef62cebSEmmanuel VadotpatternProperties: 68*7ef62cebSEmmanuel Vadot "^phy@[0-9a-f]+$": 69*7ef62cebSEmmanuel Vadot type: object 70*7ef62cebSEmmanuel Vadot description: single PHY-provider child node 71*7ef62cebSEmmanuel Vadot properties: 72*7ef62cebSEmmanuel Vadot reg: 73*7ef62cebSEmmanuel Vadot minItems: 3 74*7ef62cebSEmmanuel Vadot maxItems: 6 75*7ef62cebSEmmanuel Vadot 76*7ef62cebSEmmanuel Vadot clocks: 77*7ef62cebSEmmanuel Vadot items: 78*7ef62cebSEmmanuel Vadot - description: PIPE clock 79*7ef62cebSEmmanuel Vadot 80*7ef62cebSEmmanuel Vadot clock-names: 81*7ef62cebSEmmanuel Vadot deprecated: true 82*7ef62cebSEmmanuel Vadot items: 83*7ef62cebSEmmanuel Vadot - const: pipe0 84*7ef62cebSEmmanuel Vadot 85*7ef62cebSEmmanuel Vadot "#clock-cells": 86*7ef62cebSEmmanuel Vadot const: 0 87*7ef62cebSEmmanuel Vadot 88*7ef62cebSEmmanuel Vadot clock-output-names: 89*7ef62cebSEmmanuel Vadot maxItems: 1 90*7ef62cebSEmmanuel Vadot 91*7ef62cebSEmmanuel Vadot "#phy-cells": 92*7ef62cebSEmmanuel Vadot const: 0 93*7ef62cebSEmmanuel Vadot 94*7ef62cebSEmmanuel Vadot required: 95*7ef62cebSEmmanuel Vadot - reg 96*7ef62cebSEmmanuel Vadot - clocks 97*7ef62cebSEmmanuel Vadot - "#clock-cells" 98*7ef62cebSEmmanuel Vadot - clock-output-names 99*7ef62cebSEmmanuel Vadot - "#phy-cells" 100*7ef62cebSEmmanuel Vadot 101*7ef62cebSEmmanuel Vadot additionalProperties: false 102*7ef62cebSEmmanuel Vadot 103*7ef62cebSEmmanuel Vadotrequired: 104*7ef62cebSEmmanuel Vadot - compatible 105*7ef62cebSEmmanuel Vadot - reg 106*7ef62cebSEmmanuel Vadot - "#address-cells" 107*7ef62cebSEmmanuel Vadot - "#size-cells" 108*7ef62cebSEmmanuel Vadot - ranges 109*7ef62cebSEmmanuel Vadot - clocks 110*7ef62cebSEmmanuel Vadot - clock-names 111*7ef62cebSEmmanuel Vadot - resets 112*7ef62cebSEmmanuel Vadot - reset-names 113*7ef62cebSEmmanuel Vadot 114*7ef62cebSEmmanuel VadotadditionalProperties: false 115*7ef62cebSEmmanuel Vadot 116*7ef62cebSEmmanuel VadotallOf: 117*7ef62cebSEmmanuel Vadot - if: 118*7ef62cebSEmmanuel Vadot properties: 119*7ef62cebSEmmanuel Vadot compatible: 120*7ef62cebSEmmanuel Vadot contains: 121*7ef62cebSEmmanuel Vadot enum: 122*7ef62cebSEmmanuel Vadot - qcom,msm8998-qmp-pcie-phy 123*7ef62cebSEmmanuel Vadot then: 124*7ef62cebSEmmanuel Vadot properties: 125*7ef62cebSEmmanuel Vadot clocks: 126*7ef62cebSEmmanuel Vadot maxItems: 3 127*7ef62cebSEmmanuel Vadot clock-names: 128*7ef62cebSEmmanuel Vadot items: 129*7ef62cebSEmmanuel Vadot - const: aux 130*7ef62cebSEmmanuel Vadot - const: cfg_ahb 131*7ef62cebSEmmanuel Vadot - const: ref 132*7ef62cebSEmmanuel Vadot resets: 133*7ef62cebSEmmanuel Vadot maxItems: 2 134*7ef62cebSEmmanuel Vadot reset-names: 135*7ef62cebSEmmanuel Vadot items: 136*7ef62cebSEmmanuel Vadot - const: phy 137*7ef62cebSEmmanuel Vadot - const: common 138*7ef62cebSEmmanuel Vadot required: 139*7ef62cebSEmmanuel Vadot - vdda-phy-supply 140*7ef62cebSEmmanuel Vadot - vdda-pll-supply 141*7ef62cebSEmmanuel Vadot 142*7ef62cebSEmmanuel Vadot - if: 143*7ef62cebSEmmanuel Vadot properties: 144*7ef62cebSEmmanuel Vadot compatible: 145*7ef62cebSEmmanuel Vadot contains: 146*7ef62cebSEmmanuel Vadot enum: 147*7ef62cebSEmmanuel Vadot - qcom,ipq6018-qmp-pcie-phy 148*7ef62cebSEmmanuel Vadot - qcom,ipq8074-qmp-gen3-pcie-phy 149*7ef62cebSEmmanuel Vadot - qcom,ipq8074-qmp-pcie-phy 150*7ef62cebSEmmanuel Vadot then: 151*7ef62cebSEmmanuel Vadot properties: 152*7ef62cebSEmmanuel Vadot clocks: 153*7ef62cebSEmmanuel Vadot maxItems: 2 154*7ef62cebSEmmanuel Vadot clock-names: 155*7ef62cebSEmmanuel Vadot items: 156*7ef62cebSEmmanuel Vadot - const: aux 157*7ef62cebSEmmanuel Vadot - const: cfg_ahb 158*7ef62cebSEmmanuel Vadot resets: 159*7ef62cebSEmmanuel Vadot maxItems: 2 160*7ef62cebSEmmanuel Vadot reset-names: 161*7ef62cebSEmmanuel Vadot items: 162*7ef62cebSEmmanuel Vadot - const: phy 163*7ef62cebSEmmanuel Vadot - const: common 164*7ef62cebSEmmanuel Vadot 165*7ef62cebSEmmanuel Vadot - if: 166*7ef62cebSEmmanuel Vadot properties: 167*7ef62cebSEmmanuel Vadot compatible: 168*7ef62cebSEmmanuel Vadot contains: 169*7ef62cebSEmmanuel Vadot enum: 170*7ef62cebSEmmanuel Vadot - qcom,sc8180x-qmp-pcie-phy 171*7ef62cebSEmmanuel Vadot - qcom,sdm845-qhp-pcie-phy 172*7ef62cebSEmmanuel Vadot - qcom,sdm845-qmp-pcie-phy 173*7ef62cebSEmmanuel Vadot - qcom,sdx55-qmp-pcie-phy 174*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-gen3x1-pcie-phy 175*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-gen3x2-pcie-phy 176*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-modem-pcie-phy 177*7ef62cebSEmmanuel Vadot - qcom,sm8450-qmp-gen3x1-pcie-phy 178*7ef62cebSEmmanuel Vadot - qcom,sm8450-qmp-gen4x2-pcie-phy 179*7ef62cebSEmmanuel Vadot then: 180*7ef62cebSEmmanuel Vadot properties: 181*7ef62cebSEmmanuel Vadot clocks: 182*7ef62cebSEmmanuel Vadot maxItems: 4 183*7ef62cebSEmmanuel Vadot clock-names: 184*7ef62cebSEmmanuel Vadot items: 185*7ef62cebSEmmanuel Vadot - const: aux 186*7ef62cebSEmmanuel Vadot - const: cfg_ahb 187*7ef62cebSEmmanuel Vadot - const: ref 188*7ef62cebSEmmanuel Vadot - const: refgen 189*7ef62cebSEmmanuel Vadot resets: 190*7ef62cebSEmmanuel Vadot maxItems: 1 191*7ef62cebSEmmanuel Vadot reset-names: 192*7ef62cebSEmmanuel Vadot items: 193*7ef62cebSEmmanuel Vadot - const: phy 194*7ef62cebSEmmanuel Vadot required: 195*7ef62cebSEmmanuel Vadot - vdda-phy-supply 196*7ef62cebSEmmanuel Vadot - vdda-pll-supply 197*7ef62cebSEmmanuel Vadot 198*7ef62cebSEmmanuel Vadot - if: 199*7ef62cebSEmmanuel Vadot properties: 200*7ef62cebSEmmanuel Vadot compatible: 201*7ef62cebSEmmanuel Vadot contains: 202*7ef62cebSEmmanuel Vadot enum: 203*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-gen3x2-pcie-phy 204*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-modem-pcie-phy 205*7ef62cebSEmmanuel Vadot - qcom,sm8450-qmp-gen4x2-pcie-phy 206*7ef62cebSEmmanuel Vadot then: 207*7ef62cebSEmmanuel Vadot patternProperties: 208*7ef62cebSEmmanuel Vadot "^phy@[0-9a-f]+$": 209*7ef62cebSEmmanuel Vadot properties: 210*7ef62cebSEmmanuel Vadot reg: 211*7ef62cebSEmmanuel Vadot items: 212*7ef62cebSEmmanuel Vadot - description: TX lane 1 213*7ef62cebSEmmanuel Vadot - description: RX lane 1 214*7ef62cebSEmmanuel Vadot - description: PCS 215*7ef62cebSEmmanuel Vadot - description: TX lane 2 216*7ef62cebSEmmanuel Vadot - description: RX lane 2 217*7ef62cebSEmmanuel Vadot - description: PCS_MISC 218*7ef62cebSEmmanuel Vadot 219*7ef62cebSEmmanuel Vadot - if: 220*7ef62cebSEmmanuel Vadot properties: 221*7ef62cebSEmmanuel Vadot compatible: 222*7ef62cebSEmmanuel Vadot contains: 223*7ef62cebSEmmanuel Vadot enum: 224*7ef62cebSEmmanuel Vadot - qcom,sc8180x-qmp-pcie-phy 225*7ef62cebSEmmanuel Vadot - qcom,sdm845-qmp-pcie-phy 226*7ef62cebSEmmanuel Vadot - qcom,sdx55-qmp-pcie-phy 227*7ef62cebSEmmanuel Vadot - qcom,sm8250-qmp-gen3x1-pcie-phy 228*7ef62cebSEmmanuel Vadot - qcom,sm8450-qmp-gen3x1-pcie-phy 229*7ef62cebSEmmanuel Vadot then: 230*7ef62cebSEmmanuel Vadot patternProperties: 231*7ef62cebSEmmanuel Vadot "^phy@[0-9a-f]+$": 232*7ef62cebSEmmanuel Vadot properties: 233*7ef62cebSEmmanuel Vadot reg: 234*7ef62cebSEmmanuel Vadot items: 235*7ef62cebSEmmanuel Vadot - description: TX 236*7ef62cebSEmmanuel Vadot - description: RX 237*7ef62cebSEmmanuel Vadot - description: PCS 238*7ef62cebSEmmanuel Vadot - description: PCS_MISC 239*7ef62cebSEmmanuel Vadot 240*7ef62cebSEmmanuel Vadot - if: 241*7ef62cebSEmmanuel Vadot properties: 242*7ef62cebSEmmanuel Vadot compatible: 243*7ef62cebSEmmanuel Vadot contains: 244*7ef62cebSEmmanuel Vadot enum: 245*7ef62cebSEmmanuel Vadot - qcom,ipq6018-qmp-pcie-phy 246*7ef62cebSEmmanuel Vadot - qcom,ipq8074-qmp-pcie-phy 247*7ef62cebSEmmanuel Vadot - qcom,msm8998-qmp-pcie-phy 248*7ef62cebSEmmanuel Vadot - qcom,sdm845-qhp-pcie-phy 249*7ef62cebSEmmanuel Vadot then: 250*7ef62cebSEmmanuel Vadot patternProperties: 251*7ef62cebSEmmanuel Vadot "^phy@[0-9a-f]+$": 252*7ef62cebSEmmanuel Vadot properties: 253*7ef62cebSEmmanuel Vadot reg: 254*7ef62cebSEmmanuel Vadot items: 255*7ef62cebSEmmanuel Vadot - description: TX 256*7ef62cebSEmmanuel Vadot - description: RX 257*7ef62cebSEmmanuel Vadot - description: PCS 258*7ef62cebSEmmanuel Vadot 259*7ef62cebSEmmanuel Vadotexamples: 260*7ef62cebSEmmanuel Vadot - | 261*7ef62cebSEmmanuel Vadot #include <dt-bindings/clock/qcom,gcc-sm8250.h> 262*7ef62cebSEmmanuel Vadot phy-wrapper@1c0e000 { 263*7ef62cebSEmmanuel Vadot compatible = "qcom,sm8250-qmp-gen3x2-pcie-phy"; 264*7ef62cebSEmmanuel Vadot reg = <0x01c0e000 0x1c0>; 265*7ef62cebSEmmanuel Vadot #address-cells = <1>; 266*7ef62cebSEmmanuel Vadot #size-cells = <1>; 267*7ef62cebSEmmanuel Vadot ranges = <0x0 0x01c0e000 0x1000>; 268*7ef62cebSEmmanuel Vadot 269*7ef62cebSEmmanuel Vadot clocks = <&gcc GCC_PCIE_PHY_AUX_CLK>, 270*7ef62cebSEmmanuel Vadot <&gcc GCC_PCIE_1_CFG_AHB_CLK>, 271*7ef62cebSEmmanuel Vadot <&gcc GCC_PCIE_WIGIG_CLKREF_EN>, 272*7ef62cebSEmmanuel Vadot <&gcc GCC_PCIE1_PHY_REFGEN_CLK>; 273*7ef62cebSEmmanuel Vadot clock-names = "aux", "cfg_ahb", "ref", "refgen"; 274*7ef62cebSEmmanuel Vadot 275*7ef62cebSEmmanuel Vadot resets = <&gcc GCC_PCIE_1_PHY_BCR>; 276*7ef62cebSEmmanuel Vadot reset-names = "phy"; 277*7ef62cebSEmmanuel Vadot 278*7ef62cebSEmmanuel Vadot vdda-phy-supply = <&vreg_l10c_0p88>; 279*7ef62cebSEmmanuel Vadot vdda-pll-supply = <&vreg_l6b_1p2>; 280*7ef62cebSEmmanuel Vadot 281*7ef62cebSEmmanuel Vadot phy@200 { 282*7ef62cebSEmmanuel Vadot reg = <0x200 0x170>, 283*7ef62cebSEmmanuel Vadot <0x400 0x200>, 284*7ef62cebSEmmanuel Vadot <0xa00 0x1f0>, 285*7ef62cebSEmmanuel Vadot <0x600 0x170>, 286*7ef62cebSEmmanuel Vadot <0x800 0x200>, 287*7ef62cebSEmmanuel Vadot <0xe00 0xf4>; 288*7ef62cebSEmmanuel Vadot 289*7ef62cebSEmmanuel Vadot clocks = <&gcc GCC_PCIE_1_PIPE_CLK>; 290*7ef62cebSEmmanuel Vadot 291*7ef62cebSEmmanuel Vadot #clock-cells = <0>; 292*7ef62cebSEmmanuel Vadot clock-output-names = "pcie_1_pipe_clk"; 293*7ef62cebSEmmanuel Vadot 294*7ef62cebSEmmanuel Vadot #phy-cells = <0>; 295*7ef62cebSEmmanuel Vadot }; 296*7ef62cebSEmmanuel Vadot }; 297