Skip to content

Commit ef63fe7

Browse files
grygoriySdavem330
authored andcommitted
dt-bindings: net: ti: add new cpsw switch driver bindings
Add bindings for the new TI CPSW switch driver. Comparing to the legacy bindings (net/cpsw.txt): - ports definition follows DSA bindings (net/dsa/dsa.txt) and ports can be marked as "disabled" if not physically wired. - all deprecated properties dropped; - all legacy propertiies dropped which represent constant HW cpapbilities (cpdma_channels, ale_entries, bd_ram_size, mac_control, slaves, active_slave) - TI CPTS DT properties are reused as is, but grouped in "cpts" sub-node - TI Davinci MDIO DT bindings are reused as is, because Davinci MDIO is reused. Signed-off-by: Grygorii Strashko <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent c5013ac commit ef63fe7

File tree

1 file changed

+240
-0
lines changed

1 file changed

+240
-0
lines changed
Lines changed: 240 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,240 @@
1+
# SPDX-License-Identifier: GPL-2.0
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/net/ti,cpsw-switch.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: TI SoC Ethernet Switch Controller (CPSW) Device Tree Bindings
8+
9+
maintainers:
10+
- Grygorii Strashko <[email protected]>
11+
- Sekhar Nori <[email protected]>
12+
13+
description:
14+
The 3-port switch gigabit ethernet subsystem provides ethernet packet
15+
communication and can be configured as an ethernet switch. It provides the
16+
gigabit media independent interface (GMII),reduced gigabit media
17+
independent interface (RGMII), reduced media independent interface (RMII),
18+
the management data input output (MDIO) for physical layer device (PHY)
19+
management.
20+
21+
properties:
22+
compatible:
23+
oneOf:
24+
- const: ti,cpsw-switch
25+
- items:
26+
- const: ti,am335x-cpsw-switch
27+
- const: ti,cpsw-switch
28+
- items:
29+
- const: ti,am4372-cpsw-switch
30+
- const: ti,cpsw-switch
31+
- items:
32+
- const: ti,dra7-cpsw-switch
33+
- const: ti,cpsw-switch
34+
35+
reg:
36+
maxItems: 1
37+
description:
38+
The physical base address and size of full the CPSW module IO range
39+
40+
ranges: true
41+
42+
clocks:
43+
maxItems: 1
44+
description: CPSW functional clock
45+
46+
clock-names:
47+
maxItems: 1
48+
items:
49+
- const: fck
50+
51+
interrupts:
52+
items:
53+
- description: RX_THRESH interrupt
54+
- description: RX interrupt
55+
- description: TX interrupt
56+
- description: MISC interrupt
57+
58+
interrupt-names:
59+
items:
60+
- const: "rx_thresh"
61+
- const: "rx"
62+
- const: "tx"
63+
- const: "misc"
64+
65+
pinctrl-names: true
66+
67+
syscon:
68+
$ref: /schemas/types.yaml#definitions/phandle
69+
description:
70+
Phandle to the system control device node which provides access to
71+
efuse IO range with MAC addresses
72+
73+
74+
ethernet-ports:
75+
type: object
76+
properties:
77+
'#address-cells':
78+
const: 1
79+
'#size-cells':
80+
const: 0
81+
82+
patternProperties:
83+
"^port@[0-9]+$":
84+
type: object
85+
minItems: 1
86+
maxItems: 2
87+
description: CPSW external ports
88+
89+
allOf:
90+
- $ref: ethernet-controller.yaml#
91+
92+
properties:
93+
reg:
94+
maxItems: 1
95+
enum: [1, 2]
96+
description: CPSW port number
97+
98+
phys:
99+
$ref: /schemas/types.yaml#definitions/phandle-array
100+
maxItems: 1
101+
description: phandle on phy-gmii-sel PHY
102+
103+
label:
104+
$ref: /schemas/types.yaml#/definitions/string-array
105+
maxItems: 1
106+
description: label associated with this port
107+
108+
ti,dual-emac-pvid:
109+
$ref: /schemas/types.yaml#/definitions/uint32
110+
maxItems: 1
111+
minimum: 1
112+
maximum: 1024
113+
description:
114+
Specifies default PORT VID to be used to segregate
115+
ports. Default value - CPSW port number.
116+
117+
required:
118+
- reg
119+
- phys
120+
121+
mdio:
122+
type: object
123+
allOf:
124+
- $ref: "ti,davinci-mdio.yaml#"
125+
description:
126+
CPSW MDIO bus.
127+
128+
cpts:
129+
type: object
130+
description:
131+
The Common Platform Time Sync (CPTS) module
132+
133+
properties:
134+
clocks:
135+
maxItems: 1
136+
description: CPTS reference clock
137+
138+
clock-names:
139+
maxItems: 1
140+
items:
141+
- const: cpts
142+
143+
cpts_clock_mult:
144+
$ref: /schemas/types.yaml#/definitions/uint32
145+
description:
146+
Numerator to convert input clock ticks into ns
147+
148+
cpts_clock_shift:
149+
$ref: /schemas/types.yaml#/definitions/uint32
150+
description:
151+
Denominator to convert input clock ticks into ns.
152+
Mult and shift will be calculated basing on CPTS rftclk frequency if
153+
both cpts_clock_shift and cpts_clock_mult properties are not provided.
154+
155+
required:
156+
- clocks
157+
- clock-names
158+
159+
required:
160+
- compatible
161+
- reg
162+
- ranges
163+
- clocks
164+
- clock-names
165+
- interrupts
166+
- interrupt-names
167+
- '#address-cells'
168+
- '#size-cells'
169+
170+
examples:
171+
- |
172+
#include <dt-bindings/interrupt-controller/irq.h>
173+
#include <dt-bindings/interrupt-controller/arm-gic.h>
174+
#include <dt-bindings/clock/dra7.h>
175+
176+
mac_sw: switch@0 {
177+
compatible = "ti,dra7-cpsw-switch","ti,cpsw-switch";
178+
reg = <0x0 0x4000>;
179+
ranges = <0 0 0x4000>;
180+
clocks = <&gmac_main_clk>;
181+
clock-names = "fck";
182+
#address-cells = <1>;
183+
#size-cells = <1>;
184+
syscon = <&scm_conf>;
185+
inctrl-names = "default", "sleep";
186+
187+
interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>,
188+
<GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
189+
<GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH>,
190+
<GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>;
191+
interrupt-names = "rx_thresh", "rx", "tx", "misc";
192+
193+
ethernet-ports {
194+
#address-cells = <1>;
195+
#size-cells = <0>;
196+
197+
cpsw_port1: port@1 {
198+
reg = <1>;
199+
label = "port1";
200+
mac-address = [ 00 00 00 00 00 00 ];
201+
phys = <&phy_gmii_sel 1>;
202+
phy-handle = <&ethphy0_sw>;
203+
phy-mode = "rgmii";
204+
ti,dual_emac_pvid = <1>;
205+
};
206+
207+
cpsw_port2: port@2 {
208+
reg = <2>;
209+
label = "wan";
210+
mac-address = [ 00 00 00 00 00 00 ];
211+
phys = <&phy_gmii_sel 2>;
212+
phy-handle = <&ethphy1_sw>;
213+
phy-mode = "rgmii";
214+
ti,dual_emac_pvid = <2>;
215+
};
216+
};
217+
218+
davinci_mdio_sw: mdio@1000 {
219+
compatible = "ti,cpsw-mdio","ti,davinci_mdio";
220+
reg = <0x1000 0x100>;
221+
clocks = <&gmac_clkctrl DRA7_GMAC_GMAC_CLKCTRL 0>;
222+
clock-names = "fck";
223+
#address-cells = <1>;
224+
#size-cells = <0>;
225+
bus_freq = <1000000>;
226+
227+
ethphy0_sw: ethernet-phy@0 {
228+
reg = <0>;
229+
};
230+
231+
ethphy1_sw: ethernet-phy@1 {
232+
reg = <1>;
233+
};
234+
};
235+
236+
cpts {
237+
clocks = <&gmac_clkctrl DRA7_GMAC_GMAC_CLKCTRL 25>;
238+
clock-names = "cpts";
239+
};
240+
};

0 commit comments

Comments
 (0)