| This document describes the device tree bindings associated with the | |
| keystone network coprocessor(NetCP) driver support. | |
| The network coprocessor (NetCP) is a hardware accelerator that processes | |
| Ethernet packets. NetCP has a gigabit Ethernet (GbE) subsystem with a ethernet | |
| switch sub-module to send and receive packets. NetCP also includes a packet | |
| accelerator (PA) module to perform packet classification operations such as | |
| header matching, and packet modification operations such as checksum | |
| generation. NetCP can also optionally include a Security Accelerator (SA) | |
| capable of performing IPSec operations on ingress/egress packets. | |
| Keystone II SoC's also have a 10 Gigabit Ethernet Subsystem (XGbE) which | |
| includes a 3-port Ethernet switch sub-module capable of 10Gb/s and 1Gb/s rates | |
| per Ethernet port. | |
| Keystone NetCP driver has a plug-in module architecture where each of the NetCP | |
| sub-modules exist as a loadable kernel module which plug in to the netcp core. | |
| These sub-modules are represented as "netcp-devices" in the dts bindings. It is | |
| mandatory to have the ethernet switch sub-module for the ethernet interface to | |
| be operational. Any other sub-module like the PA is optional. | |
| NetCP Ethernet SubSystem Layout: | |
| ----------------------------- | |
| NetCP subsystem(10G or 1G) | |
| ----------------------------- | |
| | | |
| |-> NetCP Devices -> | | |
| | |-> GBE/XGBE Switch | |
| | | | |
| | |-> Packet Accelerator | |
| | | | |
| | |-> Security Accelerator | |
| | | |
| | | |
| | | |
| |-> NetCP Interfaces -> | | |
| |-> Ethernet Port 0 | |
| | | |
| |-> Ethernet Port 1 | |
| | | |
| |-> Ethernet Port 2 | |
| | | |
| |-> Ethernet Port 3 | |
| NetCP subsystem properties: | |
| Required properties: | |
| - compatible: Should be "ti,netcp-1.0" | |
| - clocks: phandle to the reference clocks for the subsystem. | |
| - dma-id: Navigator packet dma instance id. | |
| - ranges: address range of NetCP (includes, Ethernet SS, PA and SA) | |
| Optional properties: | |
| - reg: register location and the size for the following register | |
| regions in the specified order. | |
| - Efuse MAC address register | |
| - dma-coherent: Present if dma operations are coherent | |
| - big-endian: Keystone devices can be operated in a mode where the DSP is in | |
| the big endian mode. In such cases enable this option. This | |
| option should also be enabled if the ARM is operated in | |
| big endian mode with the DSP in little endian. | |
| NetCP device properties: Device specification for NetCP sub-modules. | |
| 1Gb/10Gb (gbe/xgbe) ethernet switch sub-module specifications. | |
| Required properties: | |
| - label: Must be "netcp-gbe" for 1Gb & "netcp-xgbe" for 10Gb. | |
| - compatible: Must be one of below:- | |
| "ti,netcp-gbe" for 1GbE on NetCP 1.4 | |
| "ti,netcp-gbe-5" for 1GbE N NetCP 1.5 (N=5) | |
| "ti,netcp-gbe-9" for 1GbE N NetCP 1.5 (N=9) | |
| "ti,netcp-gbe-2" for 1GbE N NetCP 1.5 (N=2) | |
| "ti,netcp-xgbe" for 10 GbE | |
| - reg: register location and the size for the following register | |
| regions in the specified order. | |
| - switch subsystem registers | |
| - sgmii port3/4 module registers (only for NetCP 1.4) | |
| - switch module registers | |
| - serdes registers (only for 10G) | |
| NetCP 1.4 ethss, here is the order | |
| index #0 - switch subsystem registers | |
| index #1 - sgmii port3/4 module registers | |
| index #2 - switch module registers | |
| NetCP 1.5 ethss 9 port, 5 port and 2 port | |
| index #0 - switch subsystem registers | |
| index #1 - switch module registers | |
| index #2 - serdes registers | |
| - tx-channel: the navigator packet dma channel name for tx. | |
| - tx-queue: the navigator queue number associated with the tx dma channel. | |
| - interfaces: specification for each of the switch port to be registered as a | |
| network interface in the stack. | |
| -- slave-port: Switch port number, 0 based numbering. | |
| -- link-interface: type of link interface, supported options are | |
| - mac<->mac auto negotiate mode: 0 | |
| - mac<->phy mode: 1 | |
| - mac<->mac forced mode: 2 | |
| - mac<->fiber mode: 3 | |
| - mac<->phy mode with no mdio: 4 | |
| - 10Gb mac<->phy mode : 10 | |
| - 10Gb mac<->mac forced mode : 11 | |
| ----phy-handle: phandle to PHY device | |
| Optional properties: | |
| - enable-ale: NetCP driver keeps the address learning feature in the ethernet | |
| switch module disabled. This attribute is to enable the address | |
| learning. | |
| - secondary-slave-ports: specification for each of the switch port not be | |
| registered as a network interface. NetCP driver | |
| will only initialize these ports and attach PHY | |
| driver to them if needed. | |
| NetCP interface properties: Interface specification for NetCP sub-modules. | |
| Required properties: | |
| - rx-channel: the navigator packet dma channel name for rx. | |
| - rx-queue: the navigator queue number associated with rx dma channel. | |
| - rx-pool: specifies the number of descriptors to be used & the region-id | |
| for creating the rx descriptor pool. | |
| - tx-pool: specifies the number of descriptors to be used & the region-id | |
| for creating the tx descriptor pool. | |
| - rx-queue-depth: number of descriptors in each of the free descriptor | |
| queue (FDQ) for the pktdma Rx flow. There can be at | |
| present a maximum of 4 queues per Rx flow. | |
| - rx-buffer-size: the buffer size for each of the Rx flow FDQ. | |
| - tx-completion-queue: the navigator queue number where the descriptors are | |
| recycled after Tx DMA completion. | |
| Optional properties: | |
| - efuse-mac: If this is 1, then the MAC address for the interface is | |
| obtained from the device efuse mac address register. | |
| If this is 2, the two DWORDs occupied by the MAC address | |
| are swapped. The netcp driver will swap the two DWORDs | |
| back to the proper order when this property is set to 2 | |
| when it obtains the mac address from efuse. | |
| - local-mac-address: the driver is designed to use the of_get_mac_address api | |
| only if efuse-mac is 0. When efuse-mac is 0, the MAC | |
| address is obtained from local-mac-address. If this | |
| attribute is not present, then the driver will use a | |
| random MAC address. | |
| - "netcp-device label": phandle to the device specification for each of NetCP | |
| sub-module attached to this interface. | |
| Example binding: | |
| netcp: netcp@2000000 { | |
| reg = <0x2620110 0x8>; | |
| reg-names = "efuse"; | |
| compatible = "ti,netcp-1.0"; | |
| #address-cells = <1>; | |
| #size-cells = <1>; | |
| ranges = <0 0x2000000 0xfffff>; | |
| clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>; | |
| dma-coherent; | |
| /* big-endian; */ | |
| dma-id = <0>; | |
| netcp-devices { | |
| #address-cells = <1>; | |
| #size-cells = <1>; | |
| ranges; | |
| gbe@90000 { | |
| label = "netcp-gbe"; | |
| reg = <0x90000 0x300>, <0x90400 0x400>, <0x90800 0x700>; | |
| /* enable-ale; */ | |
| tx-queue = <648>; | |
| tx-channel = <8>; | |
| interfaces { | |
| gbe0: interface-0 { | |
| slave-port = <0>; | |
| link-interface = <4>; | |
| }; | |
| gbe1: interface-1 { | |
| slave-port = <1>; | |
| link-interface = <4>; | |
| }; | |
| }; | |
| secondary-slave-ports { | |
| port-2 { | |
| slave-port = <2>; | |
| link-interface = <2>; | |
| }; | |
| port-3 { | |
| slave-port = <3>; | |
| link-interface = <2>; | |
| }; | |
| }; | |
| }; | |
| }; | |
| netcp-interfaces { | |
| interface-0 { | |
| rx-channel = <22>; | |
| rx-pool = <1024 12>; | |
| tx-pool = <1024 12>; | |
| rx-queue-depth = <128 128 0 0>; | |
| rx-buffer-size = <1518 4096 0 0>; | |
| rx-queue = <8704>; | |
| tx-completion-queue = <8706>; | |
| efuse-mac = <1>; | |
| netcp-gbe = <&gbe0>; | |
| }; | |
| interface-1 { | |
| rx-channel = <23>; | |
| rx-pool = <1024 12>; | |
| tx-pool = <1024 12>; | |
| rx-queue-depth = <128 128 0 0>; | |
| rx-buffer-size = <1518 4096 0 0>; | |
| rx-queue = <8705>; | |
| tx-completion-queue = <8707>; | |
| efuse-mac = <0>; | |
| local-mac-address = [02 18 31 7e 3e 6f]; | |
| netcp-gbe = <&gbe1>; | |
| }; | |
| }; | |
| }; |