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