Merge tag 'phy-for-7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy

Pull phy updates from Vinod Koul:
 "Core:

   - Add suuport for "rx-polarity" and "tx-polarity" device tree
     properties and phy common properties to manage this

  New Support:

   - Qualcomm Glymur PCIe Gen4 2-lanes PCIe phy, DP and edp phy, USB UNI
     PHY and SMB2370 eUSB2 repeater. SC8280xp QMP UFS PHY, Kaanapali
     PCIe phy and QMP PHY, QCS615 QMP USB3+DP PHY and driver support for
     that.

   - SpacemiT PCIe/combo PHY and K1 USB2 PHY driver.

   - HDMI 2.1 FRL configuration support and driver enabling for rockchip
     samsung-hdptx driver

   - TI TCAN1046 phy

   - Renesas RZ/V2H(P) and RZ/V2N usb3

   - Mediatek MT8188 hdmi-phy

   - Google Tensor SoC USB PHY driver

   - Apple Type-C PHY

  Updates:

   - Subsystem conversion for clock round_rate() to determine_rate()

   - TI USB3 DT schema conversion

   - Samsung ExynosAutov920 usb3, combo hsphy and ssphy support"

* tag 'phy-for-7.0' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy: (143 commits)
  phy: ti: phy-j721e-wiz: convert from divider_round_rate() to divider_determine_rate()
  dt-bindings: phy: ti,control-phy-otghs: convert to DT schema
  dt-bindings: phy: ti,phy-usb3: convert to DT schema
  phy: tegra: xusb: Remove unused powered_on variable
  phy: renesas: rcar-gen3-usb2: add regulator dependency
  phy: GOOGLE_USB: add TYPEC dependency
  phy: enter drivers/phy/Makefile even without CONFIG_GENERIC_PHY
  phy: renesas: rcar-gen3-usb2: Use mux-state for phyrst management
  phy: renesas: rcar-gen3-usb2: Add regulator for OTG VBUS control
  phy: renesas: rcar-gen3-usb2: Use devm_pm_runtime_enable()
  phy: renesas: rcar-gen3-usb2: Factor out VBUS control logic
  dt-bindings: phy: renesas,usb2-phy: Document RZ/G3E SoC
  dt-bindings: phy: renesas,usb2-phy: Document mux-states property
  dt-bindings: phy: renesas,usb2-phy: Document USB VBUS regulator
  phy: rockchip: samsung-hdptx: Add HDMI 2.1 FRL support
  phy: rockchip: samsung-hdptx: Extend rk_hdptx_phy_verify_hdmi_config() helper
  phy: rockchip: samsung-hdptx: Switch to driver specific HDMI config
  phy: rockchip: samsung-hdptx: Drop hw_rate driver data
  phy: rockchip: samsung-hdptx: Compute clk rate from PLL config
  phy: rockchip: samsung-hdptx: Cleanup *_cmn_init_seq lists
  ...
