222 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			222 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
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>;
 | 
						|
		};
 | 
						|
	};
 | 
						|
};
 |