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