| 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 | |
| - fsl,portid-mapping : <u32> | |
| The Coherency Subdomain ID Port Mapping Registers and | |
| Snoop ID Port Mapping registers, which are part of the | |
| CoreNet Coherency fabric (CCF), provide a CoreNet | |
| Coherency Subdomain ID/CoreNet Snoop ID to pamu mapping | |
| functions. Certain bits from these registers should be | |
| set if PAMUs should be snooped. This property defines | |
| a bitmask which selects the bits that should be set if | |
| PAMUs should be snooped. | |
| 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>; | |
| fsl,portid-mapping = <0xf80000>; | |
| #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 */ | |
| }; |