xref: /freebsd/sys/contrib/device-tree/Bindings/net/ti,k3-am654-cpsw-nuss.yaml (revision 7d0873ebb83b19ba1e8a89e679470d885efe12e3)
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,k3-am654-cpsw-nuss.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
77ef62cebSEmmanuel Vadottitle: The TI AM654x/J721E/AM642x SoC Gigabit Ethernet MAC (Media Access Controller)
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotmaintainers:
10*01950c46SEmmanuel Vadot  - Siddharth Vadapalli <s-vadapalli@ti.com>
11*01950c46SEmmanuel Vadot  - Roger Quadros <rogerq@kernel.org>
12c66ec88fSEmmanuel Vadot
13c66ec88fSEmmanuel Vadotdescription:
14c66ec88fSEmmanuel Vadot  The TI AM654x/J721E SoC Gigabit Ethernet MAC (CPSW2G NUSS) has two ports
15c66ec88fSEmmanuel Vadot  (one external) and provides Ethernet packet communication for the device.
165def4c47SEmmanuel Vadot  The TI AM642x SoC Gigabit Ethernet MAC (CPSW3G NUSS) has three ports
175def4c47SEmmanuel Vadot  (two external) and provides Ethernet packet communication and switching.
18c66ec88fSEmmanuel Vadot
195def4c47SEmmanuel Vadot  The internal Communications Port Programming Interface (CPPI5) (Host port 0).
205def4c47SEmmanuel Vadot  Host Port 0 CPPI Packet Streaming Interface interface supports 8 TX channels
215def4c47SEmmanuel Vadot  and one RX channels and operating by NAVSS Unified DMA  Peripheral Root
225def4c47SEmmanuel Vadot  Complex (UDMA-P) controller.
235def4c47SEmmanuel Vadot
245def4c47SEmmanuel Vadot  CPSWxG features
255def4c47SEmmanuel Vadot  updated Address Lookup Engine (ALE).
26c66ec88fSEmmanuel Vadot  priority level Quality Of Service (QOS) support (802.1p)
27c66ec88fSEmmanuel Vadot  Support for Audio/Video Bridging (P802.1Qav/D6.0)
28c66ec88fSEmmanuel Vadot  Support for IEEE 1588 Clock Synchronization (2008 Annex D, Annex E and Annex F)
29c66ec88fSEmmanuel Vadot  Flow Control (802.3x) Support
30c66ec88fSEmmanuel Vadot  Time Sensitive Network Support
31c66ec88fSEmmanuel Vadot  IEEE P902.3br/D2.0 Interspersing Express Traffic
32c66ec88fSEmmanuel Vadot  IEEE 802.1Qbv/D2.2 Enhancements for Scheduled Traffic
33c66ec88fSEmmanuel Vadot  Configurable number of addresses plus VLANs
34c66ec88fSEmmanuel Vadot  Configurable number of classifier/policers
35c66ec88fSEmmanuel Vadot  VLAN support, 802.1Q compliant, Auto add port VLAN for untagged frames on
36c66ec88fSEmmanuel Vadot  ingress, Auto VLAN removal on egress and auto pad to minimum frame size.
37c66ec88fSEmmanuel Vadot  RX/TX csum offload
385def4c47SEmmanuel Vadot  Management Data Input/Output (MDIO) interface for PHYs management
395def4c47SEmmanuel Vadot  RMII/RGMII Interfaces support
405def4c47SEmmanuel Vadot  new version of Common Platform Time Sync (CPTS)
415def4c47SEmmanuel Vadot
425def4c47SEmmanuel Vadot  The CPSWxG NUSS is integrated into
435def4c47SEmmanuel Vadot    device MCU domain named MCU_CPSW0 on AM654x/J721E SoC.
445def4c47SEmmanuel Vadot    device MAIN domain named CPSW0 on AM642x SoC.
45c66ec88fSEmmanuel Vadot
46c66ec88fSEmmanuel Vadot  Specifications can be found at
475def4c47SEmmanuel Vadot    https://www.ti.com/lit/pdf/spruid7
485def4c47SEmmanuel Vadot    https://www.ti.com/lit/zip/spruil1
495def4c47SEmmanuel Vadot    https://www.ti.com/lit/pdf/spruim2
50c66ec88fSEmmanuel Vadot
51c66ec88fSEmmanuel Vadotproperties:
52c66ec88fSEmmanuel Vadot  "#address-cells": true
53c66ec88fSEmmanuel Vadot  "#size-cells": true
54c66ec88fSEmmanuel Vadot
55c66ec88fSEmmanuel Vadot  compatible:
56354d7675SEmmanuel Vadot    enum:
57fac71e4eSEmmanuel Vadot      - ti,am642-cpsw-nuss
58354d7675SEmmanuel Vadot      - ti,am654-cpsw-nuss
597ef62cebSEmmanuel Vadot      - ti,j7200-cpswxg-nuss
60354d7675SEmmanuel Vadot      - ti,j721e-cpsw-nuss
61cb7aa33aSEmmanuel Vadot      - ti,j721e-cpswxg-nuss
62fac71e4eSEmmanuel Vadot      - ti,j784s4-cpswxg-nuss
63c66ec88fSEmmanuel Vadot
64c66ec88fSEmmanuel Vadot  reg:
65c66ec88fSEmmanuel Vadot    maxItems: 1
66c66ec88fSEmmanuel Vadot    description:
675def4c47SEmmanuel Vadot      The physical base address and size of full the CPSWxG NUSS IO range
68c66ec88fSEmmanuel Vadot
69c66ec88fSEmmanuel Vadot  reg-names:
70c66ec88fSEmmanuel Vadot    items:
71c66ec88fSEmmanuel Vadot      - const: cpsw_nuss
72c66ec88fSEmmanuel Vadot
73c66ec88fSEmmanuel Vadot  ranges: true
74c66ec88fSEmmanuel Vadot
75c66ec88fSEmmanuel Vadot  dma-coherent: true
76c66ec88fSEmmanuel Vadot
77c66ec88fSEmmanuel Vadot  clocks:
785def4c47SEmmanuel Vadot    maxItems: 1
795def4c47SEmmanuel Vadot    description: CPSWxG NUSS functional clock
80c66ec88fSEmmanuel Vadot
81c66ec88fSEmmanuel Vadot  clock-names:
82c66ec88fSEmmanuel Vadot    items:
83c66ec88fSEmmanuel Vadot      - const: fck
84c66ec88fSEmmanuel Vadot
855def4c47SEmmanuel Vadot  assigned-clock-parents: true
865def4c47SEmmanuel Vadot
875def4c47SEmmanuel Vadot  assigned-clocks: true
885def4c47SEmmanuel Vadot
89c66ec88fSEmmanuel Vadot  power-domains:
90c66ec88fSEmmanuel Vadot    maxItems: 1
91c66ec88fSEmmanuel Vadot
92c66ec88fSEmmanuel Vadot  dmas:
93c66ec88fSEmmanuel Vadot    maxItems: 9
94c66ec88fSEmmanuel Vadot
95c66ec88fSEmmanuel Vadot  dma-names:
96c66ec88fSEmmanuel Vadot    items:
97c66ec88fSEmmanuel Vadot      - const: tx0
98c66ec88fSEmmanuel Vadot      - const: tx1
99c66ec88fSEmmanuel Vadot      - const: tx2
100c66ec88fSEmmanuel Vadot      - const: tx3
101c66ec88fSEmmanuel Vadot      - const: tx4
102c66ec88fSEmmanuel Vadot      - const: tx5
103c66ec88fSEmmanuel Vadot      - const: tx6
104c66ec88fSEmmanuel Vadot      - const: tx7
105c66ec88fSEmmanuel Vadot      - const: rx
106c66ec88fSEmmanuel Vadot
107c66ec88fSEmmanuel Vadot  ethernet-ports:
108c66ec88fSEmmanuel Vadot    type: object
109c66ec88fSEmmanuel Vadot    properties:
110c66ec88fSEmmanuel Vadot      '#address-cells':
111c66ec88fSEmmanuel Vadot        const: 1
112c66ec88fSEmmanuel Vadot      '#size-cells':
113c66ec88fSEmmanuel Vadot        const: 0
114c66ec88fSEmmanuel Vadot
115c66ec88fSEmmanuel Vadot    patternProperties:
116cb7aa33aSEmmanuel Vadot      "^port@[1-8]$":
117c66ec88fSEmmanuel Vadot        type: object
1185def4c47SEmmanuel Vadot        description: CPSWxG NUSS external ports
119c66ec88fSEmmanuel Vadot
120c66ec88fSEmmanuel Vadot        $ref: ethernet-controller.yaml#
1217ef62cebSEmmanuel Vadot        unevaluatedProperties: false
122c66ec88fSEmmanuel Vadot
123c66ec88fSEmmanuel Vadot        properties:
124c66ec88fSEmmanuel Vadot          reg:
1255def4c47SEmmanuel Vadot            minimum: 1
126cb7aa33aSEmmanuel Vadot            maximum: 8
127c66ec88fSEmmanuel Vadot            description: CPSW port number
128c66ec88fSEmmanuel Vadot
129c66ec88fSEmmanuel Vadot          phys:
130fac71e4eSEmmanuel Vadot            minItems: 1
131fac71e4eSEmmanuel Vadot            items:
132fac71e4eSEmmanuel Vadot              - description: CPSW MAC's PHY.
133fac71e4eSEmmanuel Vadot              - description: Serdes PHY. Serdes PHY is required only if
134fac71e4eSEmmanuel Vadot                             the Serdes has to be configured in the
135fac71e4eSEmmanuel Vadot                             Single-Link configuration.
136fac71e4eSEmmanuel Vadot
137fac71e4eSEmmanuel Vadot          phy-names:
138fac71e4eSEmmanuel Vadot            minItems: 1
139fac71e4eSEmmanuel Vadot            items:
140fac71e4eSEmmanuel Vadot              - const: mac
141fac71e4eSEmmanuel Vadot              - const: serdes
142c66ec88fSEmmanuel Vadot
143c66ec88fSEmmanuel Vadot          label:
144c66ec88fSEmmanuel Vadot            description: label associated with this port
145c66ec88fSEmmanuel Vadot
146c66ec88fSEmmanuel Vadot          ti,mac-only:
1475def4c47SEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/flag
148c66ec88fSEmmanuel Vadot            description:
149c66ec88fSEmmanuel Vadot              Specifies the port works in mac-only mode.
150c66ec88fSEmmanuel Vadot
151c66ec88fSEmmanuel Vadot          ti,syscon-efuse:
1525def4c47SEmmanuel Vadot            $ref: /schemas/types.yaml#/definitions/phandle-array
153c9ccf3a3SEmmanuel Vadot            items:
154c9ccf3a3SEmmanuel Vadot              - items:
155c9ccf3a3SEmmanuel Vadot                  - description: Phandle to the system control device node which
156c9ccf3a3SEmmanuel Vadot                      provides access to efuse
157c9ccf3a3SEmmanuel Vadot                  - description: offset to efuse registers???
158c66ec88fSEmmanuel Vadot            description:
159c66ec88fSEmmanuel Vadot              Phandle to the system control device node which provides access
160c66ec88fSEmmanuel Vadot              to efuse IO range with MAC addresses
161c66ec88fSEmmanuel Vadot
162c66ec88fSEmmanuel Vadot        required:
163c66ec88fSEmmanuel Vadot          - reg
164c66ec88fSEmmanuel Vadot          - phys
165c66ec88fSEmmanuel Vadot
166c66ec88fSEmmanuel Vadot    additionalProperties: false
167c66ec88fSEmmanuel Vadot
168c66ec88fSEmmanuel VadotpatternProperties:
169c66ec88fSEmmanuel Vadot  "^mdio@[0-9a-f]+$":
170c66ec88fSEmmanuel Vadot    type: object
171f126890aSEmmanuel Vadot    $ref: ti,davinci-mdio.yaml#
172c66ec88fSEmmanuel Vadot
173c66ec88fSEmmanuel Vadot    description:
174c66ec88fSEmmanuel Vadot      CPSW MDIO bus.
175c66ec88fSEmmanuel Vadot
176c66ec88fSEmmanuel Vadot  "^cpts@[0-9a-f]+":
177c66ec88fSEmmanuel Vadot    type: object
178f126890aSEmmanuel Vadot    $ref: ti,k3-am654-cpts.yaml#
179c66ec88fSEmmanuel Vadot    description:
180c66ec88fSEmmanuel Vadot      CPSW Common Platform Time Sync (CPTS) module.
181c66ec88fSEmmanuel Vadot
182c66ec88fSEmmanuel Vadotrequired:
183c66ec88fSEmmanuel Vadot  - compatible
184c66ec88fSEmmanuel Vadot  - reg
185c66ec88fSEmmanuel Vadot  - reg-names
186c66ec88fSEmmanuel Vadot  - ranges
187c66ec88fSEmmanuel Vadot  - clocks
188c66ec88fSEmmanuel Vadot  - clock-names
189c66ec88fSEmmanuel Vadot  - power-domains
190c66ec88fSEmmanuel Vadot  - dmas
191c66ec88fSEmmanuel Vadot  - dma-names
192c66ec88fSEmmanuel Vadot  - '#address-cells'
193c66ec88fSEmmanuel Vadot  - '#size-cells'
194c66ec88fSEmmanuel Vadot
1957ef62cebSEmmanuel VadotallOf:
1967ef62cebSEmmanuel Vadot  - if:
1977ef62cebSEmmanuel Vadot      not:
1987ef62cebSEmmanuel Vadot        properties:
1997ef62cebSEmmanuel Vadot          compatible:
2007ef62cebSEmmanuel Vadot            contains:
201fac71e4eSEmmanuel Vadot              enum:
202fac71e4eSEmmanuel Vadot                - ti,j721e-cpswxg-nuss
203fac71e4eSEmmanuel Vadot                - ti,j784s4-cpswxg-nuss
2047ef62cebSEmmanuel Vadot    then:
2057ef62cebSEmmanuel Vadot      properties:
2067ef62cebSEmmanuel Vadot        ethernet-ports:
2077ef62cebSEmmanuel Vadot          patternProperties:
208cb7aa33aSEmmanuel Vadot            "^port@[5-8]$": false
209cb7aa33aSEmmanuel Vadot            "^port@[1-4]$":
210cb7aa33aSEmmanuel Vadot              properties:
211cb7aa33aSEmmanuel Vadot                reg:
212cb7aa33aSEmmanuel Vadot                  minimum: 1
213cb7aa33aSEmmanuel Vadot                  maximum: 4
214cb7aa33aSEmmanuel Vadot
215cb7aa33aSEmmanuel Vadot  - if:
216cb7aa33aSEmmanuel Vadot      not:
217cb7aa33aSEmmanuel Vadot        properties:
218cb7aa33aSEmmanuel Vadot          compatible:
219cb7aa33aSEmmanuel Vadot            contains:
220cb7aa33aSEmmanuel Vadot              enum:
221cb7aa33aSEmmanuel Vadot                - ti,j7200-cpswxg-nuss
222fac71e4eSEmmanuel Vadot                - ti,j721e-cpswxg-nuss
223fac71e4eSEmmanuel Vadot                - ti,j784s4-cpswxg-nuss
224cb7aa33aSEmmanuel Vadot    then:
225cb7aa33aSEmmanuel Vadot      properties:
226cb7aa33aSEmmanuel Vadot        ethernet-ports:
227cb7aa33aSEmmanuel Vadot          patternProperties:
228cb7aa33aSEmmanuel Vadot            "^port@[3-8]$": false
229cb7aa33aSEmmanuel Vadot            "^port@[1-2]$":
230cb7aa33aSEmmanuel Vadot              properties:
231cb7aa33aSEmmanuel Vadot                reg:
232cb7aa33aSEmmanuel Vadot                  minimum: 1
233cb7aa33aSEmmanuel Vadot                  maximum: 2
2347ef62cebSEmmanuel Vadot
235c66ec88fSEmmanuel VadotadditionalProperties: false
236c66ec88fSEmmanuel Vadot
237c66ec88fSEmmanuel Vadotexamples:
238c66ec88fSEmmanuel Vadot  - |
239c66ec88fSEmmanuel Vadot    #include <dt-bindings/soc/ti,sci_pm_domain.h>
240c66ec88fSEmmanuel Vadot    #include <dt-bindings/net/ti-dp83867.h>
241c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
242c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
243c66ec88fSEmmanuel Vadot
244c66ec88fSEmmanuel Vadot    bus {
245c66ec88fSEmmanuel Vadot        #address-cells = <2>;
246c66ec88fSEmmanuel Vadot        #size-cells = <2>;
247c66ec88fSEmmanuel Vadot
248c66ec88fSEmmanuel Vadot        mcu_cpsw: ethernet@46000000 {
249c66ec88fSEmmanuel Vadot            compatible = "ti,am654-cpsw-nuss";
250c66ec88fSEmmanuel Vadot            #address-cells = <2>;
251c66ec88fSEmmanuel Vadot            #size-cells = <2>;
252c66ec88fSEmmanuel Vadot            reg = <0x0 0x46000000 0x0 0x200000>;
253c66ec88fSEmmanuel Vadot            reg-names = "cpsw_nuss";
254c66ec88fSEmmanuel Vadot            ranges = <0x0 0x0 0x0 0x46000000 0x0 0x200000>;
255c66ec88fSEmmanuel Vadot            dma-coherent;
256c66ec88fSEmmanuel Vadot            clocks = <&k3_clks 5 10>;
257c66ec88fSEmmanuel Vadot            clock-names = "fck";
258c66ec88fSEmmanuel Vadot            power-domains = <&k3_pds 5 TI_SCI_PD_EXCLUSIVE>;
259c66ec88fSEmmanuel Vadot            pinctrl-names = "default";
260c66ec88fSEmmanuel Vadot            pinctrl-0 = <&mcu_cpsw_pins_default &mcu_mdio_pins_default>;
261c66ec88fSEmmanuel Vadot
262c66ec88fSEmmanuel Vadot            dmas = <&mcu_udmap 0xf000>,
263c66ec88fSEmmanuel Vadot                   <&mcu_udmap 0xf001>,
264c66ec88fSEmmanuel Vadot                   <&mcu_udmap 0xf002>,
265c66ec88fSEmmanuel Vadot                   <&mcu_udmap 0xf003>,
266c66ec88fSEmmanuel Vadot                   <&mcu_udmap 0xf004>,
267c66ec88fSEmmanuel Vadot                   <&mcu_udmap 0xf005>,
268c66ec88fSEmmanuel Vadot                   <&mcu_udmap 0xf006>,
269c66ec88fSEmmanuel Vadot                   <&mcu_udmap 0xf007>,
270c66ec88fSEmmanuel Vadot                   <&mcu_udmap 0x7000>;
271c66ec88fSEmmanuel Vadot            dma-names = "tx0", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
272c66ec88fSEmmanuel Vadot                        "rx";
273c66ec88fSEmmanuel Vadot
274c66ec88fSEmmanuel Vadot            ethernet-ports {
275c66ec88fSEmmanuel Vadot                #address-cells = <1>;
276c66ec88fSEmmanuel Vadot                #size-cells = <0>;
277c66ec88fSEmmanuel Vadot
278c66ec88fSEmmanuel Vadot                cpsw_port1: port@1 {
279c66ec88fSEmmanuel Vadot                    reg = <1>;
280c66ec88fSEmmanuel Vadot                    ti,mac-only;
281c66ec88fSEmmanuel Vadot                    label = "port1";
282c66ec88fSEmmanuel Vadot                    ti,syscon-efuse = <&mcu_conf 0x200>;
283c66ec88fSEmmanuel Vadot                    phys = <&phy_gmii_sel 1>;
284c66ec88fSEmmanuel Vadot
285c66ec88fSEmmanuel Vadot                    phy-mode = "rgmii-rxid";
286c66ec88fSEmmanuel Vadot                    phy-handle = <&phy0>;
287c66ec88fSEmmanuel Vadot                };
288c66ec88fSEmmanuel Vadot            };
289c66ec88fSEmmanuel Vadot
290c66ec88fSEmmanuel Vadot            davinci_mdio: mdio@f00 {
291c66ec88fSEmmanuel Vadot                compatible = "ti,cpsw-mdio","ti,davinci_mdio";
292c66ec88fSEmmanuel Vadot                reg = <0x0 0xf00 0x0 0x100>;
293c66ec88fSEmmanuel Vadot                #address-cells = <1>;
294c66ec88fSEmmanuel Vadot                #size-cells = <0>;
295c66ec88fSEmmanuel Vadot                clocks = <&k3_clks 5 10>;
296c66ec88fSEmmanuel Vadot                clock-names = "fck";
297c66ec88fSEmmanuel Vadot                bus_freq = <1000000>;
298c66ec88fSEmmanuel Vadot
299c66ec88fSEmmanuel Vadot                phy0: ethernet-phy@0 {
300c66ec88fSEmmanuel Vadot                    reg = <0>;
301c66ec88fSEmmanuel Vadot                    ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
302c66ec88fSEmmanuel Vadot                    ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
303c66ec88fSEmmanuel Vadot                };
304c66ec88fSEmmanuel Vadot            };
305c66ec88fSEmmanuel Vadot        };
306c66ec88fSEmmanuel Vadot
307c66ec88fSEmmanuel Vadot        cpts@3d000 {
308c66ec88fSEmmanuel Vadot             compatible = "ti,am65-cpts";
309c66ec88fSEmmanuel Vadot             reg = <0x0 0x3d000 0x0 0x400>;
310c66ec88fSEmmanuel Vadot             clocks = <&k3_clks 18 2>;
311c66ec88fSEmmanuel Vadot             clock-names = "cpts";
312c66ec88fSEmmanuel Vadot             interrupts-extended = <&gic500 GIC_SPI 858 IRQ_TYPE_LEVEL_HIGH>;
313c66ec88fSEmmanuel Vadot             interrupt-names = "cpts";
314c66ec88fSEmmanuel Vadot             ti,cpts-ext-ts-inputs = <4>;
315c66ec88fSEmmanuel Vadot             ti,cpts-periodic-outputs = <2>;
316c66ec88fSEmmanuel Vadot        };
317c66ec88fSEmmanuel Vadot    };
318