xref: /openbmc/linux/Documentation/devicetree/bindings/net/ti,icssg-prueth.yaml (revision 35b1b1fd96388d5e3cf179bf36bd8a4153baf4a3)
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,icssg-prueth.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Texas Instruments ICSSG PRUSS Ethernet
8
9maintainers:
10  - Md Danish Anwar <danishanwar@ti.com>
11
12description:
13  Ethernet based on the Programmable Real-Time Unit and Industrial
14  Communication Subsystem.
15
16allOf:
17  - $ref: /schemas/remoteproc/ti,pru-consumer.yaml#
18
19properties:
20  compatible:
21    enum:
22      - ti,am654-icssg-prueth  # for AM65x SoC family
23
24  sram:
25    $ref: /schemas/types.yaml#/definitions/phandle
26    description:
27      phandle to MSMC SRAM node
28
29  dmas:
30    maxItems: 10
31
32  dma-names:
33    items:
34      - const: tx0-0
35      - const: tx0-1
36      - const: tx0-2
37      - const: tx0-3
38      - const: tx1-0
39      - const: tx1-1
40      - const: tx1-2
41      - const: tx1-3
42      - const: rx0
43      - const: rx1
44
45  ti,mii-g-rt:
46    $ref: /schemas/types.yaml#/definitions/phandle
47    description:
48      phandle to MII_G_RT module's syscon regmap.
49
50  ti,mii-rt:
51    $ref: /schemas/types.yaml#/definitions/phandle
52    description:
53      phandle to MII_RT module's syscon regmap
54
55  interrupts:
56    maxItems: 2
57    description:
58      Interrupt specifiers to TX timestamp IRQ.
59
60  interrupt-names:
61    items:
62      - const: tx_ts0
63      - const: tx_ts1
64
65  ethernet-ports:
66    type: object
67    additionalProperties: false
68
69    properties:
70      '#address-cells':
71        const: 1
72      '#size-cells':
73        const: 0
74
75    patternProperties:
76      ^port@[0-1]$:
77        type: object
78        description: ICSSG PRUETH external ports
79        $ref: ethernet-controller.yaml#
80        unevaluatedProperties: false
81
82        properties:
83          reg:
84            items:
85              - enum: [0, 1]
86            description: ICSSG PRUETH port number
87
88          interrupts:
89            maxItems: 1
90
91          ti,syscon-rgmii-delay:
92            items:
93              - items:
94                  - description: phandle to system controller node
95                  - description: The offset to ICSSG control register
96            $ref: /schemas/types.yaml#/definitions/phandle-array
97            description:
98              phandle to system controller node and register offset
99              to ICSSG control register for RGMII transmit delay
100
101        required:
102          - reg
103    anyOf:
104      - required:
105          - port@0
106      - required:
107          - port@1
108
109required:
110  - compatible
111  - sram
112  - dmas
113  - dma-names
114  - ethernet-ports
115  - ti,mii-g-rt
116  - interrupts
117  - interrupt-names
118
119unevaluatedProperties: false
120
121examples:
122  - |
123    /* Example k3-am654 base board SR2.0, dual-emac */
124    pruss2_eth: ethernet {
125        compatible = "ti,am654-icssg-prueth";
126        pinctrl-names = "default";
127        pinctrl-0 = <&icssg2_rgmii_pins_default>;
128        sram = <&msmc_ram>;
129
130        ti,prus = <&pru2_0>, <&rtu2_0>, <&tx_pru2_0>,
131                  <&pru2_1>, <&rtu2_1>, <&tx_pru2_1>;
132        firmware-name = "ti-pruss/am65x-pru0-prueth-fw.elf",
133                        "ti-pruss/am65x-rtu0-prueth-fw.elf",
134                        "ti-pruss/am65x-txpru0-prueth-fw.elf",
135                        "ti-pruss/am65x-pru1-prueth-fw.elf",
136                        "ti-pruss/am65x-rtu1-prueth-fw.elf",
137                        "ti-pruss/am65x-txpru1-prueth-fw.elf";
138        ti,pruss-gp-mux-sel = <2>,      /* MII mode */
139                              <2>,
140                              <2>,
141                              <2>,      /* MII mode */
142                              <2>,
143                              <2>;
144        dmas = <&main_udmap 0xc300>, /* egress slice 0 */
145               <&main_udmap 0xc301>, /* egress slice 0 */
146               <&main_udmap 0xc302>, /* egress slice 0 */
147               <&main_udmap 0xc303>, /* egress slice 0 */
148               <&main_udmap 0xc304>, /* egress slice 1 */
149               <&main_udmap 0xc305>, /* egress slice 1 */
150               <&main_udmap 0xc306>, /* egress slice 1 */
151               <&main_udmap 0xc307>, /* egress slice 1 */
152               <&main_udmap 0x4300>, /* ingress slice 0 */
153               <&main_udmap 0x4301>; /* ingress slice 1 */
154        dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
155                    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
156                    "rx0", "rx1";
157        ti,mii-g-rt = <&icssg2_mii_g_rt>;
158        interrupt-parent = <&icssg2_intc>;
159        interrupts = <24 0 2>, <25 1 3>;
160        interrupt-names = "tx_ts0", "tx_ts1";
161        ethernet-ports {
162            #address-cells = <1>;
163            #size-cells = <0>;
164            pruss2_emac0: port@0 {
165                reg = <0>;
166                phy-handle = <&pruss2_eth0_phy>;
167                phy-mode = "rgmii-id";
168                interrupts-extended = <&icssg2_intc 24>;
169                ti,syscon-rgmii-delay = <&scm_conf 0x4120>;
170                /* Filled in by bootloader */
171                local-mac-address = [00 00 00 00 00 00];
172            };
173
174            pruss2_emac1: port@1 {
175                reg = <1>;
176                phy-handle = <&pruss2_eth1_phy>;
177                phy-mode = "rgmii-id";
178                interrupts-extended = <&icssg2_intc 25>;
179                ti,syscon-rgmii-delay = <&scm_conf 0x4124>;
180                /* Filled in by bootloader */
181                local-mac-address = [00 00 00 00 00 00];
182            };
183        };
184    };
185