123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- 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.
- - 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>;
- };
- };
- };
|