# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) # Copyright (c) 2020 MediaTek %YAML 1.2 --- $id: http://devicetree.org/schemas/phy/mediatek,xsphy.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: MediaTek XS-PHY Controller maintainers: - Chunfeng Yun <chunfeng.yun@mediatek.com> description: | The XS-PHY controller supports physical layer functionality for USB3.1 GEN2 controller on MediaTek SoCs. Banks layout of xsphy ---------------------------------- port offset bank u2 port0 0x0000 MISC 0x0100 FMREG 0x0300 U2PHY_COM u2 port1 0x1000 MISC 0x1100 FMREG 0x1300 U2PHY_COM u2 port2 0x2000 MISC ... u31 common 0x3000 DIG_GLB 0x3100 PHYA_GLB u31 port0 0x3400 DIG_LN_TOP 0x3500 DIG_LN_TX0 0x3600 DIG_LN_RX0 0x3700 DIG_LN_DAIF 0x3800 PHYA_LN u31 port1 0x3a00 DIG_LN_TOP 0x3b00 DIG_LN_TX0 0x3c00 DIG_LN_RX0 0x3d00 DIG_LN_DAIF 0x3e00 PHYA_LN ... DIG_GLB & PHYA_GLB are shared by U31 ports. properties: $nodename: pattern: "^xs-phy@[0-9a-f]+$" compatible: items: - enum: - mediatek,mt3611-xsphy - mediatek,mt3612-xsphy - const: mediatek,xsphy reg: description: Register shared by multiple U3 ports, exclude port's private register, if only U2 ports provided, shouldn't use the property. maxItems: 1 "#address-cells": enum: [1, 2] "#size-cells": enum: [1, 2] ranges: true mediatek,src-ref-clk-mhz: description: Frequency of reference clock for slew rate calibrate default: 26 mediatek,src-coef: description: Coefficient for slew rate calibrate, depends on SoC process $ref: /schemas/types.yaml#/definitions/uint32 default: 17 # Required child node: patternProperties: "^usb-phy@[0-9a-f]+$": type: object description: A sub-node is required for each port the controller provides. Address range information including the usual 'reg' property is used inside these nodes to describe the controller's topology. properties: reg: maxItems: 1 clocks: items: - description: Reference clock, (HS is 48Mhz, SS/P is 24~27Mhz) clock-names: items: - const: ref "#phy-cells": const: 1 description: | The cells contain the following arguments. - description: The PHY type enum: - PHY_TYPE_USB2 - PHY_TYPE_USB3 # The following optional vendor properties are only for debug or HQA test mediatek,eye-src: description: The value of slew rate calibrate (U2 phy) $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1 maximum: 7 mediatek,eye-vrt: description: The selection of VRT reference voltage (U2 phy) $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1 maximum: 7 mediatek,eye-term: description: The selection of HS_TX TERM reference voltage (U2 phy) $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1 maximum: 7 mediatek,efuse-intr: description: The selection of Internal Resistor (U2/U3 phy) $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1 maximum: 63 mediatek,efuse-tx-imp: description: The selection of TX Impedance (U3 phy) $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1 maximum: 31 mediatek,efuse-rx-imp: description: The selection of RX Impedance (U3 phy) $ref: /schemas/types.yaml#/definitions/uint32 minimum: 1 maximum: 31 required: - reg - clocks - clock-names - "#phy-cells" additionalProperties: false required: - compatible - "#address-cells" - "#size-cells" - ranges additionalProperties: false examples: - | #include <dt-bindings/phy/phy.h> u3phy: xs-phy@11c40000 { compatible = "mediatek,mt3611-xsphy", "mediatek,xsphy"; reg = <0x11c43000 0x0200>; mediatek,src-ref-clk-mhz = <26>; mediatek,src-coef = <17>; #address-cells = <1>; #size-cells = <1>; ranges; u2port0: usb-phy@11c40000 { reg = <0x11c40000 0x0400>; clocks = <&clk48m>; clock-names = "ref"; mediatek,eye-src = <4>; #phy-cells = <1>; }; u3port0: usb-phy@11c43000 { reg = <0x11c43400 0x0500>; clocks = <&clk26m>; clock-names = "ref"; mediatek,efuse-intr = <28>; #phy-cells = <1>; }; }; ...