1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: "http://devicetree.org/schemas/phy/phy-cadence-torrent.yaml#"
5$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7title: Cadence Torrent SD0801 PHY binding
8
9description:
10  This binding describes the Cadence SD0801 PHY (also known as Torrent PHY)
11  hardware included with the Cadence MHDP DisplayPort controller. Torrent
12  PHY also supports multilink multiprotocol combinations including protocols
13  such as PCIe, USB, SGMII, QSGMII etc.
14
15maintainers:
16  - Swapnil Jakhade <sjakhade@cadence.com>
17  - Yuti Amonkar <yamonkar@cadence.com>
18
19properties:
20  compatible:
21    enum:
22      - cdns,torrent-phy
23      - ti,j721e-serdes-10g
24
25  '#address-cells':
26    const: 1
27
28  '#size-cells':
29    const: 0
30
31  clocks:
32    maxItems: 1
33    description:
34      PHY reference clock. Must contain an entry in clock-names.
35
36  clock-names:
37    const: refclk
38
39  reg:
40    minItems: 1
41    maxItems: 2
42    items:
43      - description: Offset of the Torrent PHY configuration registers.
44      - description: Offset of the DPTX PHY configuration registers.
45
46  reg-names:
47    minItems: 1
48    maxItems: 2
49    items:
50      - const: torrent_phy
51      - const: dptx_phy
52
53  resets:
54    minItems: 1
55    maxItems: 2
56    items:
57      - description: Torrent PHY reset.
58      - description: Torrent APB reset. This is optional.
59
60  reset-names:
61    minItems: 1
62    maxItems: 2
63    items:
64      - const: torrent_reset
65      - const: torrent_apb
66
67patternProperties:
68  '^phy@[0-3]$':
69    type: object
70    description:
71      Each group of PHY lanes with a single master lane should be represented as a sub-node.
72    properties:
73      reg:
74        description:
75          The master lane number. This is the lowest numbered lane in the lane group.
76        minimum: 0
77        maximum: 3
78
79      resets:
80        minItems: 1
81        maxItems: 4
82        description:
83          Contains list of resets, one per lane, to get all the link lanes out of reset.
84
85      "#phy-cells":
86        const: 0
87
88      cdns,phy-type:
89        description:
90          Specifies the type of PHY for which the group of PHY lanes is used.
91          Refer include/dt-bindings/phy/phy.h. Constants from the header should be used.
92        $ref: /schemas/types.yaml#/definitions/uint32
93        minimum: 1
94        maximum: 9
95
96      cdns,num-lanes:
97        description:
98          Number of lanes.
99        $ref: /schemas/types.yaml#/definitions/uint32
100        enum: [1, 2, 3, 4]
101        default: 4
102
103      cdns,ssc-mode:
104        description:
105          Specifies the Spread Spectrum Clocking mode used. It can be NO_SSC,
106          EXTERNAL_SSC or INTERNAL_SSC.
107          Refer include/dt-bindings/phy/phy-cadence-torrent.h for the constants to be used.
108        $ref: /schemas/types.yaml#/definitions/uint32
109        enum: [0, 1, 2]
110        default: 0
111
112      cdns,max-bit-rate:
113        description:
114          Maximum DisplayPort link bit rate to use, in Mbps
115        $ref: /schemas/types.yaml#/definitions/uint32
116        enum: [2160, 2430, 2700, 3240, 4320, 5400, 8100]
117        default: 8100
118
119    required:
120      - reg
121      - resets
122      - "#phy-cells"
123      - cdns,phy-type
124      - cdns,num-lanes
125
126    additionalProperties: false
127
128required:
129  - compatible
130  - "#address-cells"
131  - "#size-cells"
132  - clocks
133  - clock-names
134  - reg
135  - reg-names
136  - resets
137  - reset-names
138
139additionalProperties: false
140
141examples:
142  - |
143    #include <dt-bindings/phy/phy.h>
144
145    bus {
146        #address-cells = <2>;
147        #size-cells = <2>;
148
149        torrent-phy@f0fb500000 {
150            compatible = "cdns,torrent-phy";
151            reg = <0xf0 0xfb500000 0x0 0x00100000>,
152                  <0xf0 0xfb030a00 0x0 0x00000040>;
153            reg-names = "torrent_phy", "dptx_phy";
154            resets = <&phyrst 0>;
155            reset-names = "torrent_reset";
156            clocks = <&ref_clk>;
157            clock-names = "refclk";
158            #address-cells = <1>;
159            #size-cells = <0>;
160            phy@0 {
161                reg = <0>;
162                resets = <&phyrst 1>, <&phyrst 2>,
163                         <&phyrst 3>, <&phyrst 4>;
164                #phy-cells = <0>;
165                cdns,phy-type = <PHY_TYPE_DP>;
166                cdns,num-lanes = <4>;
167                cdns,max-bit-rate = <8100>;
168            };
169        };
170    };
171  - |
172    #include <dt-bindings/phy/phy.h>
173    #include <dt-bindings/phy/phy-cadence-torrent.h>
174
175    bus {
176        #address-cells = <2>;
177        #size-cells = <2>;
178
179        torrent-phy@f0fb500000 {
180            compatible = "cdns,torrent-phy";
181            reg = <0xf0 0xfb500000 0x0 0x00100000>;
182            reg-names = "torrent_phy";
183            resets = <&phyrst 0>, <&phyrst 1>;
184            reset-names = "torrent_reset", "torrent_apb";
185            clocks = <&ref_clk>;
186            clock-names = "refclk";
187            #address-cells = <1>;
188            #size-cells = <0>;
189            phy@0 {
190                reg = <0>;
191                resets = <&phyrst 2>, <&phyrst 3>;
192                #phy-cells = <0>;
193                cdns,phy-type = <PHY_TYPE_PCIE>;
194                cdns,num-lanes = <2>;
195                cdns,ssc-mode = <TORRENT_SERDES_NO_SSC>;
196            };
197
198            phy@2 {
199                reg = <2>;
200                resets = <&phyrst 4>;
201                #phy-cells = <0>;
202                cdns,phy-type = <PHY_TYPE_SGMII>;
203                cdns,num-lanes = <1>;
204                cdns,ssc-mode = <TORRENT_SERDES_NO_SSC>;
205            };
206        };
207    };
208...
209