| # 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>; |
| }; |
| }; |
| |
| ... |