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,k3-am654-cpsw-nuss.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: The TI AM654x/J721E SoC Gigabit Ethernet MAC (Media Access Controller) Device Tree Bindings
8
9maintainers:
10  - Grygorii Strashko <grygorii.strashko@ti.com>
11  - Sekhar Nori <nsekhar@ti.com>
12
13description:
14  The TI AM654x/J721E SoC Gigabit Ethernet MAC (CPSW2G NUSS) has two ports
15  (one external) and provides Ethernet packet communication for the device.
16  CPSW2G NUSS features - the Reduced Gigabit Media Independent Interface (RGMII),
17  Reduced Media Independent Interface (RMII), the Management Data
18  Input/Output (MDIO) interface for physical layer device (PHY) management,
19  new version of Common Platform Time Sync (CPTS), updated Address Lookup
20  Engine (ALE).
21  One external Ethernet port (port 1) with selectable RGMII/RMII interfaces and
22  an internal Communications Port Programming Interface (CPPI5) (Host port 0).
23  Host Port 0 CPPI Packet Streaming Interface interface supports 8 TX channels
24  and one RX channels and operating by TI AM654x/J721E NAVSS Unified DMA
25  Peripheral Root Complex (UDMA-P) controller.
26  The CPSW2G NUSS is integrated into device MCU domain named MCU_CPSW0.
27
28  Additional features
29  priority level Quality Of Service (QOS) support (802.1p)
30  Support for Audio/Video Bridging (P802.1Qav/D6.0)
31  Support for IEEE 1588 Clock Synchronization (2008 Annex D, Annex E and Annex F)
32  Flow Control (802.3x) Support
33  Time Sensitive Network Support
34  IEEE P902.3br/D2.0 Interspersing Express Traffic
35  IEEE 802.1Qbv/D2.2 Enhancements for Scheduled Traffic
36  Configurable number of addresses plus VLANs
37  Configurable number of classifier/policers
38  VLAN support, 802.1Q compliant, Auto add port VLAN for untagged frames on
39  ingress, Auto VLAN removal on egress and auto pad to minimum frame size.
40  RX/TX csum offload
41
42  Specifications can be found at
43    http://www.ti.com/lit/ug/spruid7e/spruid7e.pdf
44    http://www.ti.com/lit/ug/spruil1a/spruil1a.pdf
45
46properties:
47  "#address-cells": true
48  "#size-cells": true
49
50  compatible:
51    oneOf:
52      - const: ti,am654-cpsw-nuss
53      - const: ti,j721e-cpsw-nuss
54
55  reg:
56    maxItems: 1
57    description:
58       The physical base address and size of full the CPSW2G NUSS IO range
59
60  reg-names:
61    items:
62      - const: cpsw_nuss
63
64  ranges: true
65
66  dma-coherent: true
67
68  clocks:
69    description: CPSW2G NUSS functional clock
70
71  clock-names:
72    items:
73      - const: fck
74
75  power-domains:
76    maxItems: 1
77
78  dmas:
79    maxItems: 9
80
81  dma-names:
82    items:
83      - const: tx0
84      - const: tx1
85      - const: tx2
86      - const: tx3
87      - const: tx4
88      - const: tx5
89      - const: tx6
90      - const: tx7
91      - const: rx
92
93  ethernet-ports:
94    type: object
95    properties:
96      '#address-cells':
97        const: 1
98      '#size-cells':
99        const: 0
100
101    patternProperties:
102      port@1:
103       type: object
104       description: CPSW2G NUSS external ports
105
106       $ref: ethernet-controller.yaml#
107
108       properties:
109         reg:
110           items:
111             - const: 1
112           description: CPSW port number
113
114         phys:
115           maxItems: 1
116           description:  phandle on phy-gmii-sel PHY
117
118         label:
119           description: label associated with this port
120
121         ti,mac-only:
122           $ref: /schemas/types.yaml#definitions/flag
123           description:
124             Specifies the port works in mac-only mode.
125
126         ti,syscon-efuse:
127           $ref: /schemas/types.yaml#definitions/phandle-array
128           description:
129             Phandle to the system control device node which provides access
130             to efuse IO range with MAC addresses
131
132       required:
133         - reg
134         - phys
135
136    additionalProperties: false
137
138patternProperties:
139  "^mdio@[0-9a-f]+$":
140    type: object
141    $ref: "ti,davinci-mdio.yaml#"
142
143    description:
144      CPSW MDIO bus.
145
146  "^cpts@[0-9a-f]+":
147    type: object
148    $ref: "ti,k3-am654-cpts.yaml#"
149    description:
150      CPSW Common Platform Time Sync (CPTS) module.
151
152required:
153  - compatible
154  - reg
155  - reg-names
156  - ranges
157  - clocks
158  - clock-names
159  - power-domains
160  - dmas
161  - dma-names
162  - '#address-cells'
163  - '#size-cells'
164
165additionalProperties: false
166
167examples:
168  - |
169    #include <dt-bindings/pinctrl/k3.h>
170    #include <dt-bindings/soc/ti,sci_pm_domain.h>
171    #include <dt-bindings/net/ti-dp83867.h>
172    #include <dt-bindings/interrupt-controller/irq.h>
173    #include <dt-bindings/interrupt-controller/arm-gic.h>
174
175    bus {
176        #address-cells = <2>;
177        #size-cells = <2>;
178
179        mcu_cpsw: ethernet@46000000 {
180            compatible = "ti,am654-cpsw-nuss";
181            #address-cells = <2>;
182            #size-cells = <2>;
183            reg = <0x0 0x46000000 0x0 0x200000>;
184            reg-names = "cpsw_nuss";
185            ranges = <0x0 0x0 0x0 0x46000000 0x0 0x200000>;
186            dma-coherent;
187            clocks = <&k3_clks 5 10>;
188            clock-names = "fck";
189            power-domains = <&k3_pds 5 TI_SCI_PD_EXCLUSIVE>;
190            pinctrl-names = "default";
191            pinctrl-0 = <&mcu_cpsw_pins_default &mcu_mdio_pins_default>;
192
193            dmas = <&mcu_udmap 0xf000>,
194                   <&mcu_udmap 0xf001>,
195                   <&mcu_udmap 0xf002>,
196                   <&mcu_udmap 0xf003>,
197                   <&mcu_udmap 0xf004>,
198                   <&mcu_udmap 0xf005>,
199                   <&mcu_udmap 0xf006>,
200                   <&mcu_udmap 0xf007>,
201                   <&mcu_udmap 0x7000>;
202            dma-names = "tx0", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
203                        "rx";
204
205            ethernet-ports {
206                #address-cells = <1>;
207                #size-cells = <0>;
208
209                cpsw_port1: port@1 {
210                    reg = <1>;
211                    ti,mac-only;
212                    label = "port1";
213                    ti,syscon-efuse = <&mcu_conf 0x200>;
214                    phys = <&phy_gmii_sel 1>;
215
216                    phy-mode = "rgmii-rxid";
217                    phy-handle = <&phy0>;
218                };
219            };
220
221            davinci_mdio: mdio@f00 {
222                compatible = "ti,cpsw-mdio","ti,davinci_mdio";
223                reg = <0x0 0xf00 0x0 0x100>;
224                #address-cells = <1>;
225                #size-cells = <0>;
226                clocks = <&k3_clks 5 10>;
227                clock-names = "fck";
228                bus_freq = <1000000>;
229
230                phy0: ethernet-phy@0 {
231                    reg = <0>;
232                    ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
233                    ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
234                };
235            };
236        };
237
238        cpts@3d000 {
239             compatible = "ti,am65-cpts";
240             reg = <0x0 0x3d000 0x0 0x400>;
241             clocks = <&k3_clks 18 2>;
242             clock-names = "cpts";
243             interrupts-extended = <&gic500 GIC_SPI 858 IRQ_TYPE_LEVEL_HIGH>;
244             interrupt-names = "cpts";
245             ti,cpts-ext-ts-inputs = <4>;
246             ti,cpts-periodic-outputs = <2>;
247        };
248    };
249