149 lines
4.8 KiB
Plaintext
149 lines
4.8 KiB
Plaintext
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.
|
|
- 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 */
|
|
};
|