Skip to content

Commit 172e604

Browse files
danish-tidavem330
authored andcommitted
dt-bindings: net: Add ICSSG Ethernet
Add a YAML binding document for the ICSSG Programmable real time unit based Ethernet hardware. The ICSSG driver uses the PRU and PRUSS consumer APIs to interface the PRUs and load/run the firmware for supporting ethernet functionality. Reviewed-by: Rob Herring <[email protected]> Signed-off-by: MD Danish Anwar <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent b8d5008 commit 172e604

File tree

1 file changed

+184
-0
lines changed

1 file changed

+184
-0
lines changed
Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
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+
7+
title: Texas Instruments ICSSG PRUSS Ethernet
8+
9+
maintainers:
10+
- Md Danish Anwar <[email protected]>
11+
12+
description:
13+
Ethernet based on the Programmable Real-Time Unit and Industrial
14+
Communication Subsystem.
15+
16+
allOf:
17+
- $ref: /schemas/remoteproc/ti,pru-consumer.yaml#
18+
19+
properties:
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+
109+
required:
110+
- compatible
111+
- sram
112+
- dmas
113+
- dma-names
114+
- ethernet-ports
115+
- ti,mii-g-rt
116+
- interrupts
117+
- interrupt-names
118+
119+
unevaluatedProperties: false
120+
121+
examples:
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+
};

0 commit comments

Comments
 (0)