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