mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-17 22:05:08 +00:00
dcb93f47dd
The current QMP PCIe PHY bindings are based on the original MSM8996 binding which provided multiple PHYs per IP block and these in turn were described by child nodes. Later QMP PCIe PHY blocks only provide a single PHY and the remnant child node does not really reflect the hardware. The original MSM8996 binding also ended up describing the individual register blocks as belonging to either the wrapper node or the PHY child nodes. This is an unnecessary level of detail which has lead to problems when later IP blocks using different register layouts have been forced to fit the original mould rather than updating the binding. The bindings are arguable also incomplete as they only the describe register blocks used by the current Linux drivers (e.g. does not include the per lane PCS registers). In preparation for adding new bindings for SC8280XP which further bindings can be based on, rename the current schema file after IPQ8074, which was the first SoC added to the bindings after MSM8996 (which has already been split out), and add a reference to the SC8280XP bindings. 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-11-johan+linaro@kernel.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
300 lines
6.7 KiB
YAML
300 lines
6.7 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/phy/qcom,ipq8074-qmp-pcie-phy.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm QMP PHY controller (PCIe, IPQ8074)
|
|
|
|
maintainers:
|
|
- Vinod Koul <vkoul@kernel.org>
|
|
|
|
description:
|
|
QMP PHY controller supports physical layer functionality for a number of
|
|
controllers on Qualcomm chipsets, such as, PCIe, UFS, and USB.
|
|
|
|
Note that these bindings are for SoCs up to SC8180X. For newer SoCs, see
|
|
qcom,sc8280xp-qmp-pcie-phy.yaml.
|
|
|
|
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 <dt-bindings/clock/qcom,gcc-sm8250.h>
|
|
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>;
|
|
};
|
|
};
|