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