Back to home page

OSCL-LXR

 
 

    


0001 QorIQ DPAA Queue Manager Device Tree Binding
0002 
0003 Copyright (C) 2008 - 2014 Freescale Semiconductor Inc.
0004 
0005 CONTENTS
0006 
0007         - QMan Node
0008         - QMan Private Memory Nodes
0009         - Example
0010 
0011 QMan Node
0012 
0013 The Queue Manager is part of the Data-Path Acceleration Architecture (DPAA). QMan
0014 supports queuing and QoS scheduling of frames to CPUs, network interfaces and
0015 DPAA logic modules, maintains packet ordering within flows. Besides providing
0016 flow-level queuing, is also responsible for congestion management functions such
0017 as RED/WRED, congestion notifications and tail discards. This binding covers the
0018 CCSR space programming model
0019 
0020 PROPERTIES
0021 
0022 - compatible
0023         Usage:          Required
0024         Value type:     <stringlist>
0025         Definition:     Must include "fsl,qman"
0026                         May include "fsl,<SoC>-qman"
0027 
0028 - reg
0029         Usage:          Required
0030         Value type:     <prop-encoded-array>
0031         Definition:     Registers region within the CCSR address space
0032 
0033 The QMan revision information is located in the QMAN_IP_REV_1/2 registers which
0034 are located at offsets 0xbf8 and 0xbfc
0035 
0036 - interrupts
0037         Usage:          Required
0038         Value type:     <prop-encoded-array>
0039         Definition:     Standard property. The error interrupt
0040 
0041 - fsl,qman-portals
0042         Usage:          Required
0043         Value type:     <phandle>
0044         Definition:     Phandle to this QMan instance's portals
0045 
0046 - fsl,liodn
0047         Usage:          See pamu.txt
0048         Value type:     <prop-encoded-array>
0049         Definition:     PAMU property used for static LIODN assignment
0050 
0051 - fsl,iommu-parent
0052         Usage:          See pamu.txt
0053         Value type:     <phandle>
0054         Definition:     PAMU property used for dynamic LIODN assignment
0055 
0056         For additional details about the PAMU/LIODN binding(s) see pamu.txt
0057 
0058 - clocks
0059         Usage:          See clock-bindings.txt and qoriq-clock.txt
0060         Value type:     <prop-encoded-array>
0061         Definition:     Reference input clock. Its frequency is half of the
0062                         platform clock
0063 - memory-regions
0064         Usage:          Required for ARM
0065         Value type:     <phandle array>
0066         Definition:     List of phandles referencing the QMan private memory
0067                         nodes (described below). The qman-fqd node must be
0068                         first followed by qman-pfdr node. Only used on ARM
0069 
0070 Devices connected to a QMan instance via Direct Connect Portals (DCP) must link
0071 to the respective QMan instance
0072 
0073 - fsl,qman
0074         Usage:          Required
0075         Value type:     <prop-encoded-array>
0076         Description:    List of phandle and DCP index pairs, to the QMan instance
0077                         to which this device is connected via the DCP
0078 
0079 QMan Private Memory Nodes
0080 
0081 QMan requires two contiguous range of physical memory used for the backing store
0082 for QMan Frame Queue Descriptor (FQD) and Packed Frame Descriptor Record (PFDR).
0083 This memory is reserved/allocated as a node under the /reserved-memory node.
0084 
0085 For additional details about reserved memory regions see reserved-memory.txt
0086 
0087 The QMan FQD memory node must be named "qman-fqd"
0088 
0089 PROPERTIES
0090 
0091 - compatible
0092         Usage:          required
0093         Value type:     <stringlist>
0094         Definition:     PPC platforms: Must include "fsl,qman-fqd"
0095                         ARM platforms: Must include "shared-dma-pool"
0096                                        as well as the "no-map" property
0097 
0098 The QMan PFDR memory node must be named "qman-pfdr"
0099 
0100 PROPERTIES
0101 
0102 - compatible
0103         Usage:          required
0104         Value type:     <stringlist>
0105         Definition:     PPC platforms: Must include "fsl,qman-pfdr"
0106                         ARM platforms: Must include "shared-dma-pool"
0107                                        as well as the "no-map" property
0108 
0109 The following constraints are relevant to the FQD and PFDR private memory:
0110         - The size must be 2^(size + 1), with size = 11..29. That is 4 KiB to
0111           1 GiB
0112         - The alignment must be a muliptle of the memory size
0113 
0114 The size of the FQD and PFDP must be chosen by observing the hardware features
0115 configured via the Reset Configuration Word (RCW) and that are relevant to a
0116 specific board (e.g. number of MAC(s) pinned-out, number of offline/host command
0117 FMan ports, etc.). The size configured in the DT must reflect the hardware
0118 capabilities and not the specific needs of an application
0119 
0120 For additional details about reserved memory regions see reserved-memory.txt
0121 
0122 EXAMPLE
0123 
0124 The example below shows a QMan FQD and a PFDR dynamic allocation memory nodes
0125 
0126         reserved-memory {
0127                 #address-cells = <2>;
0128                 #size-cells = <2>;
0129                 ranges;
0130 
0131                 qman_fqd: qman-fqd {
0132                         compatible = "shared-dma-pool";
0133                         size = <0 0x400000>;
0134                         alignment = <0 0x400000>;
0135                         no-map;
0136                 };
0137                 qman_pfdr: qman-pfdr {
0138                         compatible = "shared-dma-pool";
0139                         size = <0 0x2000000>;
0140                         alignment = <0 0x2000000>;
0141                         no-map;
0142                 };
0143         };
0144 
0145 The example below shows a (P4080) QMan CCSR-space node
0146 
0147         qportals: qman-portals@ff4200000 {
0148                 ...
0149         };
0150 
0151         clockgen: global-utilities@e1000 {
0152                 ...
0153                 sysclk: sysclk {
0154                         ...
0155                 };
0156                 ...
0157                 platform_pll: platform-pll@c00 {
0158                         #clock-cells = <1>;
0159                         reg = <0xc00 0x4>;
0160                         compatible = "fsl,qoriq-platform-pll-1.0";
0161                         clocks = <&sysclk>;
0162                         clock-output-names = "platform-pll", "platform-pll-div2";
0163                 };
0164                 ...
0165         };
0166 
0167         crypto@300000 {
0168                 ...
0169                 fsl,qman = <&qman, 2>;
0170                 ...
0171         };
0172 
0173         qman: qman@318000 {
0174                 compatible = "fsl,qman";
0175                 reg = <0x318000 0x1000>;
0176                 interrupts = <16 2 1 3>
0177                 fsl,liodn = <0x16>;
0178                 fsl,qman-portals = <&qportals>;
0179                 memory-region = <&qman_fqd &qman_pfdr>;
0180                 clocks = <&platform_pll 1>;
0181         };
0182 
0183         fman@400000 {
0184                 ...
0185                 fsl,qman = <&qman, 0>;
0186                 ...
0187         };