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

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 nodes under the /reserved-memory node

The QMan FQD memory node must be named "qman-fqd"

PROPERTIES

- compatible
	Usage:		required
	Value type:	<stringlist>
	Definition:	Must inclide "fsl,qman-fqd"

The QMan PFDR memory node must be named "qman-pfdr"

PROPERTIES

- compatible
	Usage:		required
	Value type:	<stringlist>
	Definition:	Must inclide "fsl,qman-pfdr"

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 = "fsl,qman-fqd";
			alloc-ranges = <0 0 0x10 0>;
			size = <0 0x400000>;
			alignment = <0 0x400000>;
		};
		qman_pfdr: qman-pfdr {
			compatible = "fsl,qman-pfdr";
			alloc-ranges = <0 0 0x10 0>;
			size = <0 0x2000000>;
			alignment = <0 0x2000000>;
		};
	};

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