Merge tag 'for-linus-5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / net / ti,k3-am654-cpsw-nuss.yaml
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
7 title: The TI AM654x/J721E SoC Gigabit Ethernet MAC (Media Access Controller) Device Tree Bindings
8
9 maintainers:
10   - Grygorii Strashko <grygorii.strashko@ti.com>
11   - Sekhar Nori <nsekhar@ti.com>
12
13 description:
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
46 properties:
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
138 patternProperties:
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     allOf:
149       - $ref: "ti,k3-am654-cpts.yaml#"
150     description:
151       CPSW Common Platform Time Sync (CPTS) module.
152
153 required:
154   - compatible
155   - reg
156   - reg-names
157   - ranges
158   - clocks
159   - clock-names
160   - power-domains
161   - dmas
162   - dma-names
163   - '#address-cells'
164   - '#size-cells'
165
166 additionalProperties: false
167
168 examples:
169   - |
170     #include <dt-bindings/pinctrl/k3.h>
171     #include <dt-bindings/soc/ti,sci_pm_domain.h>
172     #include <dt-bindings/net/ti-dp83867.h>
173     #include <dt-bindings/interrupt-controller/irq.h>
174     #include <dt-bindings/interrupt-controller/arm-gic.h>
175
176     bus {
177         #address-cells = <2>;
178         #size-cells = <2>;
179
180         mcu_cpsw: ethernet@46000000 {
181             compatible = "ti,am654-cpsw-nuss";
182             #address-cells = <2>;
183             #size-cells = <2>;
184             reg = <0x0 0x46000000 0x0 0x200000>;
185             reg-names = "cpsw_nuss";
186             ranges = <0x0 0x0 0x0 0x46000000 0x0 0x200000>;
187             dma-coherent;
188             clocks = <&k3_clks 5 10>;
189             clock-names = "fck";
190             power-domains = <&k3_pds 5 TI_SCI_PD_EXCLUSIVE>;
191             pinctrl-names = "default";
192             pinctrl-0 = <&mcu_cpsw_pins_default &mcu_mdio_pins_default>;
193
194             dmas = <&mcu_udmap 0xf000>,
195                    <&mcu_udmap 0xf001>,
196                    <&mcu_udmap 0xf002>,
197                    <&mcu_udmap 0xf003>,
198                    <&mcu_udmap 0xf004>,
199                    <&mcu_udmap 0xf005>,
200                    <&mcu_udmap 0xf006>,
201                    <&mcu_udmap 0xf007>,
202                    <&mcu_udmap 0x7000>;
203             dma-names = "tx0", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
204                         "rx";
205
206             ethernet-ports {
207                 #address-cells = <1>;
208                 #size-cells = <0>;
209
210                 cpsw_port1: port@1 {
211                     reg = <1>;
212                     ti,mac-only;
213                     label = "port1";
214                     ti,syscon-efuse = <&mcu_conf 0x200>;
215                     phys = <&phy_gmii_sel 1>;
216
217                     phy-mode = "rgmii-rxid";
218                     phy-handle = <&phy0>;
219                 };
220             };
221
222             davinci_mdio: mdio@f00 {
223                 compatible = "ti,cpsw-mdio","ti,davinci_mdio";
224                 reg = <0x0 0xf00 0x0 0x100>;
225                 #address-cells = <1>;
226                 #size-cells = <0>;
227                 clocks = <&k3_clks 5 10>;
228                 clock-names = "fck";
229                 bus_freq = <1000000>;
230
231                 phy0: ethernet-phy@0 {
232                     reg = <0>;
233                     ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
234                     ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
235                 };
236             };
237         };
238
239         cpts@3d000 {
240              compatible = "ti,am65-cpts";
241              reg = <0x0 0x3d000 0x0 0x400>;
242              clocks = <&k3_clks 18 2>;
243              clock-names = "cpts";
244              interrupts-extended = <&gic500 GIC_SPI 858 IRQ_TYPE_LEVEL_HIGH>;
245              interrupt-names = "cpts";
246              ti,cpts-ext-ts-inputs = <4>;
247              ti,cpts-periodic-outputs = <2>;
248         };
249     };