Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

dt-bindings: phy: qcom,qmp-pcie: add sc8280xp bindings

Add bindings for the PCIe QMP PHYs found on SC8280XP.

The PCIe2 and PCIe3 controllers and PHYs on SC8280XP can be used in
4-lane mode or as separate controllers and PHYs in 2-lane mode (e.g. as
PCIe2A and PCIe2B).

The configuration for a specific system can be read from a TCSR register.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20221105145939.20318-12-johan+linaro@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>

authored by

Johan Hovold and committed by
Vinod Koul
30638230 dcb93f47

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