|
@@ -0,0 +1,197 @@
|
|
|
+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) subsytem 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.
|
|
|
+
|
|
|
+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.
|
|
|
+- reg: register location and the size for the following register
|
|
|
+ regions in the specified order.
|
|
|
+ - subsystem registers
|
|
|
+ - 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
|
|
|
+- 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@2090000 {
|
|
|
+ reg = <0x2620110 0x8>;
|
|
|
+ reg-names = "efuse";
|
|
|
+ compatible = "ti,netcp-1.0";
|
|
|
+ #address-cells = <1>;
|
|
|
+ #size-cells = <1>;
|
|
|
+ ranges;
|
|
|
+
|
|
|
+ clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
|
|
|
+ dma-coherent;
|
|
|
+ /* big-endian; */
|
|
|
+ dma-id = <0>;
|
|
|
+
|
|
|
+ netcp-devices {
|
|
|
+ #address-cells = <1>;
|
|
|
+ #size-cells = <1>;
|
|
|
+ ranges;
|
|
|
+ gbe@0x2090000 {
|
|
|
+ label = "netcp-gbe";
|
|
|
+ reg = <0x2090000 0xf00>;
|
|
|
+ /* 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>;
|
|
|
+ };
|
|
|
+ };
|
|
|
+};
|