1cbdf8f50SChunfeng Yun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2cbdf8f50SChunfeng Yun# Copyright (c) 2020 MediaTek 3cbdf8f50SChunfeng Yun%YAML 1.2 4cbdf8f50SChunfeng Yun--- 5cbdf8f50SChunfeng Yun$id: http://devicetree.org/schemas/phy/mediatek,tphy.yaml# 6cbdf8f50SChunfeng Yun$schema: http://devicetree.org/meta-schemas/core.yaml# 7cbdf8f50SChunfeng Yun 8cbdf8f50SChunfeng Yuntitle: MediaTek T-PHY Controller Device Tree Bindings 9cbdf8f50SChunfeng Yun 10cbdf8f50SChunfeng Yunmaintainers: 11cbdf8f50SChunfeng Yun - Chunfeng Yun <chunfeng.yun@mediatek.com> 12cbdf8f50SChunfeng Yun 13cbdf8f50SChunfeng Yundescription: | 14cbdf8f50SChunfeng Yun The T-PHY controller supports physical layer functionality for a number of 15cbdf8f50SChunfeng Yun controllers on MediaTek SoCs, includes USB2.0, USB3.0, PCIe and SATA. 16cbdf8f50SChunfeng Yun 17cbdf8f50SChunfeng Yun Layout differences of banks between T-PHY V1 (mt8173/mt2701) and 18*c52c90dbSChunfeng Yun T-PHY V2 (mt2712) / V3 (mt8195) when works on USB mode: 19cbdf8f50SChunfeng Yun ----------------------------------- 20cbdf8f50SChunfeng Yun Version 1: 21cbdf8f50SChunfeng Yun port offset bank 22cbdf8f50SChunfeng Yun shared 0x0000 SPLLC 23cbdf8f50SChunfeng Yun 0x0100 FMREG 24cbdf8f50SChunfeng Yun u2 port0 0x0800 U2PHY_COM 25cbdf8f50SChunfeng Yun u3 port0 0x0900 U3PHYD 26cbdf8f50SChunfeng Yun 0x0a00 U3PHYD_BANK2 27cbdf8f50SChunfeng Yun 0x0b00 U3PHYA 28cbdf8f50SChunfeng Yun 0x0c00 U3PHYA_DA 29cbdf8f50SChunfeng Yun u2 port1 0x1000 U2PHY_COM 30cbdf8f50SChunfeng Yun u3 port1 0x1100 U3PHYD 31cbdf8f50SChunfeng Yun 0x1200 U3PHYD_BANK2 32cbdf8f50SChunfeng Yun 0x1300 U3PHYA 33cbdf8f50SChunfeng Yun 0x1400 U3PHYA_DA 34cbdf8f50SChunfeng Yun u2 port2 0x1800 U2PHY_COM 35cbdf8f50SChunfeng Yun ... 36cbdf8f50SChunfeng Yun 37*c52c90dbSChunfeng Yun Version 2/3: 38cbdf8f50SChunfeng Yun port offset bank 39cbdf8f50SChunfeng Yun u2 port0 0x0000 MISC 40cbdf8f50SChunfeng Yun 0x0100 FMREG 41cbdf8f50SChunfeng Yun 0x0300 U2PHY_COM 42cbdf8f50SChunfeng Yun u3 port0 0x0700 SPLLC 43cbdf8f50SChunfeng Yun 0x0800 CHIP 44cbdf8f50SChunfeng Yun 0x0900 U3PHYD 45cbdf8f50SChunfeng Yun 0x0a00 U3PHYD_BANK2 46cbdf8f50SChunfeng Yun 0x0b00 U3PHYA 47cbdf8f50SChunfeng Yun 0x0c00 U3PHYA_DA 48cbdf8f50SChunfeng Yun u2 port1 0x1000 MISC 49cbdf8f50SChunfeng Yun 0x1100 FMREG 50cbdf8f50SChunfeng Yun 0x1300 U2PHY_COM 51cbdf8f50SChunfeng Yun u3 port1 0x1700 SPLLC 52cbdf8f50SChunfeng Yun 0x1800 CHIP 53cbdf8f50SChunfeng Yun 0x1900 U3PHYD 54cbdf8f50SChunfeng Yun 0x1a00 U3PHYD_BANK2 55cbdf8f50SChunfeng Yun 0x1b00 U3PHYA 56cbdf8f50SChunfeng Yun 0x1c00 U3PHYA_DA 57cbdf8f50SChunfeng Yun u2 port2 0x2000 MISC 58cbdf8f50SChunfeng Yun ... 59cbdf8f50SChunfeng Yun 60cbdf8f50SChunfeng Yun SPLLC shared by u3 ports and FMREG shared by u2 ports on V1 are put back 61cbdf8f50SChunfeng Yun into each port; a new bank MISC for u2 ports and CHIP for u3 ports are 62*c52c90dbSChunfeng Yun added on V2; the FMREG bank for slew rate calibration is not used anymore 63*c52c90dbSChunfeng Yun and reserved on V3; 64cbdf8f50SChunfeng Yun 65cbdf8f50SChunfeng Yunproperties: 66cbdf8f50SChunfeng Yun $nodename: 67cbdf8f50SChunfeng Yun pattern: "^t-phy@[0-9a-f]+$" 68cbdf8f50SChunfeng Yun 69cbdf8f50SChunfeng Yun compatible: 70cbdf8f50SChunfeng Yun oneOf: 71cbdf8f50SChunfeng Yun - items: 72cbdf8f50SChunfeng Yun - enum: 73cbdf8f50SChunfeng Yun - mediatek,mt2701-tphy 74cbdf8f50SChunfeng Yun - mediatek,mt7623-tphy 75cbdf8f50SChunfeng Yun - mediatek,mt7622-tphy 76cbdf8f50SChunfeng Yun - mediatek,mt8516-tphy 77cbdf8f50SChunfeng Yun - const: mediatek,generic-tphy-v1 78cbdf8f50SChunfeng Yun - items: 79cbdf8f50SChunfeng Yun - enum: 80cbdf8f50SChunfeng Yun - mediatek,mt2712-tphy 81cbdf8f50SChunfeng Yun - mediatek,mt7629-tphy 82cbdf8f50SChunfeng Yun - mediatek,mt8183-tphy 83cbdf8f50SChunfeng Yun - const: mediatek,generic-tphy-v2 84*c52c90dbSChunfeng Yun - items: 85*c52c90dbSChunfeng Yun - enum: 86*c52c90dbSChunfeng Yun - mediatek,mt8195-tphy 87*c52c90dbSChunfeng Yun - const: mediatek,generic-tphy-v3 88cbdf8f50SChunfeng Yun - const: mediatek,mt2701-u3phy 89cbdf8f50SChunfeng Yun deprecated: true 90cbdf8f50SChunfeng Yun - const: mediatek,mt2712-u3phy 91cbdf8f50SChunfeng Yun deprecated: true 92cbdf8f50SChunfeng Yun - const: mediatek,mt8173-u3phy 93cbdf8f50SChunfeng Yun 94cbdf8f50SChunfeng Yun reg: 95cbdf8f50SChunfeng Yun description: 96cbdf8f50SChunfeng Yun Register shared by multiple ports, exclude port's private register. 97cbdf8f50SChunfeng Yun It is needed for T-PHY V1, such as mt2701 and mt8173, but not for 98*c52c90dbSChunfeng Yun T-PHY V2/V3, such as mt2712. 99cbdf8f50SChunfeng Yun maxItems: 1 100cbdf8f50SChunfeng Yun 101cbdf8f50SChunfeng Yun "#address-cells": 102cbdf8f50SChunfeng Yun enum: [1, 2] 103cbdf8f50SChunfeng Yun 104cbdf8f50SChunfeng Yun "#size-cells": 105cbdf8f50SChunfeng Yun enum: [1, 2] 106cbdf8f50SChunfeng Yun 107cbdf8f50SChunfeng Yun # Used with non-empty value if optional 'reg' is not provided. 108cbdf8f50SChunfeng Yun # The format of the value is an arbitrary number of triplets of 109cbdf8f50SChunfeng Yun # (child-bus-address, parent-bus-address, length). 110cbdf8f50SChunfeng Yun ranges: true 111cbdf8f50SChunfeng Yun 112cbdf8f50SChunfeng Yun mediatek,src-ref-clk-mhz: 113cbdf8f50SChunfeng Yun description: 114cbdf8f50SChunfeng Yun Frequency of reference clock for slew rate calibrate 115cbdf8f50SChunfeng Yun default: 26 116cbdf8f50SChunfeng Yun 117cbdf8f50SChunfeng Yun mediatek,src-coef: 118cbdf8f50SChunfeng Yun description: 119cbdf8f50SChunfeng Yun Coefficient for slew rate calibrate, depends on SoC process 120cbdf8f50SChunfeng Yun $ref: /schemas/types.yaml#/definitions/uint32 121cbdf8f50SChunfeng Yun default: 28 122cbdf8f50SChunfeng Yun 123cbdf8f50SChunfeng Yun# Required child node: 124cbdf8f50SChunfeng YunpatternProperties: 1255c977c69SChunfeng Yun "^(usb|pcie|sata)-phy@[0-9a-f]+$": 126cbdf8f50SChunfeng Yun type: object 127cbdf8f50SChunfeng Yun description: 128cbdf8f50SChunfeng Yun A sub-node is required for each port the controller provides. 129cbdf8f50SChunfeng Yun Address range information including the usual 'reg' property 130cbdf8f50SChunfeng Yun is used inside these nodes to describe the controller's topology. 131cbdf8f50SChunfeng Yun 132cbdf8f50SChunfeng Yun properties: 133cbdf8f50SChunfeng Yun reg: 134cbdf8f50SChunfeng Yun maxItems: 1 135cbdf8f50SChunfeng Yun 136cbdf8f50SChunfeng Yun clocks: 137cbdf8f50SChunfeng Yun minItems: 1 138cbdf8f50SChunfeng Yun items: 139cbdf8f50SChunfeng Yun - description: Reference clock, (HS is 48Mhz, SS/P is 24~27Mhz) 140cbdf8f50SChunfeng Yun - description: Reference clock of analog phy 141cbdf8f50SChunfeng Yun description: 142cbdf8f50SChunfeng Yun Uses both clocks if the clock of analog and digital phys are 143cbdf8f50SChunfeng Yun separated, otherwise uses "ref" clock only if needed. 144cbdf8f50SChunfeng Yun 145cbdf8f50SChunfeng Yun clock-names: 146cbdf8f50SChunfeng Yun minItems: 1 147cbdf8f50SChunfeng Yun items: 148cbdf8f50SChunfeng Yun - const: ref 149cbdf8f50SChunfeng Yun - const: da_ref 150cbdf8f50SChunfeng Yun 151cbdf8f50SChunfeng Yun "#phy-cells": 152cbdf8f50SChunfeng Yun const: 1 153cbdf8f50SChunfeng Yun description: | 154cbdf8f50SChunfeng Yun The cells contain the following arguments. 155cbdf8f50SChunfeng Yun 156cbdf8f50SChunfeng Yun - description: The PHY type 157cbdf8f50SChunfeng Yun enum: 158cbdf8f50SChunfeng Yun - PHY_TYPE_USB2 159cbdf8f50SChunfeng Yun - PHY_TYPE_USB3 160cbdf8f50SChunfeng Yun - PHY_TYPE_PCIE 161cbdf8f50SChunfeng Yun - PHY_TYPE_SATA 162cbdf8f50SChunfeng Yun 163cbdf8f50SChunfeng Yun # The following optional vendor properties are only for debug or HQA test 164cbdf8f50SChunfeng Yun mediatek,eye-src: 165cbdf8f50SChunfeng Yun description: 166cbdf8f50SChunfeng Yun The value of slew rate calibrate (U2 phy) 167cbdf8f50SChunfeng Yun $ref: /schemas/types.yaml#/definitions/uint32 168cbdf8f50SChunfeng Yun minimum: 1 169cbdf8f50SChunfeng Yun maximum: 7 170cbdf8f50SChunfeng Yun 171cbdf8f50SChunfeng Yun mediatek,eye-vrt: 172cbdf8f50SChunfeng Yun description: 173cbdf8f50SChunfeng Yun The selection of VRT reference voltage (U2 phy) 174cbdf8f50SChunfeng Yun $ref: /schemas/types.yaml#/definitions/uint32 175cbdf8f50SChunfeng Yun minimum: 1 176cbdf8f50SChunfeng Yun maximum: 7 177cbdf8f50SChunfeng Yun 178cbdf8f50SChunfeng Yun mediatek,eye-term: 179cbdf8f50SChunfeng Yun description: 180cbdf8f50SChunfeng Yun The selection of HS_TX TERM reference voltage (U2 phy) 181cbdf8f50SChunfeng Yun $ref: /schemas/types.yaml#/definitions/uint32 182cbdf8f50SChunfeng Yun minimum: 1 183cbdf8f50SChunfeng Yun maximum: 7 184cbdf8f50SChunfeng Yun 185cbdf8f50SChunfeng Yun mediatek,intr: 186cbdf8f50SChunfeng Yun description: 187cbdf8f50SChunfeng Yun The selection of internal resistor (U2 phy) 188cbdf8f50SChunfeng Yun $ref: /schemas/types.yaml#/definitions/uint32 189cbdf8f50SChunfeng Yun minimum: 1 190cbdf8f50SChunfeng Yun maximum: 31 191cbdf8f50SChunfeng Yun 192cbdf8f50SChunfeng Yun mediatek,discth: 193cbdf8f50SChunfeng Yun description: 194cbdf8f50SChunfeng Yun The selection of disconnect threshold (U2 phy) 195cbdf8f50SChunfeng Yun $ref: /schemas/types.yaml#/definitions/uint32 196cbdf8f50SChunfeng Yun minimum: 1 197cbdf8f50SChunfeng Yun maximum: 15 198cbdf8f50SChunfeng Yun 199cbdf8f50SChunfeng Yun mediatek,bc12: 200cbdf8f50SChunfeng Yun description: 201cbdf8f50SChunfeng Yun Specify the flag to enable BC1.2 if support it 202cbdf8f50SChunfeng Yun type: boolean 203cbdf8f50SChunfeng Yun 204cbdf8f50SChunfeng Yun required: 205cbdf8f50SChunfeng Yun - reg 206cbdf8f50SChunfeng Yun - "#phy-cells" 207cbdf8f50SChunfeng Yun 208cbdf8f50SChunfeng Yun additionalProperties: false 209cbdf8f50SChunfeng Yun 210cbdf8f50SChunfeng Yunrequired: 211cbdf8f50SChunfeng Yun - compatible 212cbdf8f50SChunfeng Yun - "#address-cells" 213cbdf8f50SChunfeng Yun - "#size-cells" 214cbdf8f50SChunfeng Yun - ranges 215cbdf8f50SChunfeng Yun 216cbdf8f50SChunfeng YunadditionalProperties: false 217cbdf8f50SChunfeng Yun 218cbdf8f50SChunfeng Yunexamples: 219cbdf8f50SChunfeng Yun - | 220cbdf8f50SChunfeng Yun #include <dt-bindings/clock/mt8173-clk.h> 221cbdf8f50SChunfeng Yun #include <dt-bindings/interrupt-controller/arm-gic.h> 222cbdf8f50SChunfeng Yun #include <dt-bindings/interrupt-controller/irq.h> 223cbdf8f50SChunfeng Yun #include <dt-bindings/phy/phy.h> 224cbdf8f50SChunfeng Yun usb@11271000 { 225cbdf8f50SChunfeng Yun compatible = "mediatek,mt8173-mtu3", "mediatek,mtu3"; 226cbdf8f50SChunfeng Yun reg = <0x11271000 0x3000>, <0x11280700 0x0100>; 227cbdf8f50SChunfeng Yun reg-names = "mac", "ippc"; 228cbdf8f50SChunfeng Yun phys = <&u2port0 PHY_TYPE_USB2>, 229cbdf8f50SChunfeng Yun <&u3port0 PHY_TYPE_USB3>, 230cbdf8f50SChunfeng Yun <&u2port1 PHY_TYPE_USB2>; 231cbdf8f50SChunfeng Yun interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>; 232cbdf8f50SChunfeng Yun clocks = <&topckgen CLK_TOP_USB30_SEL>; 233cbdf8f50SChunfeng Yun clock-names = "sys_ck"; 234cbdf8f50SChunfeng Yun }; 235cbdf8f50SChunfeng Yun 236cbdf8f50SChunfeng Yun t-phy@11290000 { 237cbdf8f50SChunfeng Yun compatible = "mediatek,mt8173-u3phy"; 238cbdf8f50SChunfeng Yun reg = <0x11290000 0x800>; 239cbdf8f50SChunfeng Yun #address-cells = <1>; 240cbdf8f50SChunfeng Yun #size-cells = <1>; 241cbdf8f50SChunfeng Yun ranges; 242cbdf8f50SChunfeng Yun 243cbdf8f50SChunfeng Yun u2port0: usb-phy@11290800 { 244cbdf8f50SChunfeng Yun reg = <0x11290800 0x100>; 245cbdf8f50SChunfeng Yun clocks = <&apmixedsys CLK_APMIXED_REF2USB_TX>, <&clk48m>; 246cbdf8f50SChunfeng Yun clock-names = "ref", "da_ref"; 247cbdf8f50SChunfeng Yun #phy-cells = <1>; 248cbdf8f50SChunfeng Yun }; 249cbdf8f50SChunfeng Yun 250cbdf8f50SChunfeng Yun u3port0: usb-phy@11290900 { 251cbdf8f50SChunfeng Yun reg = <0x11290900 0x700>; 252cbdf8f50SChunfeng Yun clocks = <&clk26m>; 253cbdf8f50SChunfeng Yun clock-names = "ref"; 254cbdf8f50SChunfeng Yun #phy-cells = <1>; 255cbdf8f50SChunfeng Yun }; 256cbdf8f50SChunfeng Yun 257cbdf8f50SChunfeng Yun u2port1: usb-phy@11291000 { 258cbdf8f50SChunfeng Yun reg = <0x11291000 0x100>; 259cbdf8f50SChunfeng Yun #phy-cells = <1>; 260cbdf8f50SChunfeng Yun }; 261cbdf8f50SChunfeng Yun }; 262cbdf8f50SChunfeng Yun 263cbdf8f50SChunfeng Yun... 264