mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 08:03:01 +09:00
The current QMP USB3-DP 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. The QMP USB3-DP PHY block provides a single multi-protocol PHY and even if some resources are only used by either the USB or DP part of the device there is no real benefit in describing these resources in child nodes. 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 PCS LANE registers). This is specifically true for later USB4-USB3-DP QMP PHYs where the TX registers are used by both the USB3 and DP parts of the PHY (and where the USB4 part of the PHY was not covered by the binding at all). Notably there are also no DP "RX" (sic) registers as described by the current bindings and the DP "PCS" region is really a set of DP_PHY registers. Add a new binding for the USB4-USB3-DP QMP PHYs found on SC8280XP which further bindings can be based on. Note that the binding uses a PHY index to access either the USB3 or DP part of the PHY and that this can later be used also for the USB4 part if needed. Similarly, the clock inputs and outputs can later be extended to support USB4. Also note that the current binding is simply removed instead of being deprecated as it was only recently merged and would not allow for supporting DP mode. Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Johan Hovold <johan+linaro@kernel.org> Link: https://lore.kernel.org/r/20221121085058.31213-3-johan+linaro@kernel.org Signed-off-by: Vinod Koul <vkoul@kernel.org>
220 lines
5.1 KiB
YAML
220 lines
5.1 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
|
|
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/phy/qcom,sc7180-qmp-usb3-dp-phy.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: Qualcomm QMP USB3 DP PHY controller (SC7180)
|
|
|
|
description:
|
|
The 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-usb43dp-phy.yaml.
|
|
|
|
maintainers:
|
|
- Wesley Cheng <quic_wcheng@quicinc.com>
|
|
|
|
properties:
|
|
compatible:
|
|
enum:
|
|
- qcom,sc7180-qmp-usb3-dp-phy
|
|
- qcom,sc7280-qmp-usb3-dp-phy
|
|
- qcom,sc8180x-qmp-usb3-dp-phy
|
|
- qcom,sdm845-qmp-usb3-dp-phy
|
|
- qcom,sm8250-qmp-usb3-dp-phy
|
|
reg:
|
|
items:
|
|
- description: Address and length of PHY's USB serdes block.
|
|
- description: Address and length of the DP_COM control block.
|
|
- description: Address and length of PHY's DP serdes block.
|
|
|
|
reg-names:
|
|
items:
|
|
- const: usb
|
|
- const: dp_com
|
|
- const: dp
|
|
|
|
"#address-cells":
|
|
enum: [ 1, 2 ]
|
|
|
|
"#size-cells":
|
|
enum: [ 1, 2 ]
|
|
|
|
ranges: true
|
|
|
|
clocks:
|
|
items:
|
|
- description: Phy aux clock.
|
|
- description: Phy config clock.
|
|
- description: 19.2 MHz ref clk.
|
|
- description: Phy common block aux clock.
|
|
|
|
clock-names:
|
|
items:
|
|
- const: aux
|
|
- const: cfg_ahb
|
|
- const: ref
|
|
- const: com_aux
|
|
|
|
power-domains:
|
|
maxItems: 1
|
|
|
|
resets:
|
|
items:
|
|
- description: reset of phy block.
|
|
- description: phy common block reset.
|
|
|
|
reset-names:
|
|
items:
|
|
- const: phy
|
|
- const: common
|
|
|
|
vdda-phy-supply:
|
|
description:
|
|
Phandle to a regulator supply to PHY core block.
|
|
|
|
vdda-pll-supply:
|
|
description:
|
|
Phandle to 1.8V regulator supply to PHY refclk pll block.
|
|
|
|
vddp-ref-clk-supply:
|
|
description:
|
|
Phandle to a regulator supply to any specific refclk pll block.
|
|
|
|
#Required nodes:
|
|
patternProperties:
|
|
"^usb3-phy@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: false
|
|
description:
|
|
The USB3 PHY.
|
|
|
|
properties:
|
|
reg:
|
|
items:
|
|
- description: Address and length of TX.
|
|
- description: Address and length of RX.
|
|
- description: Address and length of PCS.
|
|
- description: Address and length of TX2.
|
|
- description: Address and length of RX2.
|
|
- description: Address and length of pcs_misc.
|
|
|
|
clocks:
|
|
items:
|
|
- description: pipe clock
|
|
|
|
clock-names:
|
|
deprecated: true
|
|
items:
|
|
- const: pipe0
|
|
|
|
clock-output-names:
|
|
items:
|
|
- const: usb3_phy_pipe_clk_src
|
|
|
|
'#clock-cells':
|
|
const: 0
|
|
|
|
'#phy-cells':
|
|
const: 0
|
|
|
|
required:
|
|
- reg
|
|
- clocks
|
|
- '#clock-cells'
|
|
- '#phy-cells'
|
|
|
|
"^dp-phy@[0-9a-f]+$":
|
|
type: object
|
|
additionalProperties: false
|
|
description:
|
|
The DP PHY.
|
|
|
|
properties:
|
|
reg:
|
|
items:
|
|
- description: Address and length of TX.
|
|
- description: Address and length of RX.
|
|
- description: Address and length of PCS.
|
|
- description: Address and length of TX2.
|
|
- description: Address and length of RX2.
|
|
|
|
'#clock-cells':
|
|
const: 1
|
|
|
|
'#phy-cells':
|
|
const: 0
|
|
|
|
required:
|
|
- reg
|
|
- '#clock-cells'
|
|
- '#phy-cells'
|
|
|
|
required:
|
|
- compatible
|
|
- reg
|
|
- "#address-cells"
|
|
- "#size-cells"
|
|
- ranges
|
|
- clocks
|
|
- clock-names
|
|
- resets
|
|
- reset-names
|
|
- vdda-phy-supply
|
|
- vdda-pll-supply
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/clock/qcom,gcc-sdm845.h>
|
|
usb_1_qmpphy: phy-wrapper@88e9000 {
|
|
compatible = "qcom,sdm845-qmp-usb3-dp-phy";
|
|
reg = <0x088e9000 0x18c>,
|
|
<0x088e8000 0x10>,
|
|
<0x088ea000 0x40>;
|
|
reg-names = "usb", "dp_com", "dp";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges = <0x0 0x088e9000 0x2000>;
|
|
|
|
clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
|
|
<&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
|
|
<&gcc GCC_USB3_PRIM_CLKREF_CLK>,
|
|
<&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>;
|
|
clock-names = "aux", "cfg_ahb", "ref", "com_aux";
|
|
|
|
resets = <&gcc GCC_USB3_PHY_PRIM_BCR>,
|
|
<&gcc GCC_USB3_DP_PHY_PRIM_BCR>;
|
|
reset-names = "phy", "common";
|
|
|
|
vdda-phy-supply = <&vdda_usb2_ss_1p2>;
|
|
vdda-pll-supply = <&vdda_usb2_ss_core>;
|
|
|
|
usb3-phy@200 {
|
|
reg = <0x200 0x128>,
|
|
<0x400 0x200>,
|
|
<0xc00 0x218>,
|
|
<0x600 0x128>,
|
|
<0x800 0x200>,
|
|
<0xa00 0x100>;
|
|
#clock-cells = <0>;
|
|
#phy-cells = <0>;
|
|
clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
|
|
clock-output-names = "usb3_phy_pipe_clk_src";
|
|
};
|
|
|
|
dp-phy@88ea200 {
|
|
reg = <0xa200 0x200>,
|
|
<0xa400 0x200>,
|
|
<0xaa00 0x200>,
|
|
<0xa600 0x200>,
|
|
<0xa800 0x200>;
|
|
#clock-cells = <1>;
|
|
#phy-cells = <0>;
|
|
};
|
|
};
|