xref: /linux/Documentation/devicetree/bindings/net/ti,icssm-prueth.yaml (revision d30c1683aaecb93d2ab95685dc4300a33d3cea7a)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/net/ti,icssm-prueth.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Texas Instruments ICSSM PRUSS Ethernet
8
9maintainers:
10  - Roger Quadros <rogerq@ti.com>
11  - Andrew F. Davis <afd@ti.com>
12  - Parvathi Pudi <parvathi@couthit.com>
13  - Basharath Hussain Khaja <basharath@couthit.com>
14
15description:
16  Ethernet based on the Programmable Real-Time Unit and Industrial
17  Communication Subsystem.
18
19properties:
20  compatible:
21    enum:
22      - ti,am57-prueth     # for AM57x SoC family
23      - ti,am4376-prueth   # for AM43x SoC family
24      - ti,am3359-prueth   # for AM33x SoC family
25
26  sram:
27    $ref: /schemas/types.yaml#/definitions/phandle
28    description:
29      phandle to OCMC SRAM node
30
31  ti,mii-rt:
32    $ref: /schemas/types.yaml#/definitions/phandle
33    description:
34      phandle to the MII_RT peripheral for ICSS
35
36  ti,iep:
37    $ref: /schemas/types.yaml#/definitions/phandle
38    description:
39      phandle to IEP (Industrial Ethernet Peripheral) for ICSS
40
41  ti,ecap:
42    $ref: /schemas/types.yaml#/definitions/phandle
43    description:
44      phandle to Enhanced Capture (eCAP) event for ICSS
45
46  interrupts:
47    items:
48      - description: High priority Rx Interrupt specifier.
49      - description: Low priority Rx Interrupt specifier.
50
51  interrupt-names:
52    items:
53      - const: rx_hp
54      - const: rx_lp
55
56  ethernet-ports:
57    type: object
58    additionalProperties: false
59
60    properties:
61      '#address-cells':
62        const: 1
63      '#size-cells':
64        const: 0
65
66    patternProperties:
67      ^ethernet-port@[0-1]$:
68        type: object
69        description: ICSSM PRUETH external ports
70        $ref: ethernet-controller.yaml#
71        unevaluatedProperties: false
72
73        properties:
74          reg:
75            items:
76              - enum: [0, 1]
77            description: ICSSM PRUETH port number
78
79          interrupts:
80            maxItems: 3
81
82          interrupt-names:
83            items:
84              - const: rx
85              - const: emac_ptp_tx
86              - const: hsr_ptp_tx
87
88        required:
89          - reg
90
91    anyOf:
92      - required:
93          - ethernet-port@0
94      - required:
95          - ethernet-port@1
96
97required:
98  - compatible
99  - sram
100  - ti,mii-rt
101  - ti,iep
102  - ti,ecap
103  - ethernet-ports
104  - interrupts
105  - interrupt-names
106
107allOf:
108  - $ref: /schemas/remoteproc/ti,pru-consumer.yaml#
109
110unevaluatedProperties: false
111
112examples:
113  - |
114    /* Dual-MAC Ethernet application node on PRU-ICSS2 */
115    pruss2_eth: pruss2-eth {
116      compatible = "ti,am57-prueth";
117      ti,prus = <&pru2_0>, <&pru2_1>;
118      sram = <&ocmcram1>;
119      ti,mii-rt = <&pruss2_mii_rt>;
120      ti,iep = <&pruss2_iep>;
121      ti,ecap = <&pruss2_ecap>;
122      interrupts = <20 2 2>, <21 3 3>;
123      interrupt-names = "rx_hp", "rx_lp";
124      interrupt-parent = <&pruss2_intc>;
125
126      ethernet-ports {
127        #address-cells = <1>;
128        #size-cells = <0>;
129        pruss2_emac0: ethernet-port@0 {
130          reg = <0>;
131          phy-handle = <&pruss2_eth0_phy>;
132          phy-mode = "mii";
133          interrupts = <20 2 2>, <26 6 6>, <23 6 6>;
134          interrupt-names = "rx", "emac_ptp_tx", "hsr_ptp_tx";
135          /* Filled in by bootloader */
136          local-mac-address = [00 00 00 00 00 00];
137        };
138
139        pruss2_emac1: ethernet-port@1 {
140          reg = <1>;
141          phy-handle = <&pruss2_eth1_phy>;
142          phy-mode = "mii";
143          interrupts = <21 3 3>, <27 9 7>, <24 9 7>;
144          interrupt-names = "rx", "emac_ptp_tx", "hsr_ptp_tx";
145          /* Filled in by bootloader */
146          local-mac-address = [00 00 00 00 00 00];
147        };
148      };
149    };
150  - |
151    /* Dual-MAC Ethernet application node on PRU-ICSS1 */
152    pruss1_eth: pruss1-eth {
153      compatible = "ti,am4376-prueth";
154      ti,prus = <&pru1_0>, <&pru1_1>;
155      sram = <&ocmcram>;
156      ti,mii-rt = <&pruss1_mii_rt>;
157      ti,iep = <&pruss1_iep>;
158      ti,ecap = <&pruss1_ecap>;
159      interrupts = <20 2 2>, <21 3 3>;
160      interrupt-names = "rx_hp", "rx_lp";
161      interrupt-parent = <&pruss1_intc>;
162
163      pinctrl-0 = <&pruss1_eth_default>;
164      pinctrl-names = "default";
165
166      ethernet-ports {
167        #address-cells = <1>;
168        #size-cells = <0>;
169        pruss1_emac0: ethernet-port@0 {
170          reg = <0>;
171          phy-handle = <&pruss1_eth0_phy>;
172          phy-mode = "mii";
173          interrupts = <20 2 2>, <26 6 6>, <23 6 6>;
174          interrupt-names = "rx", "emac_ptp_tx",
175                                          "hsr_ptp_tx";
176          /* Filled in by bootloader */
177          local-mac-address = [00 00 00 00 00 00];
178        };
179
180        pruss1_emac1: ethernet-port@1 {
181          reg = <1>;
182          phy-handle = <&pruss1_eth1_phy>;
183          phy-mode = "mii";
184          interrupts = <21 3 3>, <27 9 7>, <24 9 7>;
185          interrupt-names = "rx", "emac_ptp_tx",
186                                          "hsr_ptp_tx";
187          /* Filled in by bootloader */
188          local-mac-address = [00 00 00 00 00 00];
189        };
190      };
191    };
192  - |
193    /* Dual-MAC Ethernet application node on PRU-ICSS */
194    pruss_eth: pruss-eth {
195      compatible = "ti,am3359-prueth";
196      ti,prus = <&pru0>, <&pru1>;
197      sram = <&ocmcram>;
198      ti,mii-rt = <&pruss_mii_rt>;
199      ti,iep = <&pruss_iep>;
200      ti,ecap = <&pruss_ecap>;
201      interrupts = <20 2 2>, <21 3 3>;
202      interrupt-names = "rx_hp", "rx_lp";
203      interrupt-parent = <&pruss_intc>;
204
205      pinctrl-0 = <&pruss_eth_default>;
206      pinctrl-names = "default";
207
208      ethernet-ports {
209        #address-cells = <1>;
210        #size-cells = <0>;
211        pruss_emac0: ethernet-port@0 {
212          reg = <0>;
213          phy-handle = <&pruss_eth0_phy>;
214          phy-mode = "mii";
215          interrupts = <20 2 2>, <26 6 6>, <23 6 6>;
216          interrupt-names = "rx", "emac_ptp_tx",
217                                          "hsr_ptp_tx";
218          /* Filled in by bootloader */
219          local-mac-address = [00 00 00 00 00 00];
220        };
221
222        pruss_emac1: ethernet-port@1 {
223          reg = <1>;
224          phy-handle = <&pruss_eth1_phy>;
225          phy-mode = "mii";
226          interrupts = <21 3 3>, <27 9 7>, <24 9 7>;
227          interrupt-names = "rx", "emac_ptp_tx",
228                                          "hsr_ptp_tx";
229          /* Filled in by bootloader */
230          local-mac-address = [00 00 00 00 00 00];
231        };
232      };
233    };
234