188 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
QorIQ DPAA Queue Manager Device Tree Binding
 | 
						|
 | 
						|
Copyright (C) 2008 - 2014 Freescale Semiconductor Inc.
 | 
						|
 | 
						|
CONTENTS
 | 
						|
 | 
						|
	- QMan Node
 | 
						|
	- QMan Private Memory Nodes
 | 
						|
	- Example
 | 
						|
 | 
						|
QMan Node
 | 
						|
 | 
						|
The Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan
 | 
						|
supports queuing and QoS scheduling of frames to CPUs, network interfaces and
 | 
						|
DPAA logic modules, maintains packet ordering within flows. Besides providing
 | 
						|
flow-level queuing, is also responsible for congestion management functions such
 | 
						|
as RED/WRED, congestion notifications and tail discards. This binding covers the
 | 
						|
CCSR space programming model
 | 
						|
 | 
						|
PROPERTIES
 | 
						|
 | 
						|
- compatible
 | 
						|
	Usage:		Required
 | 
						|
	Value type:	<stringlist>
 | 
						|
	Definition:	Must include "fsl,qman"
 | 
						|
			May include "fsl,<SoC>-qman"
 | 
						|
 | 
						|
- reg
 | 
						|
	Usage:		Required
 | 
						|
	Value type:	<prop-encoded-array>
 | 
						|
	Definition:	Registers region within the CCSR address space
 | 
						|
 | 
						|
The QMan revision information is located in the QMAN_IP_REV_1/2 registers which
 | 
						|
are located at offsets 0xbf8 and 0xbfc
 | 
						|
 | 
						|
- interrupts
 | 
						|
	Usage:		Required
 | 
						|
	Value type:	<prop-encoded-array>
 | 
						|
	Definition:	Standard property. The error interrupt
 | 
						|
 | 
						|
- fsl,qman-portals
 | 
						|
	Usage:		Required
 | 
						|
	Value type:	<phandle>
 | 
						|
	Definition:	Phandle to this QMan instance's portals
 | 
						|
 | 
						|
- fsl,liodn
 | 
						|
	Usage:		See pamu.txt
 | 
						|
	Value type:	<prop-encoded-array>
 | 
						|
	Definition:	PAMU property used for static LIODN assignment
 | 
						|
 | 
						|
- fsl,iommu-parent
 | 
						|
	Usage:		See pamu.txt
 | 
						|
	Value type:	<phandle>
 | 
						|
	Definition:	PAMU property used for dynamic LIODN assignment
 | 
						|
 | 
						|
	For additional details about the PAMU/LIODN binding(s) see pamu.txt
 | 
						|
 | 
						|
- clocks
 | 
						|
	Usage:		See clock-bindings.txt and qoriq-clock.txt
 | 
						|
	Value type:	<prop-encoded-array>
 | 
						|
	Definition:	Reference input clock. Its frequency is half of the
 | 
						|
			platform clock
 | 
						|
- memory-regions
 | 
						|
	Usage:		Required for ARM
 | 
						|
	Value type:	<phandle array>
 | 
						|
	Definition:	List of phandles referencing the QMan private memory
 | 
						|
			nodes (described below). The qman-fqd node must be
 | 
						|
			first followed by qman-pfdr node. Only used on ARM
 | 
						|
 | 
						|
Devices connected to a QMan instance via Direct Connect Portals (DCP) must link
 | 
						|
to the respective QMan instance
 | 
						|
 | 
						|
- fsl,qman
 | 
						|
	Usage:		Required
 | 
						|
	Value type:	<prop-encoded-array>
 | 
						|
	Description:	List of phandle and DCP index pairs, to the QMan instance
 | 
						|
			to which this device is connected via the DCP
 | 
						|
 | 
						|
QMan Private Memory Nodes
 | 
						|
 | 
						|
QMan requires two contiguous range of physical memory used for the backing store
 | 
						|
for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR).
 | 
						|
This memory is reserved/allocated as a node under the /reserved-memory node.
 | 
						|
 | 
						|
For additional details about reserved memory regions see reserved-memory.txt
 | 
						|
 | 
						|
The QMan FQD memory node must be named "qman-fqd"
 | 
						|
 | 
						|
PROPERTIES
 | 
						|
 | 
						|