This commit is contained in:
Linus Torvalds
2026-02-17 11:40:04 -08:00
93 changed files with 11325 additions and 876 deletions
@@ -0,0 +1,222 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/apple,atcphy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Apple Type-C PHY (ATCPHY)
maintainers:
- Sven Peter <sven@kernel.org>
description: >
The Apple Type-C PHY (ATCPHY) is a combined PHY for USB 2.0, USB 3.x,
USB4/Thunderbolt, and DisplayPort connectivity via Type-C ports found in
Apple Silicon SoCs.
The PHY handles muxing between these different protocols and also provides the
reset controller for the attached DWC3 USB controller.
It is designed for USB4 operation and does not handle individual differential
pairs as distinct DisplayPort lanes. Any reference to lane in this binding
hence refers to two differential pairs (RX and TX) as used in USB terminology.
In order to correctly setup these lanes for the various modes calibration
values copied from Apple's firmware and converted to the format described
below by our bootloader m1n1 are required. Without these only USB2 operation
is possible.
allOf:
- $ref: /schemas/usb/usb-switch.yaml#
$defs:
apple,tunable:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
items:
items:
- description: Register offset
- description: Mask to be applied to the register value
- description: Bits to be set after applying the mask
description: >
List of (register offset, mask, value) tuples copied from Apple's Device
Tree by our bootloader m1n1 and used to configure the PHY. These values
even vary for a single product/device and likely contain calibration
values determined by Apple at manufacturing time.
Unless otherwise noted these tunables are always applied to the core
register region.
properties:
compatible:
oneOf:
- items:
- enum:
- apple,t6000-atcphy
- apple,t6020-atcphy
- apple,t8112-atcphy
- const: apple,t8103-atcphy
- const: apple,t8103-atcphy
reg:
items:
- description: Common controls for all PHYs (USB2/3/4, DisplayPort, TBT)
- description: DisplayPort Alternate Mode PHY specific controls
- description: Type-C PHY AXI to Apple Fabric interconnect controls
- description: USB2 PHY specific controls
- description: USB3 PIPE interface controls
reg-names:
items:
- const: core
- const: lpdptx
- const: axi2af
- const: usb2phy
- const: pipehandler
"#phy-cells":
const: 1
"#reset-cells":
const: 0
mode-switch: true
orientation-switch: true
power-domains:
maxItems: 1
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description: Outgoing connection to the SS port of the Type-C connector.
port@1:
$ref: /schemas/graph.yaml#/properties/port
description: Incoming endpoint from the USB3 controller.
port@2:
$ref: /schemas/graph.yaml#/properties/port
description: Incoming endpoint from the DisplayPort controller.
port@3:
$ref: /schemas/graph.yaml#/properties/port
description: Incoming endpoint from the USB4/Thunderbolt controller.
apple,tunable-common-a:
$ref: "#/$defs/apple,tunable"
description: >
Common tunables required for all modes, applied before tunable-axi2af.
apple,tunable-axi2af:
$ref: "#/$defs/apple,tunable"
description: >
AXI to Apple Fabric tunables, required for all modes. Unlike all other
tunables these are applied to the axi2af region.
apple,tunable-common-b:
$ref: "#/$defs/apple,tunable"
description: >
Common tunables required for all modes, applied after tunable-axi2af.
apple,tunable-lane0-usb:
$ref: "#/$defs/apple,tunable"
description: USB3 tunables for lane 0.
apple,tunable-lane1-usb:
$ref: "#/$defs/apple,tunable"
description: USB3 tunables for lane 1.
apple,tunable-lane0-cio:
$ref: "#/$defs/apple,tunable"
description: USB4/Thunderbolt ("Converged IO") tunables for lane 0.
apple,tunable-lane1-cio:
$ref: "#/$defs/apple,tunable"
description: USB4/Thunderbolt ("Converged IO") tunables for lane 1.
apple,tunable-lane0-dp:
$ref: "#/$defs/apple,tunable"
description: >
DisplayPort tunables for lane 0.
Note that lane here refers to a USB RX and TX pair re-used for DisplayPort
and not to an individual DisplayPort differential lane.
apple,tunable-lane1-dp:
$ref: "#/$defs/apple,tunable"
description: >
DisplayPort tunables for lane 1.
Note that lane here refers to a USB RX and TX pair re-used for DisplayPort
and not to an individual DisplayPort differential lane.
required:
- compatible
- reg
- reg-names
- "#phy-cells"
- "#reset-cells"
- orientation-switch
- mode-switch
- power-domains
- ports
additionalProperties: false
examples:
- |
phy@83000000 {
compatible = "apple,t8103-atcphy";
reg = <0x83000000 0x4c000>,
<0x83050000 0x8000>,
<0x80000000 0x4000>,
<0x82a90000 0x4000>,
<0x82a84000 0x4000>;
reg-names = "core", "lpdptx", "axi2af", "usb2phy",
"pipehandler";
#phy-cells = <1>;
#reset-cells = <0>;
orientation-switch;
mode-switch;
power-domains = <&ps_atc0_usb>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
endpoint {
remote-endpoint = <&typec_connector_ss>;
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&dwc3_ss_out>;
};
};
port@2 {
reg = <2>;
endpoint {
remote-endpoint = <&dcp_dp_out>;
};
};
port@3 {
reg = <3>;
endpoint {
remote-endpoint = <&acio_tbt_out>;
};
};
};
};
@@ -20,6 +20,32 @@ properties:
"#phy-cells":
const: 1
"#address-cells":
const: 1
"#size-cells":
const: 0
patternProperties:
"^phy@[0-7]$":
type: object
description: SerDes lane (single RX/TX differential pair)
properties:
reg:
minimum: 0
maximum: 7
description: Lane index as seen in register map
"#phy-cells":
const: 0
required:
- reg
- "#phy-cells"
additionalProperties: false
required:
- compatible
- reg
@@ -32,9 +58,52 @@ examples:
soc {
#address-cells = <2>;
#size-cells = <2>;
serdes_1: phy@1ea0000 {
serdes@1ea0000 {
compatible = "fsl,lynx-28g";
reg = <0x0 0x1ea0000 0x0 0x1e30>;
#address-cells = <1>;
#size-cells = <0>;
#phy-cells = <1>;
phy@0 {
reg = <0>;
#phy-cells = <0>;
};
phy@1 {
reg = <1>;
#phy-cells = <0>;
};
phy@2 {
reg = <2>;
#phy-cells = <0>;
};
phy@3 {
reg = <3>;
#phy-cells = <0>;
};
phy@4 {
reg = <4>;
#phy-cells = <0>;
};
phy@5 {
reg = <5>;
#phy-cells = <0>;
};
phy@6 {
reg = <6>;
#phy-cells = <0>;
};
phy@7 {
reg = <7>;
#phy-cells = <0>;
};
};
};
@@ -0,0 +1,133 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (C) 2025, Google LLC
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/google,lga-usb-phy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Google Tensor Series G5 (Laguna) USB PHY
maintainers:
- Roy Luo <royluo@google.com>
description:
Describes the USB PHY interfaces integrated with the DWC3 USB controller on
Google Tensor SoCs, starting with the G5 generation (laguna).
Two specific PHY IPs from Synopsys are integrated, including eUSB 2.0 PHY IP
and USB3.2/DisplayPort combo PHY IP.
properties:
compatible:
const: google,lga-usb-phy
reg:
items:
- description: USB3.2/DisplayPort combo PHY core registers.
- description: USB3.2/DisplayPort combo PHY Type-C Assist registers.
- description: eUSB 2.0 PHY core registers.
- description: Top-level wrapper registers for the integrated PHYs.
reg-names:
items:
- const: usb3_core
- const: usb3_tca
- const: usb2_core
- const: usbdp_top
"#phy-cells":
description: |
The phandle's argument in the PHY specifier selects one of the three
following PHY interfaces.
- 0 for USB high-speed.
- 1 for USB super-speed.
- 2 for DisplayPort.
const: 1
clocks:
items:
- description: USB2 PHY clock.
- description: USB2 PHY APB clock.
- description: USB3.2/DisplayPort combo PHY clock.
- description: USB3.2/DisplayPort combo PHY firmware clock.
clock-names:
items:
- const: usb2
- const: usb2_apb
- const: usb3
- const: usb3_fw
resets:
items:
- description: USB2 PHY reset.
- description: USB2 PHY APB reset.
- description: USB3.2/DisplayPort combo PHY reset.
reset-names:
items:
- const: usb2
- const: usb2_apb
- const: usb3
power-domains:
maxItems: 1
orientation-switch:
type: boolean
description:
Indicates the PHY as a handler of USB Type-C orientation changes
google,usb-cfg-csr:
description:
A phandle to a syscon node used to access the USB configuration
registers. These registers are the top-level wrapper of the USB
subsystem and provide control and status for the integrated USB
controller and USB PHY.
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to the syscon node.
- description: USB2 PHY configuration register offset.
required:
- compatible
- reg
- reg-names
- "#phy-cells"
- clocks
- clock-names
- resets
- reset-names
- power-domains
- orientation-switch
- google,usb-cfg-csr
additionalProperties: false
examples:
- |
soc {
#address-cells = <2>;
#size-cells = <2>;
usb-phy@c410000 {
compatible = "google,lga-usb-phy";
reg = <0 0x0c410000 0 0x20000>,
<0 0x0c430000 0 0x1000>,
<0 0x0c440000 0 0x10000>,
<0 0x0c637000 0 0xa0>;
reg-names = "usb3_core", "usb3_tca", "usb2_core", "usbdp_top";
#phy-cells = <1>;
clocks = <&hsion_usb2_phy_clk>, <&hsion_u2phy_apb_clk>,
<&hsion_usb3_phy_clk>, <&hsion_usb3_phy_fw_clk>;
clock-names = "usb2", "usb2_apb", "usb3", "usb3_fw";
resets = <&hsion_resets_usb2_phy>,
<&hsion_resets_u2phy_apb>,
<&hsion_resets_usb3_phy>;
reset-names = "usb2", "usb2_apb", "usb3";
power-domains = <&hsio_n_usb_pd>;
orientation-switch;
google,usb-cfg-csr = <&usb_cfg_csr 0x14>;
};
};
...
@@ -18,6 +18,7 @@ properties:
compatible:
oneOf:
- enum:
- qcom,glymur-dp-phy
- qcom,sa8775p-edp-phy
- qcom,sc7280-edp-phy
- qcom,sc8180x-edp-phy
@@ -37,12 +38,15 @@ properties:
- description: PLL register block
clocks:
maxItems: 2
minItems: 2
maxItems: 3
clock-names:
minItems: 2
items:
- const: aux
- const: cfg_ahb
- const: ref
"#clock-cells":
const: 1
@@ -64,6 +68,30 @@ required:
- "#clock-cells"
- "#phy-cells"
allOf:
- if:
properties:
compatible:
enum:
- qcom,glymur-dp-phy
- qcom,x1e80100-dp-phy
then:
properties:
clocks:
minItems: 3
maxItems: 3
clock-names:
minItems: 3
maxItems: 3
else:
properties:
clocks:
minItems: 2
maxItems: 2
clock-names:
minItems: 2
maxItems: 2
additionalProperties: false
examples:
@@ -15,9 +15,13 @@ description:
properties:
compatible:
items:
- enum:
- qcom,sm8750-m31-eusb2-phy
oneOf:
- items:
- enum:
- qcom,glymur-m31-eusb2-phy
- qcom,kaanapali-m31-eusb2-phy
- const: qcom,sm8750-m31-eusb2-phy
- const: qcom,sm8750-m31-eusb2-phy
reg:
maxItems: 1
@@ -0,0 +1,111 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/qcom,qcs615-qmp-usb3dp-phy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm QMP USB3-DP PHY controller (DP, QCS615)
maintainers:
- Xiangxu Yin <xiangxu.yin@oss.qualcomm.com>
description:
The QMP PHY controller supports physical layer functionality for both USB3
and DisplayPort over USB-C. While it enables mode switching between USB3 and
DisplayPort, but does not support combo mode.
properties:
compatible:
enum:
- qcom,qcs615-qmp-usb3-dp-phy
reg:
maxItems: 1
clocks:
maxItems: 4
clock-names:
items:
- const: aux
- const: ref
- const: cfg_ahb
- const: pipe
resets:
maxItems: 2
reset-names:
items:
- const: phy_phy
- const: dp_phy
vdda-phy-supply: true
vdda-pll-supply: true
"#clock-cells":
const: 1
description:
See include/dt-bindings/phy/phy-qcom-qmp.h
"#phy-cells":
const: 1
description:
See include/dt-bindings/phy/phy-qcom-qmp.h
qcom,tcsr-reg:
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to TCSR hardware block
- description: offset of the VLS CLAMP register
- description: offset of the PHY mode register
description: Clamp and PHY mode register present in the TCSR
required:
- compatible
- reg
- clocks
- clock-names
- resets
- reset-names
- vdda-phy-supply
- vdda-pll-supply
- "#clock-cells"
- "#phy-cells"
- qcom,tcsr-reg
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,qcs615-gcc.h>
#include <dt-bindings/clock/qcom,rpmh.h>
phy@88e8000 {
compatible = "qcom,qcs615-qmp-usb3-dp-phy";
reg = <0x88e8000 0x2000>;
clocks = <&gcc GCC_USB2_SEC_PHY_AUX_CLK>,
<&gcc GCC_USB3_SEC_CLKREF_CLK>,
<&gcc GCC_AHB2PHY_WEST_CLK>,
<&gcc GCC_USB2_SEC_PHY_PIPE_CLK>;
clock-names = "aux",
"ref",
"cfg_ahb",
"pipe";
resets = <&gcc GCC_USB3PHY_PHY_SEC_BCR>,
<&gcc GCC_USB3_DP_PHY_SEC_BCR>;
reset-names = "phy_phy",
"dp_phy";
vdda-phy-supply = <&vreg_l5a>;
vdda-pll-supply = <&vreg_l12a>;
#clock-cells = <1>;
#phy-cells = <1>;
qcom,tcsr-reg = <&tcsr 0xbff0 0xb24c>;
};
@@ -16,7 +16,9 @@ description:
properties:
compatible:
enum:
- qcom,glymur-qmp-gen4x2-pcie-phy
- qcom,glymur-qmp-gen5x4-pcie-phy
- qcom,kaanapali-qmp-gen3x2-pcie-phy
- qcom,qcs615-qmp-gen3x1-pcie-phy
- qcom,qcs8300-qmp-gen4x2-pcie-phy
- qcom,sa8775p-qmp-gen4x2-pcie-phy
@@ -146,6 +148,7 @@ allOf:
compatible:
contains:
enum:
- qcom,kaanapali-qmp-gen3x2-pcie-phy
- qcom,qcs615-qmp-gen3x1-pcie-phy
- qcom,sar2130p-qmp-gen3x2-pcie-phy
- qcom,sc8180x-qmp-pcie-phy
@@ -178,6 +181,7 @@ allOf:
compatible:
contains:
enum:
- qcom,glymur-qmp-gen4x2-pcie-phy
- qcom,glymur-qmp-gen5x4-pcie-phy
- qcom,qcs8300-qmp-gen4x2-pcie-phy
- qcom,sa8775p-qmp-gen4x2-pcie-phy
@@ -202,7 +206,9 @@ allOf:
compatible:
contains:
enum:
- qcom,glymur-qmp-gen4x2-pcie-phy
- qcom,glymur-qmp-gen5x4-pcie-phy
- qcom,kaanapali-qmp-gen3x2-pcie-phy
- qcom,sm8550-qmp-gen4x2-pcie-phy
- qcom,sm8650-qmp-gen4x2-pcie-phy
- qcom,x1e80100-qmp-gen3x2-pcie-phy
@@ -20,6 +20,10 @@ properties:
- enum:
- qcom,qcs615-qmp-ufs-phy
- const: qcom,sm6115-qmp-ufs-phy
- items:
- enum:
- qcom,x1e80100-qmp-ufs-phy
- const: qcom,sm8550-qmp-ufs-phy
- items:
- enum:
- qcom,qcs8300-qmp-ufs-phy
@@ -29,6 +33,7 @@ properties:
- qcom,kaanapali-qmp-ufs-phy
- const: qcom,sm8750-qmp-ufs-phy
- enum:
- qcom,milos-qmp-ufs-phy
- qcom,msm8996-qmp-ufs-phy
- qcom,msm8998-qmp-ufs-phy
- qcom,sa8775p-qmp-ufs-phy
@@ -98,6 +103,7 @@ allOf:
compatible:
contains:
enum:
- qcom,milos-qmp-ufs-phy
- qcom,msm8998-qmp-ufs-phy
- qcom,sa8775p-qmp-ufs-phy
- qcom,sc7180-qmp-ufs-phy
@@ -16,6 +16,7 @@ description:
properties:
compatible:
enum:
- qcom,glymur-qmp-usb3-uni-phy
- qcom,ipq5424-qmp-usb3-phy
- qcom,ipq6018-qmp-usb3-phy
- qcom,ipq8074-qmp-usb3-phy
@@ -61,6 +62,8 @@ properties:
vdda-pll-supply: true
refgen-supply: true
"#clock-cells":
const: 0
@@ -113,6 +116,7 @@ allOf:
compatible:
contains:
enum:
- qcom,glymur-qmp-usb3-uni-phy
- qcom,qcs8300-qmp-usb3-uni-phy
- qcom,qdu1000-qmp-usb3-uni-phy
- qcom,sa8775p-qmp-usb3-uni-phy
@@ -156,6 +160,7 @@ allOf:
compatible:
contains:
enum:
- qcom,glymur-qmp-usb3-uni-phy
- qcom,sa8775p-qmp-usb3-uni-phy
- qcom,sc8180x-qmp-usb3-uni-phy
- qcom,sc8280xp-qmp-usb3-uni-phy
@@ -164,6 +169,19 @@ allOf:
required:
- power-domains
- if:
properties:
compatible:
contains:
enum:
- qcom,glymur-qmp-usb3-uni-phy
then:
required:
- refgen-supply
else:
properties:
refgen-supply: false
additionalProperties: false
examples:
@@ -15,22 +15,28 @@ description:
properties:
compatible:
enum:
- qcom,sar2130p-qmp-usb3-dp-phy
- qcom,sc7180-qmp-usb3-dp-phy
- qcom,sc7280-qmp-usb3-dp-phy
- qcom,sc8180x-qmp-usb3-dp-phy
- qcom,sc8280xp-qmp-usb43dp-phy
- qcom,sdm845-qmp-usb3-dp-phy
- qcom,sm6350-qmp-usb3-dp-phy
- qcom,sm8150-qmp-usb3-dp-phy
- qcom,sm8250-qmp-usb3-dp-phy
- qcom,sm8350-qmp-usb3-dp-phy
- qcom,sm8450-qmp-usb3-dp-phy
- qcom,sm8550-qmp-usb3-dp-phy
- qcom,sm8650-qmp-usb3-dp-phy
- qcom,sm8750-qmp-usb3-dp-phy
- qcom,x1e80100-qmp-usb3-dp-phy
oneOf:
- items:
- enum:
- qcom,kaanapali-qmp-usb3-dp-phy
- const: qcom,sm8750-qmp-usb3-dp-phy
- enum:
- qcom,glymur-qmp-usb3-dp-phy
- qcom,sar2130p-qmp-usb3-dp-phy
- qcom,sc7180-qmp-usb3-dp-phy
- qcom,sc7280-qmp-usb3-dp-phy
- qcom,sc8180x-qmp-usb3-dp-phy
- qcom,sc8280xp-qmp-usb43dp-phy
- qcom,sdm845-qmp-usb3-dp-phy
- qcom,sm6350-qmp-usb3-dp-phy
- qcom,sm8150-qmp-usb3-dp-phy
- qcom,sm8250-qmp-usb3-dp-phy
- qcom,sm8350-qmp-usb3-dp-phy
- qcom,sm8450-qmp-usb3-dp-phy
- qcom,sm8550-qmp-usb3-dp-phy
- qcom,sm8650-qmp-usb3-dp-phy
- qcom,sm8750-qmp-usb3-dp-phy
- qcom,x1e80100-qmp-usb3-dp-phy
reg:
maxItems: 1
@@ -63,6 +69,8 @@ properties:
vdda-pll-supply: true
refgen-supply: true
"#clock-cells":
const: 1
description:
@@ -194,14 +202,16 @@ allOf:
- if:
properties:
compatible:
enum:
- qcom,sar2130p-qmp-usb3-dp-phy
- qcom,sc8280xp-qmp-usb43dp-phy
- qcom,sm6350-qmp-usb3-dp-phy
- qcom,sm8550-qmp-usb3-dp-phy
- qcom,sm8650-qmp-usb3-dp-phy
- qcom,sm8750-qmp-usb3-dp-phy
- qcom,x1e80100-qmp-usb3-dp-phy
contains:
enum:
- qcom,glymur-qmp-usb3-dp-phy
- qcom,sar2130p-qmp-usb3-dp-phy
- qcom,sc8280xp-qmp-usb43dp-phy
- qcom,sm6350-qmp-usb3-dp-phy
- qcom,sm8550-qmp-usb3-dp-phy
- qcom,sm8650-qmp-usb3-dp-phy
- qcom,sm8750-qmp-usb3-dp-phy
- qcom,x1e80100-qmp-usb3-dp-phy
then:
required:
- power-domains
@@ -209,6 +219,18 @@ allOf:
properties:
power-domains: false
- if:
properties:
compatible:
enum:
- qcom,glymur-qmp-usb3-dp-phy
then:
required:
- refgen-supply
else:
properties:
refgen-supply: false
additionalProperties: false
examples:
@@ -24,6 +24,7 @@ properties:
- qcom,pm8550b-eusb2-repeater
- qcom,pmiv0104-eusb2-repeater
- qcom,smb2360-eusb2-repeater
- qcom,smb2370-eusb2-repeater
reg:
maxItems: 1
@@ -59,6 +60,14 @@ properties:
minimum: 0
maximum: 7
qcom,squelch-detector-bp:
description:
This adjusts the voltage level for the threshold used to detect valid
high-speed data.
minimum: -6000
maximum: 1000
multipleOf: 1000
required:
- compatible
- reg
@@ -11,7 +11,14 @@ maintainers:
properties:
compatible:
const: renesas,r9a09g047-usb3-phy
oneOf:
- const: renesas,r9a09g047-usb3-phy # RZ/G3E
- items:
- enum:
- renesas,r9a09g056-usb3-phy # RZ/V2N
- renesas,r9a09g057-usb3-phy # RZ/V2H(P)
- const: renesas,r9a09g047-usb3-phy
reg:
maxItems: 1
@@ -41,7 +41,9 @@ properties:
- const: renesas,rzg2l-usb2-phy
- items:
- const: renesas,usb2-phy-r9a09g056 # RZ/V2N
- enum:
- renesas,usb2-phy-r9a09g047 # RZ/G3E
- renesas,usb2-phy-r9a09g056 # RZ/V2N
- const: renesas,usb2-phy-r9a09g057
- const: renesas,usb2-phy-r9a09g077 # RZ/T2H
@@ -89,6 +91,12 @@ properties:
Phandle to a regulator that provides power to the VBUS. This regulator
will be managed during the PHY power on/off sequence.
vbus-regulator:
$ref: /schemas/regulator/regulator.yaml#
description: USB VBUS internal regulator
type: object
unevaluatedProperties: false
renesas,no-otg-pins:
$ref: /schemas/types.yaml#/definitions/flag
description: |
@@ -96,6 +104,11 @@ properties:
dr_mode: true
mux-states:
description:
phandle to a mux controller node that select the source for USB VBUS.
maxItems: 1
if:
properties:
compatible:
@@ -36,6 +36,9 @@ properties:
minItems: 1
maxItems: 4
power-domains:
maxItems: 1
samsung,pmu-syscon:
$ref: /schemas/types.yaml#/definitions/phandle-array
maxItems: 1
@@ -34,6 +34,9 @@ properties:
- samsung,exynos7870-usbdrd-phy
- samsung,exynos850-usbdrd-phy
- samsung,exynos990-usbdrd-phy
- samsung,exynosautov920-usb31drd-combo-ssphy
- samsung,exynosautov920-usbdrd-combo-hsphy
- samsung,exynosautov920-usbdrd-phy
clocks:
minItems: 1
@@ -51,6 +54,9 @@ properties:
settings register. For Exynos5420 this is given as 'sclk_usbphy30'
in the CMU. It's not needed for Exynos2200.
power-domains:
maxItems: 1
"#phy-cells":
const: 1
@@ -110,6 +116,15 @@ properties:
vddh-usbdp-supply:
description: VDDh power supply for the USB DP phy.
dvdd-supply:
description: 0.75V power supply for the USB phy.
vdd18-supply:
description: 1.8V power supply for the USB phy.
vdd33-supply:
description: 3.3V power supply for the USB phy.
required:
- compatible
- clocks
@@ -221,6 +236,9 @@ allOf:
- samsung,exynos7870-usbdrd-phy
- samsung,exynos850-usbdrd-phy
- samsung,exynos990-usbdrd-phy
- samsung,exynosautov920-usb31drd-combo-ssphy
- samsung,exynosautov920-usbdrd-combo-hsphy
- samsung,exynosautov920-usbdrd-phy
then:
properties:
clocks:
@@ -238,6 +256,39 @@ allOf:
reg-names:
maxItems: 1
- if:
properties:
compatible:
contains:
enum:
- samsung,exynosautov920-usb31drd-combo-ssphy
- samsung,exynosautov920-usbdrd-combo-hsphy
- samsung,exynosautov920-usbdrd-phy
then:
required:
- dvdd-supply
- vdd18-supply
else:
properties:
dvdd-supply: false
vdd18-supply: false
- if:
properties:
compatible:
contains:
enum:
- samsung,exynosautov920-usbdrd-combo-hsphy
- samsung,exynosautov920-usbdrd-phy
then:
required:
- vdd33-supply
else:
properties:
vdd33-supply: false
unevaluatedProperties: false
examples:
@@ -0,0 +1,114 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/spacemit,k1-combo-phy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: SpacemiT K1 PCIe/USB3 Combo PHY
maintainers:
- Alex Elder <elder@riscstar.com>
description: >
Of the three PHYs on the SpacemiT K1 SoC capable of being used for
PCIe, one is a combo PHY that can also be configured for use by a
USB 3 controller. Using PCIe or USB 3 is a board design decision.
The combo PHY is also the only PCIe PHY that is able to determine
PCIe calibration values to use, and this must be determined before
the other two PCIe PHYs can be used. This calibration must be
performed with the combo PHY in PCIe mode, and is this is done
when the combo PHY is probed.
The combo PHY uses an external oscillator as a reference clock.
During normal operation, the PCIe or USB port driver is responsible
for ensuring all other clocks needed by a PHY are enabled, and all
resets affecting the PHY are deasserted. However, for the combo
PHY to perform calibration independent of whether it's later used
for PCIe or USB, all PCIe mode clocks and resets must be defined.
properties:
compatible:
const: spacemit,k1-combo-phy
reg:
items:
- description: PHY control registers
clocks:
items:
- description: External oscillator used by the PHY PLL
- description: DWC PCIe Data Bus Interface (DBI) clock
- description: DWC PCIe application AXI-bus Master interface clock
- description: DWC PCIe application AXI-bus slave interface clock
clock-names:
items:
- const: refclk
- const: dbi
- const: mstr
- const: slv
resets:
items:
- description: PHY reset; remains deasserted after initialization
- description: DWC PCIe Data Bus Interface (DBI) reset
- description: DWC PCIe application AXI-bus Master interface reset
- description: DWC PCIe application AXI-bus slave interface reset
reset-names:
items:
- const: phy
- const: dbi
- const: mstr
- const: slv
spacemit,apmu:
description:
A phandle that refers to the APMU system controller, whose
regmap is used in setting the mode
$ref: /schemas/types.yaml#/definitions/phandle
"#phy-cells":
const: 1
description:
The argument value (PHY_TYPE_PCIE or PHY_TYPE_USB3) determines
whether the PHY operates in PCIe or USB3 mode.
required:
- compatible
- reg
- clocks
- clock-names
- resets
- reset-names
- spacemit,apmu
- "#phy-cells"
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/spacemit,k1-syscon.h>
phy@c0b10000 {
compatible = "spacemit,k1-combo-phy";
reg = <0xc0b10000 0x1000>;
clocks = <&vctcxo_24m>,
<&syscon_apmu CLK_PCIE0_DBI>,
<&syscon_apmu CLK_PCIE0_MASTER>,
<&syscon_apmu CLK_PCIE0_SLAVE>;
clock-names = "refclk",
"dbi",
"mstr",
"slv";
resets = <&syscon_apmu RESET_PCIE0_GLOBAL>,
<&syscon_apmu RESET_PCIE0_DBI>,
<&syscon_apmu RESET_PCIE0_MASTER>,
<&syscon_apmu RESET_PCIE0_SLAVE>;
reset-names = "phy",
"dbi",
"mstr",
"slv";
spacemit,apmu = <&syscon_apmu>;
#phy-cells = <1>;
};
@@ -0,0 +1,71 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/spacemit,k1-pcie-phy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: SpacemiT K1 PCIe PHY
maintainers:
- Alex Elder <elder@riscstar.com>
description: >
Two PHYs on the SpacemiT K1 SoC used for only for PCIe. These
PHYs must be configured using calibration values that are
determined by a third "combo PHY". The combo PHY determines
these calibration values during probe so they can be used for
the two PCIe-only PHYs.
The PHY uses an external oscillator as a reference clock. During
normal operation, the PCIe host driver is responsible for ensuring
all other clocks needed by a PHY are enabled, and all resets
affecting the PHY are deasserted.
properties:
compatible:
const: spacemit,k1-pcie-phy
reg:
items:
- description: PHY control registers
clocks:
items:
- description: External oscillator used by the PHY PLL
clock-names:
const: refclk
resets:
items:
- description: PHY reset; remains deasserted after initialization
reset-names:
const: phy
"#phy-cells":
const: 0
required:
- compatible
- reg
- clocks
- clock-names
- resets
- reset-names
- "#phy-cells"
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/spacemit,k1-syscon.h>
phy@c0c10000 {
compatible = "spacemit,k1-pcie-phy";
reg = <0xc0c10000 0x1000>;
clocks = <&vctcxo_24m>;
clock-names = "refclk";
resets = <&syscon_apmu RESET_PCIE1_GLOBAL>;
reset-names = "phy";
#phy-cells = <0>;
};
@@ -0,0 +1,40 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/spacemit,usb2-phy.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: SpacemiT K1 SoC USB 2.0 PHY
maintainers:
- Ze Huang <huang.ze@linux.dev>
properties:
compatible:
const: spacemit,k1-usb2-phy
reg:
maxItems: 1
clocks:
maxItems: 1
"#phy-cells":
const: 0
required:
- compatible
- reg
- clocks
- "#phy-cells"
additionalProperties: false
examples:
- |
usb-phy@c09c0000 {
compatible = "spacemit,k1-usb2-phy";
reg = <0xc09c0000 0x200>;
clocks = <&syscon_apmu 15>;
#phy-cells = <0>;
};
@@ -0,0 +1,99 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/ti,control-phy-otghs.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: TI OMAP Control PHY Module
maintainers:
- Roger Quadros <rogerq@ti.com>
description:
The TI OMAP Control PHY module is a hardware block within the system
control module (SCM) of Texas Instruments OMAP SoCs. It provides
centralized control over power, configuration, and auxiliary features
for multiple on-chip PHYs. This module is essential for proper PHY
operation in power-constrained embedded systems.
properties:
$nodename:
pattern: "^phy@[0-9a-f]+$"
compatible:
enum:
- ti,control-phy-otghs
- ti,control-phy-pcie
- ti,control-phy-pipe3
- ti,control-phy-usb2
- ti,control-phy-usb2-am437
- ti,control-phy-usb2-dra7
reg:
minItems: 1
maxItems: 3
reg-names:
minItems: 1
maxItems: 3
items:
enum: [otghs_control, power, pcie_pcs, control_sma]
allOf:
- if:
properties:
compatible:
contains:
enum:
- ti,control-phy-otghs
then:
properties:
reg-names:
const: otghs_control
- if:
properties:
compatible:
contains:
enum:
- ti,control-phy-pcie
then:
properties:
reg:
minItems: 3
reg-names:
items:
- const: power
- const: pcie_pcs
- const: control_sma
- if:
properties:
compatible:
contains:
enum:
- ti,control-phy-usb2
- ti,control-phy-usb2-dra7
- ti,control-phy-usb2-am437
- ti,control-phy-pipe3
then:
properties:
reg-names:
const: power
required:
- reg
- compatible
- reg-names
unevaluatedProperties: false
examples:
- |
phy@4a00233c {
compatible = "ti,control-phy-otghs";
reg = <0x4a00233c 0x4>;
reg-names = "otghs_control";
};
...
@@ -0,0 +1,138 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/phy/ti,phy-usb3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: TI PIPE3 PHY Module
maintainers:
- Roger Quadros <rogerq@ti.com>
description:
The TI PIPE3 PHY is a high-speed SerDes (Serializer/Deserializer)
transceiver integrated in OMAP5, DRA7xx/AM57xx, and similar SoCs.
It supports multiple protocols (USB3, SATA, PCIe) using the PIPE3
interface standard, which defines a common physical layer for
high-speed serial interfaces.
properties:
$nodename:
pattern: "^(pcie-phy|usb3-phy|phy)@[0-9a-f]+$"
compatible:
enum:
- ti,omap-usb3
- ti,phy-pipe3-pcie
- ti,phy-pipe3-sata
- ti,phy-usb3
reg:
minItems: 2
maxItems: 3
reg-names:
minItems: 2
items:
- const: phy_rx
- const: phy_tx
- const: pll_ctrl
"#phy-cells":
const: 0
clocks:
minItems: 2
maxItems: 7
clock-names:
minItems: 2
maxItems: 7
items:
enum: [wkupclk, sysclk, refclk, dpll_ref,
dpll_ref_m2, phy-div, div-clk]
syscon-phy-power:
$ref: /schemas/types.yaml#/definitions/phandle-array
maxItems: 1
items:
items:
- description: Phandle to the system control module
- description: Register offset controlling PHY power
syscon-pllreset:
$ref: /schemas/types.yaml#/definitions/phandle-array
maxItems: 1
items:
items:
- description: Phandle to the system control module
- description: Register offset of CTRL_CORE_SMA_SW_0
syscon-pcs:
$ref: /schemas/types.yaml#/definitions/phandle-array
maxItems: 1
items:
items:
- description: Phandle to the system control module
- description: Register offset for PCS delay programming
ctrl-module:
$ref: /schemas/types.yaml#/definitions/phandle
description:
Phandle of control module for PHY power on.
deprecated: true
allOf:
- if:
properties:
compatible:
contains:
const: ti,phy-pipe3-sata
then:
properties:
syscon-pllreset: true
else:
properties:
syscon-pllreset: false
required:
- reg
- compatible
- reg-names
- "#phy-cells"
- clocks
- clock-names
unevaluatedProperties: false
examples:
- |
/* TI PIPE3 USB3 PHY */
usb3-phy@4a084400 {
compatible = "ti,phy-usb3";
reg = <0x4a084400 0x80>,
<0x4a084800 0x64>,
<0x4a084c00 0x40>;
reg-names = "phy_rx", "phy_tx", "pll_ctrl";
#phy-cells = <0>;
clocks = <&usb_phy_cm_clk32k>,
<&sys_clkin>,
<&usb_otg_ss_refclk960m>;
clock-names = "wkupclk", "sysclk", "refclk";
ctrl-module = <&omap_control_usb>;
};
- |
/* TI PIPE3 SATA PHY */
phy@4a096000 {
compatible = "ti,phy-pipe3-sata";
reg = <0x4a096000 0x80>, /* phy_rx */
<0x4a096400 0x64>, /* phy_tx */
<0x4a096800 0x40>; /* pll_ctrl */
reg-names = "phy_rx", "phy_tx", "pll_ctrl";
clocks = <&sys_clkin1>, <&sata_ref_clk>;
clock-names = "sysclk", "refclk";
syscon-pllreset = <&scm_conf 0x3fc>;
#phy-cells = <0>;
};
...

Some files were not shown because too many files have changed in this diff Show More