xref: /linux/Documentation/devicetree/bindings/phy/mediatek,tphy.yaml (revision 5c977c69c8b2be793b3f5a11a97addabdea47f8b)
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
18cbdf8f50SChunfeng Yun  T-PHY V2 (mt2712) 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
37cbdf8f50SChunfeng Yun  Version 2:
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
62cbdf8f50SChunfeng Yun  added on V2.
63cbdf8f50SChunfeng Yun
64cbdf8f50SChunfeng Yunproperties:
65cbdf8f50SChunfeng Yun  $nodename:
66cbdf8f50SChunfeng Yun    pattern: "^t-phy@[0-9a-f]+$"
67cbdf8f50SChunfeng Yun
68cbdf8f50SChunfeng Yun  compatible:
69cbdf8f50SChunfeng Yun    oneOf:
70cbdf8f50SChunfeng Yun      - items:
71cbdf8f50SChunfeng Yun          - enum:
72cbdf8f50SChunfeng Yun              - mediatek,mt2701-tphy
73cbdf8f50SChunfeng Yun              - mediatek,mt7623-tphy
74cbdf8f50SChunfeng Yun              - mediatek,mt7622-tphy
75cbdf8f50SChunfeng Yun              - mediatek,mt8516-tphy
76cbdf8f50SChunfeng Yun          - const: mediatek,generic-tphy-v1
77cbdf8f50SChunfeng Yun      - items:
78cbdf8f50SChunfeng Yun          - enum:
79cbdf8f50SChunfeng Yun              - mediatek,mt2712-tphy
80cbdf8f50SChunfeng Yun              - mediatek,mt7629-tphy
81cbdf8f50SChunfeng Yun              - mediatek,mt8183-tphy
8206c7af60SSeiya Wang              - mediatek,mt8195-tphy
83cbdf8f50SChunfeng Yun          - const: mediatek,generic-tphy-v2
84cbdf8f50SChunfeng Yun      - const: mediatek,mt2701-u3phy
85cbdf8f50SChunfeng Yun        deprecated: true
86cbdf8f50SChunfeng Yun      - const: mediatek,mt2712-u3phy
87cbdf8f50SChunfeng Yun        deprecated: true
88cbdf8f50SChunfeng Yun      - const: mediatek,mt8173-u3phy
89cbdf8f50SChunfeng Yun
90cbdf8f50SChunfeng Yun  reg:
91cbdf8f50SChunfeng Yun    description:
92cbdf8f50SChunfeng Yun      Register shared by multiple ports, exclude port's private register.
93cbdf8f50SChunfeng Yun      It is needed for T-PHY V1, such as mt2701 and mt8173, but not for
94cbdf8f50SChunfeng Yun      T-PHY V2, such as mt2712.
95cbdf8f50SChunfeng Yun    maxItems: 1
96cbdf8f50SChunfeng Yun
97cbdf8f50SChunfeng Yun  "#address-cells":
98cbdf8f50SChunfeng Yun    enum: [1, 2]
99cbdf8f50SChunfeng Yun
100cbdf8f50SChunfeng Yun  "#size-cells":
101cbdf8f50SChunfeng Yun    enum: [1, 2]
102cbdf8f50SChunfeng Yun
103cbdf8f50SChunfeng Yun  # Used with non-empty value if optional 'reg' is not provided.
104cbdf8f50SChunfeng Yun  # The format of the value is an arbitrary number of triplets of
105cbdf8f50SChunfeng Yun  # (child-bus-address, parent-bus-address, length).
106cbdf8f50SChunfeng Yun  ranges: true
107cbdf8f50SChunfeng Yun
108cbdf8f50SChunfeng Yun  mediatek,src-ref-clk-mhz:
109cbdf8f50SChunfeng Yun    description:
110cbdf8f50SChunfeng Yun      Frequency of reference clock for slew rate calibrate
111cbdf8f50SChunfeng Yun    default: 26
112cbdf8f50SChunfeng Yun
113cbdf8f50SChunfeng Yun  mediatek,src-coef:
114cbdf8f50SChunfeng Yun    description:
115cbdf8f50SChunfeng Yun      Coefficient for slew rate calibrate, depends on SoC process
116cbdf8f50SChunfeng Yun    $ref: /schemas/types.yaml#/definitions/uint32
117cbdf8f50SChunfeng Yun    default: 28
118cbdf8f50SChunfeng Yun
119cbdf8f50SChunfeng Yun# Required child node:
120cbdf8f50SChunfeng YunpatternProperties:
121*5c977c69SChunfeng Yun  "^(usb|pcie|sata)-phy@[0-9a-f]+$":
122cbdf8f50SChunfeng Yun    type: object
123cbdf8f50SChunfeng Yun    description:
124cbdf8f50SChunfeng Yun      A sub-node is required for each port the controller provides.
125cbdf8f50SChunfeng Yun      Address range information including the usual 'reg' property
126cbdf8f50SChunfeng Yun      is used inside these nodes to describe the controller's topology.
127cbdf8f50SChunfeng Yun
128cbdf8f50SChunfeng Yun    properties:
129cbdf8f50SChunfeng Yun      reg:
130cbdf8f50SChunfeng Yun        maxItems: 1
131cbdf8f50SChunfeng Yun
132cbdf8f50SChunfeng Yun      clocks:
133cbdf8f50SChunfeng Yun        minItems: 1
134cbdf8f50SChunfeng Yun        maxItems: 2
135cbdf8f50SChunfeng Yun        items:
136cbdf8f50SChunfeng Yun          - description: Reference clock, (HS is 48Mhz, SS/P is 24~27Mhz)
137cbdf8f50SChunfeng Yun          - description: Reference clock of analog phy
138cbdf8f50SChunfeng Yun        description:
139cbdf8f50SChunfeng Yun          Uses both clocks if the clock of analog and digital phys are
140cbdf8f50SChunfeng Yun          separated, otherwise uses "ref" clock only if needed.
141cbdf8f50SChunfeng Yun
142cbdf8f50SChunfeng Yun      clock-names:
143cbdf8f50SChunfeng Yun        minItems: 1
144cbdf8f50SChunfeng Yun        maxItems: 2
145cbdf8f50SChunfeng Yun        items:
146cbdf8f50SChunfeng Yun          - const: ref
147cbdf8f50SChunfeng Yun          - const: da_ref
148cbdf8f50SChunfeng Yun
149cbdf8f50SChunfeng Yun      "#phy-cells":
150cbdf8f50SChunfeng Yun        const: 1
151cbdf8f50SChunfeng Yun        description: |
152cbdf8f50SChunfeng Yun          The cells contain the following arguments.
153cbdf8f50SChunfeng Yun
154cbdf8f50SChunfeng Yun          - description: The PHY type
155cbdf8f50SChunfeng Yun              enum:
156cbdf8f50SChunfeng Yun                - PHY_TYPE_USB2
157cbdf8f50SChunfeng Yun                - PHY_TYPE_USB3
158cbdf8f50SChunfeng Yun                - PHY_TYPE_PCIE
159cbdf8f50SChunfeng Yun                - PHY_TYPE_SATA
160cbdf8f50SChunfeng Yun
161cbdf8f50SChunfeng Yun      # The following optional vendor properties are only for debug or HQA test
162cbdf8f50SChunfeng Yun      mediatek,eye-src:
163cbdf8f50SChunfeng Yun        description:
164cbdf8f50SChunfeng Yun          The value of slew rate calibrate (U2 phy)
165cbdf8f50SChunfeng Yun        $ref: /schemas/types.yaml#/definitions/uint32
166cbdf8f50SChunfeng Yun        minimum: 1
167cbdf8f50SChunfeng Yun        maximum: 7
168cbdf8f50SChunfeng Yun
169cbdf8f50SChunfeng Yun      mediatek,eye-vrt:
170cbdf8f50SChunfeng Yun        description:
171cbdf8f50SChunfeng Yun          The selection of VRT reference voltage (U2 phy)
172cbdf8f50SChunfeng Yun        $ref: /schemas/types.yaml#/definitions/uint32
173cbdf8f50SChunfeng Yun        minimum: 1
174cbdf8f50SChunfeng Yun        maximum: 7
175cbdf8f50SChunfeng Yun
176cbdf8f50SChunfeng Yun      mediatek,eye-term:
177cbdf8f50SChunfeng Yun        description:
178cbdf8f50SChunfeng Yun          The selection of HS_TX TERM reference voltage (U2 phy)
179cbdf8f50SChunfeng Yun        $ref: /schemas/types.yaml#/definitions/uint32
180cbdf8f50SChunfeng Yun        minimum: 1
181cbdf8f50SChunfeng Yun        maximum: 7
182cbdf8f50SChunfeng Yun
183cbdf8f50SChunfeng Yun      mediatek,intr:
184cbdf8f50SChunfeng Yun        description:
185cbdf8f50SChunfeng Yun          The selection of internal resistor (U2 phy)
186cbdf8f50SChunfeng Yun        $ref: /schemas/types.yaml#/definitions/uint32
187cbdf8f50SChunfeng Yun        minimum: 1
188cbdf8f50SChunfeng Yun        maximum: 31
189cbdf8f50SChunfeng Yun
190cbdf8f50SChunfeng Yun      mediatek,discth:
191cbdf8f50SChunfeng Yun        description:
192cbdf8f50SChunfeng Yun          The selection of disconnect threshold (U2 phy)
193cbdf8f50SChunfeng Yun        $ref: /schemas/types.yaml#/definitions/uint32
194cbdf8f50SChunfeng Yun        minimum: 1
195cbdf8f50SChunfeng Yun        maximum: 15
196cbdf8f50SChunfeng Yun
197cbdf8f50SChunfeng Yun      mediatek,bc12:
198cbdf8f50SChunfeng Yun        description:
199cbdf8f50SChunfeng Yun          Specify the flag to enable BC1.2 if support it
200cbdf8f50SChunfeng Yun        type: boolean
201cbdf8f50SChunfeng Yun
202cbdf8f50SChunfeng Yun    required:
203cbdf8f50SChunfeng Yun      - reg
204cbdf8f50SChunfeng Yun      - "#phy-cells"
205cbdf8f50SChunfeng Yun
206cbdf8f50SChunfeng Yun    additionalProperties: false
207cbdf8f50SChunfeng Yun
208cbdf8f50SChunfeng Yunrequired:
209cbdf8f50SChunfeng Yun  - compatible
210cbdf8f50SChunfeng Yun  - "#address-cells"
211cbdf8f50SChunfeng Yun  - "#size-cells"
212cbdf8f50SChunfeng Yun  - ranges
213cbdf8f50SChunfeng Yun
214cbdf8f50SChunfeng YunadditionalProperties: false
215cbdf8f50SChunfeng Yun
216cbdf8f50SChunfeng Yunexamples:
217cbdf8f50SChunfeng Yun  - |
218cbdf8f50SChunfeng Yun    #include <dt-bindings/clock/mt8173-clk.h>
219cbdf8f50SChunfeng Yun    #include <dt-bindings/interrupt-controller/arm-gic.h>
220cbdf8f50SChunfeng Yun    #include <dt-bindings/interrupt-controller/irq.h>
221cbdf8f50SChunfeng Yun    #include <dt-bindings/phy/phy.h>
222cbdf8f50SChunfeng Yun    usb@11271000 {
223cbdf8f50SChunfeng Yun        compatible = "mediatek,mt8173-mtu3", "mediatek,mtu3";
224cbdf8f50SChunfeng Yun        reg = <0x11271000 0x3000>, <0x11280700 0x0100>;
225cbdf8f50SChunfeng Yun        reg-names = "mac", "ippc";
226cbdf8f50SChunfeng Yun        phys = <&u2port0 PHY_TYPE_USB2>,
227cbdf8f50SChunfeng Yun               <&u3port0 PHY_TYPE_USB3>,
228cbdf8f50SChunfeng Yun               <&u2port1 PHY_TYPE_USB2>;
229cbdf8f50SChunfeng Yun        interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>;
230cbdf8f50SChunfeng Yun        clocks = <&topckgen CLK_TOP_USB30_SEL>;
231cbdf8f50SChunfeng Yun        clock-names = "sys_ck";
232cbdf8f50SChunfeng Yun    };
233cbdf8f50SChunfeng Yun
234cbdf8f50SChunfeng Yun    t-phy@11290000 {
235cbdf8f50SChunfeng Yun        compatible = "mediatek,mt8173-u3phy";
236cbdf8f50SChunfeng Yun        reg = <0x11290000 0x800>;
237cbdf8f50SChunfeng Yun        #address-cells = <1>;
238cbdf8f50SChunfeng Yun        #size-cells = <1>;
239cbdf8f50SChunfeng Yun        ranges;
240cbdf8f50SChunfeng Yun
241cbdf8f50SChunfeng Yun        u2port0: usb-phy@11290800 {
242cbdf8f50SChunfeng Yun            reg = <0x11290800 0x100>;
243cbdf8f50SChunfeng Yun            clocks = <&apmixedsys CLK_APMIXED_REF2USB_TX>, <&clk48m>;
244cbdf8f50SChunfeng Yun            clock-names = "ref", "da_ref";
245cbdf8f50SChunfeng Yun            #phy-cells = <1>;
246cbdf8f50SChunfeng Yun        };
247cbdf8f50SChunfeng Yun
248cbdf8f50SChunfeng Yun        u3port0: usb-phy@11290900 {
249cbdf8f50SChunfeng Yun            reg = <0x11290900 0x700>;
250cbdf8f50SChunfeng Yun            clocks = <&clk26m>;
251cbdf8f50SChunfeng Yun            clock-names = "ref";
252cbdf8f50SChunfeng Yun            #phy-cells = <1>;
253cbdf8f50SChunfeng Yun        };
254cbdf8f50SChunfeng Yun
255cbdf8f50SChunfeng Yun        u2port1: usb-phy@11291000 {
256cbdf8f50SChunfeng Yun            reg = <0x11291000 0x100>;
257cbdf8f50SChunfeng Yun            #phy-cells = <1>;
258cbdf8f50SChunfeng Yun        };
259cbdf8f50SChunfeng Yun    };
260cbdf8f50SChunfeng Yun
261cbdf8f50SChunfeng Yun...
262