- compatible
 | 
						|
	Usage:		required
 | 
						|
	Value type:	<stringlist>
 | 
						|
	Definition:	PPC platforms: Must include "fsl,qman-fqd"
 | 
						|
			ARM platforms: Must include "shared-dma-pool"
 | 
						|
				       as well as the "no-map" property
 | 
						|
 | 
						|
The QMan PFDR memory node must be named "qman-pfdr"
 | 
						|
 | 
						|
PROPERTIES
 | 
						|
 | 
						|
- compatible
 | 
						|
	Usage:		required
 | 
						|
	Value type:	<stringlist>
 | 
						|
	Definition:	PPC platforms: Must include "fsl,qman-pfdr"
 | 
						|
			ARM platforms: Must include "shared-dma-pool"
 | 
						|
				       as well as the "no-map" property
 | 
						|
 | 
						|
The following constraints are relevant to the FQD and PFDR private memory:
 | 
						|
	- The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to
 | 
						|
	  1 GiB
 | 
						|
	- The alignment must be a muliptle of the memory size
 | 
						|
 | 
						|
The size of the FQD and PFDP must be chosen by observing the hardware features
 | 
						|
configured via the Reset Configuration Word (RCW) and that are relevant to a
 | 
						|
specific board (e.g. number of MAC(s) pinned-out, number of offline/host command
 | 
						|
FMan ports, etc.). The size configured in the DT must reflect the hardware
 | 
						|
capabilities and not the specific needs of an application
 | 
						|
 | 
						|
For additional details about reserved memory regions see reserved-memory.txt
 | 
						|
 | 
						|
EXAMPLE
 | 
						|
 | 
						|
The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes
 | 
						|
 | 
						|
	reserved-memory {
 | 
						|
		#address-cells = <2>;
 | 
						|
		#size-cells = <2>;
 | 
						|
		ranges;
 | 
						|
 | 
						|
		qman_fqd: qman-fqd {
 | 
						|
			compatible = "shared-dma-pool";
 | 
						|
			size = <0 0x400000>;
 | 
						|
			alignment = <0 0x400000>;
 | 
						|
			no-map;
 | 
						|
		};
 | 
						|
		qman_pfdr: qman-pfdr {
 | 
						|
			compatible = "shared-dma-pool";
 | 
						|
			size = <0 0x2000000>;
 | 
						|
			alignment = <0 0x2000000>;
 | 
						|
			no-map;
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
The example below shows a (P4080) QMan CCSR-space node
 | 
						|
 | 
						|
	qportals: qman-portals@ff4200000 {
 | 
						|
		...
 | 
						|
	};
 | 
						|
 | 
						|
	clockgen: global-utilities@e1000 {
 | 
						|
		...
 | 
						|
		sysclk: sysclk {
 | 
						|
			...
 | 
						|
		};
 | 
						|
		...
 | 
						|
		platform_pll: platform-pll@c00 {
 | 
						|
			#clock-cells = <1>;
 | 
						|
			reg = <0xc00 0x4>;
 | 
						|
			compatible = "fsl,qoriq-platform-pll-1.0";
 | 
						|
			clocks = <&sysclk>;
 | 
						|
			clock-output-names = "platform-pll", "platform-pll-div2";
 | 
						|
		};
 | 
						|
		...
 | 
						|
	};
 | 
						|
 | 
						|
	crypto@300000 {
 | 
						|
		...
 | 
						|
		fsl,qman = <&qman, 2>;
 | 
						|
		...
 | 
						|
	};
 | 
						|
 | 
						|
	qman: qman@318000 {
 | 
						|
		compatible = "fsl,qman";
 | 
						|
		reg = <0x318000 0x1000>;
 | 
						|
		interrupts = <16 2 1 3>
 | 
						|
		fsl,liodn = <0x16>;
 | 
						|
		fsl,qman-portals = <&qportals>;
 | 
						|
		memory-region = <&qman_fqd &qman_pfdr>;
 | 
						|
		clocks = <&platform_pll 1>;
 | 
						|
	};
 | 
						|
 | 
						|
	fman@400000 {
 | 
						|
		...
 | 
						|
		fsl,qman = <&qman, 0>;
 | 
						|
		...
 | 
						|
	};
 |