|  | Freescale Peripheral Management Access Unit (PAMU) Device Tree Binding | 
|  |  | 
|  | DESCRIPTION | 
|  |  | 
|  | The PAMU is an I/O MMU that provides device-to-memory access control and | 
|  | address translation capabilities. | 
|  |  | 
|  | Required properties: | 
|  |  | 
|  | - compatible	: <string> | 
|  | First entry is a version-specific string, such as | 
|  | "fsl,pamu-v1.0".  The second is "fsl,pamu". | 
|  | - ranges	: <prop-encoded-array> | 
|  | A standard property. Utilized to describe the memory mapped | 
|  | I/O space utilized by the controller.  The size should | 
|  | be set to the total size of the register space of all | 
|  | physically present PAMU controllers.  For example, for | 
|  | PAMU v1.0, on an SOC that has five PAMU devices, the size | 
|  | is 0x5000. | 
|  | - interrupts	: <prop-encoded-array> | 
|  | Interrupt mappings.  The first tuple is the normal PAMU | 
|  | interrupt, used for reporting access violations.  The second | 
|  | is for PAMU hardware errors, such as PAMU operation errors | 
|  | and ECC errors. | 
|  | - #address-cells: <u32> | 
|  | A standard property. | 
|  | - #size-cells	: <u32> | 
|  | A standard property. | 
|  |  | 
|  | Optional properties: | 
|  | - reg		: <prop-encoded-array> | 
|  | A standard property.   It represents the CCSR registers of | 
|  | all child PAMUs combined.  Include it to provide support | 
|  | for legacy drivers. | 
|  | - interrupt-parent : <phandle> | 
|  | Phandle to interrupt controller | 
|  |  | 
|  | Child nodes: | 
|  |  | 
|  | Each child node represents one PAMU controller.  Each SOC device that is | 
|  | connected to a specific PAMU device should have a "fsl,pamu-phandle" property | 
|  | that links to the corresponding specific child PAMU controller. | 
|  |  | 
|  | - reg		: <prop-encoded-array> | 
|  | A standard property.  Specifies the physical address and | 
|  | length (relative to the parent 'ranges' property) of this | 
|  | PAMU controller's configuration registers.  The size should | 
|  | be set to the size of this PAMU controllers's register space. | 
|  | For PAMU v1.0, this size is 0x1000. | 
|  | - fsl,primary-cache-geometry | 
|  | : <prop-encoded-array> | 
|  | Two cells that specify the geometry of the primary PAMU | 
|  | cache.  The first is the number of cache lines, and the | 
|  | second is the number of "ways".  For direct-mapped caches, | 
|  | specify a value of 1. | 
|  | - fsl,secondary-cache-geometry | 
|  | : <prop-encoded-array> | 
|  | Two cells that specify the geometry of the secondary PAMU | 
|  | cache.  The first is the number of cache lines, and the | 
|  | second is the number of "ways".  For direct-mapped caches, | 
|  | specify a value of 1. | 
|  |  | 
|  | Device nodes: | 
|  |  | 
|  | Devices that have LIODNs need to specify links to the parent PAMU controller | 
|  | (the actual PAMU controller that this device is connected to) and a pointer to | 
|  | the LIODN register, if applicable. | 
|  |  | 
|  | - fsl,iommu-parent | 
|  | : <phandle> | 
|  | Phandle to the single, specific PAMU controller node to which | 
|  | this device is connect.  The PAMU topology is represented in | 
|  | the device tree to assist code that dynamically determines the | 
|  | best LIODN values to minimize PAMU cache thrashing. | 
|  |  | 
|  | - fsl,liodn-reg : <prop-encoded-array> | 
|  | Two cells that specify the location of the LIODN register | 
|  | for this device.  Required for devices that have a single | 
|  | LIODN.  The first cell is a phandle to a node that contains | 
|  | the registers where the LIODN is to be set.  The second is | 
|  | the offset from the first "reg" resource of the node where | 
|  | the specific LIODN register is located. | 
|  |  | 
|  |  | 
|  | Example: | 
|  |  | 
|  | iommu@20000 { | 
|  | compatible = "fsl,pamu-v1.0", "fsl,pamu"; | 
|  | reg = <0x20000 0x5000>; | 
|  | ranges = <0 0x20000 0x5000>; | 
|  | #address-cells = <1>; | 
|  | #size-cells = <1>; | 
|  | interrupts = < | 
|  | 24 2 0 0 | 
|  | 16 2 1 30>; | 
|  |  | 
|  | pamu0: pamu@0 { | 
|  | reg = <0 0x1000>; | 
|  | fsl,primary-cache-geometry = <32 1>; | 
|  | fsl,secondary-cache-geometry = <128 2>; | 
|  | }; | 
|  |  | 
|  | pamu1: pamu@1000 { | 
|  | reg = <0x1000 0x1000>; | 
|  | fsl,primary-cache-geometry = <32 1>; | 
|  | fsl,secondary-cache-geometry = <128 2>; | 
|  | }; | 
|  |  | 
|  | pamu2: pamu@2000 { | 
|  | reg = <0x2000 0x1000>; | 
|  | fsl,primary-cache-geometry = <32 1>; | 
|  | fsl,secondary-cache-geometry = <128 2>; | 
|  | }; | 
|  |  | 
|  | pamu3: pamu@3000 { | 
|  | reg = <0x3000 0x1000>; | 
|  | fsl,primary-cache-geometry = <32 1>; | 
|  | fsl,secondary-cache-geometry = <128 2>; | 
|  | }; | 
|  |  | 
|  | pamu4: pamu@4000 { | 
|  | reg = <0x4000 0x1000>; | 
|  | fsl,primary-cache-geometry = <32 1>; | 
|  | fsl,secondary-cache-geometry = <128 2>; | 
|  | }; | 
|  | }; | 
|  |  | 
|  | guts: global-utilities@e0000 { | 
|  | compatible = "fsl,qoriq-device-config-1.0"; | 
|  | reg = <0xe0000 0xe00>; | 
|  | fsl,has-rstcr; | 
|  | #sleep-cells = <1>; | 
|  | fsl,liodn-bits = <12>; | 
|  | }; | 
|  |  | 
|  | /include/ "qoriq-dma-0.dtsi" | 
|  | dma@100300 { | 
|  | fsl,iommu-parent = <&pamu0>; | 
|  | fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ | 
|  | }; |