# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/phy/qcom,qmp-pcie-phy.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Qualcomm QMP PHY controller (PCIe) maintainers: - Vinod Koul description: QMP PHY controller supports physical layer functionality for a number of controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB. properties: compatible: enum: - qcom,ipq6018-qmp-pcie-phy - qcom,ipq8074-qmp-gen3-pcie-phy - qcom,ipq8074-qmp-pcie-phy - qcom,msm8998-qmp-pcie-phy - qcom,sc8180x-qmp-pcie-phy - qcom,sdm845-qhp-pcie-phy - qcom,sdm845-qmp-pcie-phy - qcom,sdx55-qmp-pcie-phy - qcom,sm8250-qmp-gen3x1-pcie-phy - qcom,sm8250-qmp-gen3x2-pcie-phy - qcom,sm8250-qmp-modem-pcie-phy - qcom,sm8450-qmp-gen3x1-pcie-phy - qcom,sm8450-qmp-gen4x2-pcie-phy reg: items: - description: serdes "#address-cells": enum: [ 1, 2 ] "#size-cells": enum: [ 1, 2 ] ranges: true clocks: minItems: 2 maxItems: 4 clock-names: minItems: 2 maxItems: 4 resets: minItems: 1 maxItems: 2 reset-names: minItems: 1 maxItems: 2 vdda-phy-supply: true vdda-pll-supply: true vddp-ref-clk-supply: true patternProperties: "^phy@[0-9a-f]+$": type: object description: single PHY-provider child node properties: reg: minItems: 3 maxItems: 6 clocks: items: - description: PIPE clock clock-names: deprecated: true items: - const: pipe0 "#clock-cells": const: 0 clock-output-names: maxItems: 1 "#phy-cells": const: 0 required: - reg - clocks - "#clock-cells" - clock-output-names - "#phy-cells" additionalProperties: false required: - compatible - reg - "#address-cells" - "#size-cells" - ranges - clocks - clock-names - resets - reset-names additionalProperties: false allOf: - if: properties: compatible: contains: enum: - qcom,msm8998-qmp-pcie-phy then: properties: clocks: maxItems: 3 clock-names: items: - const: aux - const: cfg_ahb - const: ref resets: maxItems: 2 reset-names: items: - const: phy - const: common required: - vdda-phy-supply - vdda-pll-supply - if: properties: compatible: contains: enum: - qcom,ipq6018-qmp-pcie-phy - qcom,ipq8074-qmp-gen3-pcie-phy - qcom,ipq8074-qmp-pcie-phy then: properties: clocks: maxItems: 2 clock-names: items: - const: aux - const: cfg_ahb resets: maxItems: 2 reset-names: items: - const: phy - const: common - if: properties: compatible: contains: enum: - qcom,sc8180x-qmp-pcie-phy - qcom,sdm845-qhp-pcie-phy - qcom,sdm845-qmp-pcie-phy - qcom,sdx55-qmp-pcie-phy - qcom,sm8250-qmp-gen3x1-pcie-phy - qcom,sm8250-qmp-gen3x2-pcie-phy - qcom,sm8250-qmp-modem-pcie-phy - qcom,sm8450-qmp-gen3x1-pcie-phy - qcom,sm8450-qmp-gen4x2-pcie-phy then: properties: clocks: maxItems: 4 clock-names: items: - const: aux - const: cfg_ahb - const: ref - const: refgen resets: maxItems: 1 reset-names: items: - const: phy required: - vdda-phy-supply - vdda-pll-supply - if: properties: compatible: contains: enum: - qcom,sm8250-qmp-gen3x2-pcie-phy - qcom,sm8250-qmp-modem-pcie-phy - qcom,sm8450-qmp-gen4x2-pcie-phy then: patternProperties: "^phy@[0-9a-f]+$": properties: reg: items: - description: TX lane 1 - description: RX lane 1 - description: PCS - description: TX lane 2 - description: RX lane 2 - description: PCS_MISC - if: properties: compatible: contains: enum: - qcom,sc8180x-qmp-pcie-phy - qcom,sdm845-qmp-pcie-phy - qcom,sdx55-qmp-pcie-phy - qcom,sm8250-qmp-gen3x1-pcie-phy - qcom,sm8450-qmp-gen3x1-pcie-phy then: patternProperties: "^phy@[0-9a-f]+$": properties: reg: items: - description: TX - description: RX - description: PCS - description: PCS_MISC - if: properties: compatible: contains: enum: - qcom,ipq6018-qmp-pcie-phy - qcom,ipq8074-qmp-pcie-phy - qcom,msm8998-qmp-pcie-phy - qcom,sdm845-qhp-pcie-phy then: patternProperties: "^phy@[0-9a-f]+$": properties: reg: items: - description: TX - description: RX - description: PCS examples: - | #include phy-wrapper@1c0e000 { compatible = "qcom,sm8250-qmp-gen3x2-pcie-phy"; reg = <0x01c0e000 0x1c0>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x01c0e000 0x1000>; clocks = <&gcc GCC_PCIE_PHY_AUX_CLK>, <&gcc GCC_PCIE_1_CFG_AHB_CLK>, <&gcc GCC_PCIE_WIGIG_CLKREF_EN>, <&gcc GCC_PCIE1_PHY_REFGEN_CLK>; clock-names = "aux", "cfg_ahb", "ref", "refgen"; resets = <&gcc GCC_PCIE_1_PHY_BCR>; reset-names = "phy"; vdda-phy-supply = <&vreg_l10c_0p88>; vdda-pll-supply = <&vreg_l6b_1p2>; phy@200 { reg = <0x200 0x170>, <0x400 0x200>, <0xa00 0x1f0>, <0x600 0x170>, <0x800 0x200>, <0xe00 0xf4>; clocks = <&gcc GCC_PCIE_1_PIPE_CLK>; #clock-cells = <0>; clock-output-names = "pcie_1_pipe_clk"; #phy-cells = <0>; }; };