1Qualcomm QMP PHY controller 2=========================== 3 4QMP phy controller supports physical layer functionality for a number of 5controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB. 6 7Required properties: 8 - compatible: compatible list, contains: 9 "qcom,ipq8074-qmp-pcie-phy" for PCIe phy on IPQ8074 10 "qcom,msm8996-qmp-pcie-phy" for 14nm PCIe phy on msm8996, 11 "qcom,msm8996-qmp-usb3-phy" for 14nm USB3 phy on msm8996, 12 "qcom,msm8998-qmp-usb3-phy" for USB3 QMP V3 phy on msm8998, 13 "qcom,msm8998-qmp-ufs-phy" for UFS QMP phy on msm8998, 14 "qcom,msm8998-qmp-pcie-phy" for PCIe QMP phy on msm8998, 15 "qcom,sdm845-qmp-usb3-phy" for USB3 QMP V3 phy on sdm845, 16 "qcom,sdm845-qmp-usb3-uni-phy" for USB3 QMP V3 UNI phy on sdm845, 17 "qcom,sdm845-qmp-ufs-phy" for UFS QMP phy on sdm845. 18 19- reg: 20 - index 0: address and length of register set for PHY's common 21 serdes block. 22 - index 1: address and length of the DP_COM control block (for 23 "qcom,sdm845-qmp-usb3-phy" only). 24 25- reg-names: 26 - For "qcom,sdm845-qmp-usb3-phy": 27 - Should be: "reg-base", "dp_com" 28 - For all others: 29 - The reg-names property shouldn't be defined. 30 31 - #address-cells: must be 1 32 - #size-cells: must be 1 33 - ranges: must be present 34 35 - clocks: a list of phandles and clock-specifier pairs, 36 one for each entry in clock-names. 37 - clock-names: "cfg_ahb" for phy config clock, 38 "aux" for phy aux clock, 39 "ref" for 19.2 MHz ref clk, 40 "com_aux" for phy common block aux clock, 41 "ref_aux" for phy reference aux clock, 42 43 For "qcom,ipq8074-qmp-pcie-phy": no clocks are listed. 44 For "qcom,msm8996-qmp-pcie-phy" must contain: 45 "aux", "cfg_ahb", "ref". 46 For "qcom,msm8996-qmp-usb3-phy" must contain: 47 "aux", "cfg_ahb", "ref". 48 For "qcom,msm8998-qmp-usb3-phy" must contain: 49 "aux", "cfg_ahb", "ref". 50 For "qcom,msm8998-qmp-ufs-phy" must contain: 51 "ref", "ref_aux". 52 For "qcom,msm8998-qmp-pcie-phy" must contain: 53 "aux", "cfg_ahb", "ref". 54 For "qcom,sdm845-qmp-usb3-phy" must contain: 55 "aux", "cfg_ahb", "ref", "com_aux". 56 For "qcom,sdm845-qmp-usb3-uni-phy" must contain: 57 "aux", "cfg_ahb", "ref", "com_aux". 58 For "qcom,sdm845-qmp-ufs-phy" must contain: 59 "ref", "ref_aux". 60 61 - resets: a list of phandles and reset controller specifier pairs, 62 one for each entry in reset-names. 63 - reset-names: "phy" for reset of phy block, 64 "common" for phy common block reset, 65 "cfg" for phy's ahb cfg block reset, 66 "ufsphy" for the PHY reset in the UFS controller. 67 68 For "qcom,ipq8074-qmp-pcie-phy" must contain: 69 "phy", "common". 70 For "qcom,msm8996-qmp-pcie-phy" must contain: 71 "phy", "common", "cfg". 72 For "qcom,msm8996-qmp-usb3-phy" must contain 73 "phy", "common". 74 For "qcom,msm8998-qmp-usb3-phy" must contain 75 "phy", "common". 76 For "qcom,msm8998-qmp-ufs-phy": must contain: 77 "ufsphy". 78 For "qcom,msm8998-qmp-pcie-phy" must contain: 79 "phy", "common". 80 For "qcom,sdm845-qmp-usb3-phy" must contain: 81 "phy", "common". 82 For "qcom,sdm845-qmp-usb3-uni-phy" must contain: 83 "phy", "common". 84 For "qcom,sdm845-qmp-ufs-phy": must contain: 85 "ufsphy". 86 87 - vdda-phy-supply: Phandle to a regulator supply to PHY core block. 88 - vdda-pll-supply: Phandle to 1.8V regulator supply to PHY refclk pll block. 89 90Optional properties: 91 - vddp-ref-clk-supply: Phandle to a regulator supply to any specific refclk 92 pll block. 93 94Required nodes: 95 - Each device node of QMP phy is required to have as many child nodes as 96 the number of lanes the PHY has. 97 98Required properties for child nodes of PCIe PHYs (one child per lane): 99 - reg: list of offset and length pairs of register sets for PHY blocks - 100 tx, rx, pcs, and pcs_misc (optional). 101 - #phy-cells: must be 0 102 103Required properties for a single "lanes" child node of non-PCIe PHYs: 104 - reg: list of offset and length pairs of register sets for PHY blocks 105 For 1-lane devices: 106 tx, rx, pcs, and (optionally) pcs_misc 107 For 2-lane devices: 108 tx0, rx0, pcs, tx1, rx1, and (optionally) pcs_misc 109 - #phy-cells: must be 0 110 111Required properties for child node of PCIe and USB3 qmp phys: 112 - clocks: a list of phandles and clock-specifier pairs, 113 one for each entry in clock-names. 114 - clock-names: Must contain following: 115 "pipe<lane-number>" for pipe clock specific to each lane. 116 - clock-output-names: Name of the PHY clock that will be the parent for 117 the above pipe clock. 118 For "qcom,ipq8074-qmp-pcie-phy": 119 - "pcie20_phy0_pipe_clk" Pipe Clock parent 120 (or) 121 "pcie20_phy1_pipe_clk" 122 - #clock-cells: must be 0 123 - Phy pll outputs pipe clocks for pipe based PHYs. These clocks are then 124 gate-controlled by the gcc. 125 126Required properties for child node of PHYs with lane reset, AKA: 127 "qcom,msm8996-qmp-pcie-phy" 128 - resets: a list of phandles and reset controller specifier pairs, 129 one for each entry in reset-names. 130 - reset-names: Must contain following: 131 "lane<lane-number>" for reset specific to each lane. 132 133Example: 134 phy@34000 { 135 compatible = "qcom,msm8996-qmp-pcie-phy"; 136 reg = <0x34000 0x488>; 137 #address-cells = <1>; 138 #size-cells = <1>; 139 ranges; 140 141 clocks = <&gcc GCC_PCIE_PHY_AUX_CLK>, 142 <&gcc GCC_PCIE_PHY_CFG_AHB_CLK>, 143 <&gcc GCC_PCIE_CLKREF_CLK>; 144 clock-names = "aux", "cfg_ahb", "ref"; 145 146 vdda-phy-supply = <&pm8994_l28>; 147 vdda-pll-supply = <&pm8994_l12>; 148 149 resets = <&gcc GCC_PCIE_PHY_BCR>, 150 <&gcc GCC_PCIE_PHY_COM_BCR>, 151 <&gcc GCC_PCIE_PHY_COM_NOCSR_BCR>; 152 reset-names = "phy", "common", "cfg"; 153 154 pciephy_0: lane@35000 { 155 reg = <0x35000 0x130>, 156 <0x35200 0x200>, 157 <0x35400 0x1dc>; 158 #clock-cells = <0>; 159 #phy-cells = <0>; 160 161 clocks = <&gcc GCC_PCIE_0_PIPE_CLK>; 162 clock-names = "pipe0"; 163 clock-output-names = "pcie_0_pipe_clk_src"; 164 resets = <&gcc GCC_PCIE_0_PHY_BCR>; 165 reset-names = "lane0"; 166 }; 167 168 pciephy_1: lane@36000 { 169 ... 170 ... 171 }; 172 173 phy@88eb000 { 174 compatible = "qcom,sdm845-qmp-usb3-uni-phy"; 175 reg = <0x88eb000 0x18c>; 176 #address-cells = <1>; 177 #size-cells = <1>; 178 ranges; 179 180 clocks = <&gcc GCC_USB3_SEC_PHY_AUX_CLK>, 181 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>, 182 <&gcc GCC_USB3_SEC_CLKREF_CLK>, 183 <&gcc GCC_USB3_SEC_PHY_COM_AUX_CLK>; 184 clock-names = "aux", "cfg_ahb", "ref", "com_aux"; 185 186 resets = <&gcc GCC_USB3PHY_PHY_SEC_BCR>, 187 <&gcc GCC_USB3_PHY_SEC_BCR>; 188 reset-names = "phy", "common"; 189 190 lane@88eb200 { 191 reg = <0x88eb200 0x128>, 192 <0x88eb400 0x1fc>, 193 <0x88eb800 0x218>, 194 <0x88eb600 0x70>; 195 #clock-cells = <0>; 196 #phy-cells = <0>; 197 clocks = <&gcc GCC_USB3_SEC_PHY_PIPE_CLK>; 198 clock-names = "pipe0"; 199 clock-output-names = "usb3_uni_phy_pipe_clk_src"; 200 }; 201 }; 202 203 phy@1d87000 { 204 compatible = "qcom,sdm845-qmp-ufs-phy"; 205 reg = <0x1d87000 0x18c>; 206 #address-cells = <1>; 207 #size-cells = <1>; 208 ranges; 209 clock-names = "ref", 210 "ref_aux"; 211 clocks = <&gcc GCC_UFS_MEM_CLKREF_CLK>, 212 <&gcc GCC_UFS_PHY_PHY_AUX_CLK>; 213 214 lanes@1d87400 { 215 reg = <0x1d87400 0x108>, 216 <0x1d87600 0x1e0>, 217 <0x1d87c00 0x1dc>, 218 <0x1d87800 0x108>, 219 <0x1d87a00 0x1e0>; 220 #phy-cells = <0>; 221 }; 222 }; 223