Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/85xx: describe the PAMU topology in the device tree

The PAMU caches use the LIODNs to determine which cache lines hold the
entries for the corresponding LIODs. The LIODNs must therefore be
carefully assigned to avoid cache thrashing -- two active LIODs with
LIODNs that put them in the same cache line.

Currently, LIODNs are statically assigned by U-Boot, but this has
limitations. LIODNs are assigned even for devices that may be disabled
or unused by the kernel. Static assignments also do not allow for device
drivers which may know which LIODs can be used simultaneously. In
other words, we really should assign LIODNs dynamically in Linux.

To do that, we need to describe the PAMU device and cache topologies in
the device trees.

Signed-off-by: Timur Tabi <timur@freescale.com>
Acked-by: Stuart Yoder <stuart.yoder@freescale.com>
Acked-by: Scott Wood <scottwood@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>

authored by

Timur Tabi and committed by
Kumar Gala
0408753f 2d1efdb2

+530 -49
+12 -1
Documentation/devicetree/bindings/powerpc/fsl/guts.txt
··· 17 17 contains a functioning "reset control register" (i.e. the board 18 18 is wired to reset upon setting the HRESET_REQ bit in this register). 19 19 20 - Example: 20 + - fsl,liodn-bits : Indicates the number of defined bits in the LIODN 21 + registers, for those SOCs that have a PAMU device. 22 + 23 + Examples: 21 24 global-utilities@e0000 { /* global utilities block */ 22 25 compatible = "fsl,mpc8548-guts"; 23 26 reg = <e0000 1000>; 24 27 fsl,has-rstcr; 28 + }; 29 + 30 + guts: global-utilities@e0000 { 31 + compatible = "fsl,qoriq-device-config-1.0"; 32 + reg = <0xe0000 0xe00>; 33 + fsl,has-rstcr; 34 + #sleep-cells = <1>; 35 + fsl,liodn-bits = <12>; 25 36 };
+140
Documentation/devicetree/bindings/powerpc/fsl/pamu.txt
··· 1 + Freescale Peripheral Management Access Unit (PAMU) Device Tree Binding 2 + 3 + DESCRIPTION 4 + 5 + The PAMU is an I/O MMU that provides device-to-memory access control and 6 + address translation capabilities. 7 + 8 + Required properties: 9 + 10 + - compatible : <string> 11 + First entry is a version-specific string, such as 12 + "fsl,pamu-v1.0". The second is "fsl,pamu". 13 + - ranges : <prop-encoded-array> 14 + A standard property. Utilized to describe the memory mapped 15 + I/O space utilized by the controller. The size should 16 + be set to the total size of the register space of all 17 + physically present PAMU controllers. For example, for 18 + PAMU v1.0, on an SOC that has five PAMU devices, the size 19 + is 0x5000. 20 + - interrupts : <prop-encoded-array> 21 + Interrupt mappings. The first tuple is the normal PAMU 22 + interrupt, used for reporting access violations. The second 23 + is for PAMU hardware errors, such as PAMU operation errors 24 + and ECC errors. 25 + - #address-cells: <u32> 26 + A standard property. 27 + - #size-cells : <u32> 28 + A standard property. 29 + 30 + Optional properties: 31 + - reg : <prop-encoded-array> 32 + A standard property. It represents the CCSR registers of 33 + all child PAMUs combined. Include it to provide support 34 + for legacy drivers. 35 + - interrupt-parent : <phandle> 36 + Phandle to interrupt controller 37 + 38 + Child nodes: 39 + 40 + Each child node represents one PAMU controller. Each SOC device that is 41 + connected to a specific PAMU device should have a "fsl,pamu-phandle" property 42 + that links to the corresponding specific child PAMU controller. 43 + 44 + - reg : <prop-encoded-array> 45 + A standard property. Specifies the physical address and 46 + length (relative to the parent 'ranges' property) of this 47 + PAMU controller's configuration registers. The size should 48 + be set to the size of this PAMU controllers's register space. 49 + For PAMU v1.0, this size is 0x1000. 50 + - fsl,primary-cache-geometry 51 + : <prop-encoded-array> 52 + Two cells that specify the geometry of the primary PAMU 53 + cache. The first is the number of cache lines, and the 54 + second is the number of "ways". For direct-mapped caches, 55 + specify a value of 1. 56 + - fsl,secondary-cache-geometry 57 + : <prop-encoded-array> 58 + Two cells that specify the geometry of the secondary PAMU 59 + cache. The first is the number of cache lines, and the 60 + second is the number of "ways". For direct-mapped caches, 61 + specify a value of 1. 62 + 63 + Device nodes: 64 + 65 + Devices that have LIODNs need to specify links to the parent PAMU controller 66 + (the actual PAMU controller that this device is connected to) and a pointer to 67 + the LIODN register, if applicable. 68 + 69 + - fsl,iommu-parent 70 + : <phandle> 71 + Phandle to the single, specific PAMU controller node to which 72 + this device is connect. The PAMU topology is represented in 73 + the device tree to assist code that dynamically determines the 74 + best LIODN values to minimize PAMU cache thrashing. 75 + 76 + - fsl,liodn-reg : <prop-encoded-array> 77 + Two cells that specify the location of the LIODN register 78 + for this device. Required for devices that have a single 79 + LIODN. The first cell is a phandle to a node that contains 80 + the registers where the LIODN is to be set. The second is 81 + the offset from the first "reg" resource of the node where 82 + the specific LIODN register is located. 83 + 84 + 85 + Example: 86 + 87 + iommu@20000 { 88 + compatible = "fsl,pamu-v1.0", "fsl,pamu"; 89 + reg = <0x20000 0x5000>; 90 + ranges = <0 0x20000 0x5000>; 91 + #address-cells = <1>; 92 + #size-cells = <1>; 93 + interrupts = < 94 + 24 2 0 0 95 + 16 2 1 30>; 96 + 97 + pamu0: pamu@0 { 98 + reg = <0 0x1000>; 99 + fsl,primary-cache-geometry = <32 1>; 100 + fsl,secondary-cache-geometry = <128 2>; 101 + }; 102 + 103 + pamu1: pamu@1000 { 104 + reg = <0x1000 0x1000>; 105 + fsl,primary-cache-geometry = <32 1>; 106 + fsl,secondary-cache-geometry = <128 2>; 107 + }; 108 + 109 + pamu2: pamu@2000 { 110 + reg = <0x2000 0x1000>; 111 + fsl,primary-cache-geometry = <32 1>; 112 + fsl,secondary-cache-geometry = <128 2>; 113 + }; 114 + 115 + pamu3: pamu@3000 { 116 + reg = <0x3000 0x1000>; 117 + fsl,primary-cache-geometry = <32 1>; 118 + fsl,secondary-cache-geometry = <128 2>; 119 + }; 120 + 121 + pamu4: pamu@4000 { 122 + reg = <0x4000 0x1000>; 123 + fsl,primary-cache-geometry = <32 1>; 124 + fsl,secondary-cache-geometry = <128 2>; 125 + }; 126 + }; 127 + 128 + guts: global-utilities@e0000 { 129 + compatible = "fsl,qoriq-device-config-1.0"; 130 + reg = <0xe0000 0xe00>; 131 + fsl,has-rstcr; 132 + #sleep-cells = <1>; 133 + fsl,liodn-bits = <12>; 134 + }; 135 + 136 + /include/ "qoriq-dma-0.dtsi" 137 + dma@100300 { 138 + fsl,iommu-parent = <&pamu0>; 139 + fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ 140 + };
+76 -11
arch/powerpc/boot/dts/fsl/p2041si-post.dtsi
··· 48 48 bus-range = <0x0 0xff>; 49 49 clock-frequency = <33333333>; 50 50 interrupts = <16 2 1 15>; 51 + fsl,iommu-parent = <&pamu0>; 52 + fsl,liodn-reg = <&guts 0x500>; /* PEX1LIODNR */ 51 53 pcie@0 { 52 54 reg = <0 0 0 0 0>; 53 55 #interrupt-cells = <1>; ··· 77 75 bus-range = <0 0xff>; 78 76 clock-frequency = <33333333>; 79 77 interrupts = <16 2 1 14>; 78 + fsl,iommu-parent = <&pamu0>; 79 + fsl,liodn-reg = <&guts 0x504>; /* PEX2LIODNR */ 80 80 pcie@0 { 81 81 reg = <0 0 0 0 0>; 82 82 #interrupt-cells = <1>; ··· 106 102 bus-range = <0x0 0xff>; 107 103 clock-frequency = <33333333>; 108 104 interrupts = <16 2 1 13>; 105 + fsl,iommu-parent = <&pamu0>; 106 + fsl,liodn-reg = <&guts 0x508>; /* PEX3LIODNR */ 109 107 pcie@0 { 110 108 reg = <0 0 0 0 0>; 111 109 #interrupt-cells = <1>; ··· 131 125 interrupts = <16 2 1 11>; 132 126 #address-cells = <2>; 133 127 #size-cells = <2>; 128 + fsl,iommu-parent = <&pamu0>; 134 129 ranges; 135 130 136 131 port1 { 137 132 #address-cells = <2>; 138 133 #size-cells = <2>; 139 134 cell-index = <1>; 135 + fsl,liodn-reg = <&guts 0x510>; /* RIO1LIODNR */ 140 136 }; 141 137 142 138 port2 { 143 139 #address-cells = <2>; 144 140 #size-cells = <2>; 145 141 cell-index = <2>; 142 + fsl,liodn-reg = <&guts 0x514>; /* RIO2LIODNR */ 146 143 }; 147 144 }; 148 145 ··· 255 246 256 247 iommu@20000 { 257 248 compatible = "fsl,pamu-v1.0", "fsl,pamu"; 258 - reg = <0x20000 0x4000>; 249 + reg = <0x20000 0x4000>; /* for compatibility with older PAMU drivers */ 250 + ranges = <0 0x20000 0x4000>; 251 + #address-cells = <1>; 252 + #size-cells = <1>; 259 253 interrupts = < 260 254 24 2 0 0 261 255 16 2 1 30>; 256 + 257 + pamu0: pamu@0 { 258 + reg = <0 0x1000>; 259 + fsl,primary-cache-geometry = <32 1>; 260 + fsl,secondary-cache-geometry = <128 2>; 261 + }; 262 + 263 + pamu1: pamu@1000 { 264 + reg = <0x1000 0x1000>; 265 + fsl,primary-cache-geometry = <32 1>; 266 + fsl,secondary-cache-geometry = <128 2>; 267 + }; 268 + 269 + pamu2: pamu@2000 { 270 + reg = <0x2000 0x1000>; 271 + fsl,primary-cache-geometry = <32 1>; 272 + fsl,secondary-cache-geometry = <128 2>; 273 + }; 274 + 275 + pamu3: pamu@3000 { 276 + reg = <0x3000 0x1000>; 277 + fsl,primary-cache-geometry = <32 1>; 278 + fsl,secondary-cache-geometry = <128 2>; 279 + }; 262 280 }; 263 281 264 282 /include/ "qoriq-mpic.dtsi" ··· 327 291 }; 328 292 329 293 /include/ "qoriq-dma-0.dtsi" 294 + dma@100300 { 295 + fsl,iommu-parent = <&pamu0>; 296 + fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */ 297 + }; 298 + 330 299 /include/ "qoriq-dma-1.dtsi" 300 + dma@101300 { 301 + fsl,iommu-parent = <&pamu0>; 302 + fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ 303 + }; 304 + 331 305 /include/ "qoriq-espi-0.dtsi" 332 306 spi@110000 { 333 307 fsl,espi-num-chipselects = <4>; ··· 345 299 346 300 /include/ "qoriq-esdhc-0.dtsi" 347 301 sdhc@114000 { 302 + fsl,iommu-parent = <&pamu1>; 303 + fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */ 348 304 sdhci,auto-cmd12; 349 305 }; 350 306 ··· 356 308 /include/ "qoriq-duart-1.dtsi" 357 309 /include/ "qoriq-gpio-0.dtsi" 358 310 /include/ "qoriq-usb2-mph-0.dtsi" 359 - usb0: usb@210000 { 360 - compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph"; 361 - phy_type = "utmi"; 362 - port0; 363 - }; 311 + usb0: usb@210000 { 312 + compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph"; 313 + phy_type = "utmi"; 314 + fsl,iommu-parent = <&pamu1>; 315 + fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */ 316 + port0; 317 + }; 364 318 365 319 /include/ "qoriq-usb2-dr-0.dtsi" 366 - usb1: usb@211000 { 367 - compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 368 - dr_mode = "host"; 369 - phy_type = "utmi"; 370 - }; 320 + usb1: usb@211000 { 321 + compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 322 + fsl,iommu-parent = <&pamu1>; 323 + fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */ 324 + dr_mode = "host"; 325 + phy_type = "utmi"; 326 + }; 371 327 372 328 /include/ "qoriq-sata2-0.dtsi" 329 + sata@220000 { 330 + fsl,iommu-parent = <&pamu1>; 331 + fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */ 332 + }; 333 + 373 334 /include/ "qoriq-sata2-1.dtsi" 335 + sata@221000 { 336 + fsl,iommu-parent = <&pamu1>; 337 + fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */ 338 + }; 339 + 374 340 /include/ "qoriq-sec4.2-0.dtsi" 341 + crypto: crypto@300000 { 342 + fsl,iommu-parent = <&pamu1>; 343 + }; 375 344 };
+76 -11
arch/powerpc/boot/dts/fsl/p3041si-post.dtsi
··· 48 48 bus-range = <0x0 0xff>; 49 49 clock-frequency = <33333333>; 50 50 interrupts = <16 2 1 15>; 51 + fsl,iommu-parent = <&pamu0>; 52 + fsl,liodn-reg = <&guts 0x500>; /* PEX1LIODNR */ 51 53 pcie@0 { 52 54 reg = <0 0 0 0 0>; 53 55 #interrupt-cells = <1>; ··· 77 75 bus-range = <0 0xff>; 78 76 clock-frequency = <33333333>; 79 77 interrupts = <16 2 1 14>; 78 + fsl,iommu-parent = <&pamu0>; 79 + fsl,liodn-reg = <&guts 0x504>; /* PEX2LIODNR */ 80 80 pcie@0 { 81 81 reg = <0 0 0 0 0>; 82 82 #interrupt-cells = <1>; ··· 106 102 bus-range = <0x0 0xff>; 107 103 clock-frequency = <33333333>; 108 104 interrupts = <16 2 1 13>; 105 + fsl,iommu-parent = <&pamu0>; 106 + fsl,liodn-reg = <&guts 0x508>; /* PEX3LIODNR */ 109 107 pcie@0 { 110 108 reg = <0 0 0 0 0>; 111 109 #interrupt-cells = <1>; ··· 158 152 interrupts = <16 2 1 11>; 159 153 #address-cells = <2>; 160 154 #size-cells = <2>; 155 + fsl,iommu-parent = <&pamu0>; 161 156 ranges; 162 157 163 158 port1 { 164 159 #address-cells = <2>; 165 160 #size-cells = <2>; 166 161 cell-index = <1>; 162 + fsl,liodn-reg = <&guts 0x510>; /* RIO1LIODNR */ 167 163 }; 168 164 169 165 port2 { 170 166 #address-cells = <2>; 171 167 #size-cells = <2>; 172 168 cell-index = <2>; 169 + fsl,liodn-reg = <&guts 0x514>; /* RIO2LIODNR */ 173 170 }; 174 171 }; 175 172 ··· 282 273 283 274 iommu@20000 { 284 275 compatible = "fsl,pamu-v1.0", "fsl,pamu"; 285 - reg = <0x20000 0x4000>; 276 + reg = <0x20000 0x4000>; /* for compatibility with older PAMU drivers */ 277 + ranges = <0 0x20000 0x4000>; 278 + #address-cells = <1>; 279 + #size-cells = <1>; 286 280 interrupts = < 287 281 24 2 0 0 288 282 16 2 1 30>; 283 + 284 + pamu0: pamu@0 { 285 + reg = <0 0x1000>; 286 + fsl,primary-cache-geometry = <32 1>; 287 + fsl,secondary-cache-geometry = <128 2>; 288 + }; 289 + 290 + pamu1: pamu@1000 { 291 + reg = <0x1000 0x1000>; 292 + fsl,primary-cache-geometry = <32 1>; 293 + fsl,secondary-cache-geometry = <128 2>; 294 + }; 295 + 296 + pamu2: pamu@2000 { 297 + reg = <0x2000 0x1000>; 298 + fsl,primary-cache-geometry = <32 1>; 299 + fsl,secondary-cache-geometry = <128 2>; 300 + }; 301 + 302 + pamu3: pamu@3000 { 303 + reg = <0x3000 0x1000>; 304 + fsl,primary-cache-geometry = <32 1>; 305 + fsl,secondary-cache-geometry = <128 2>; 306 + }; 289 307 }; 290 308 291 309 /include/ "qoriq-mpic.dtsi" ··· 354 318 }; 355 319 356 320 /include/ "qoriq-dma-0.dtsi" 321 + dma@100300 { 322 + fsl,iommu-parent = <&pamu0>; 323 + fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */ 324 + }; 325 + 357 326 /include/ "qoriq-dma-1.dtsi" 327 + dma@101300 { 328 + fsl,iommu-parent = <&pamu0>; 329 + fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ 330 + }; 331 + 358 332 /include/ "qoriq-espi-0.dtsi" 359 333 spi@110000 { 360 334 fsl,espi-num-chipselects = <4>; ··· 372 326 373 327 /include/ "qoriq-esdhc-0.dtsi" 374 328 sdhc@114000 { 329 + fsl,iommu-parent = <&pamu1>; 330 + fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */ 375 331 sdhci,auto-cmd12; 376 332 }; 377 333 ··· 383 335 /include/ "qoriq-duart-1.dtsi" 384 336 /include/ "qoriq-gpio-0.dtsi" 385 337 /include/ "qoriq-usb2-mph-0.dtsi" 386 - usb0: usb@210000 { 387 - compatible = "fsl-usb2-mph-v1.6", "fsl-usb2-mph"; 388 - phy_type = "utmi"; 389 - port0; 390 - }; 338 + usb0: usb@210000 { 339 + compatible = "fsl-usb2-mph-v1.6", "fsl-usb2-mph"; 340 + phy_type = "utmi"; 341 + fsl,iommu-parent = <&pamu1>; 342 + fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */ 343 + port0; 344 + }; 391 345 392 346 /include/ "qoriq-usb2-dr-0.dtsi" 393 - usb1: usb@211000 { 394 - compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 395 - dr_mode = "host"; 396 - phy_type = "utmi"; 397 - }; 347 + usb1: usb@211000 { 348 + compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 349 + fsl,iommu-parent = <&pamu1>; 350 + fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */ 351 + dr_mode = "host"; 352 + phy_type = "utmi"; 353 + }; 398 354 399 355 /include/ "qoriq-sata2-0.dtsi" 356 + sata@220000 { 357 + fsl,iommu-parent = <&pamu1>; 358 + fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */ 359 + }; 360 + 400 361 /include/ "qoriq-sata2-1.dtsi" 362 + sata@221000 { 363 + fsl,iommu-parent = <&pamu1>; 364 + fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */ 365 + }; 366 + 401 367 /include/ "qoriq-sec4.2-0.dtsi" 368 + crypto: crypto@300000 { 369 + fsl,iommu-parent = <&pamu1>; 370 + }; 402 371 };
+67 -1
arch/powerpc/boot/dts/fsl/p4080si-post.dtsi
··· 48 48 bus-range = <0x0 0xff>; 49 49 clock-frequency = <33333333>; 50 50 interrupts = <16 2 1 15>; 51 + fsl,iommu-parent = <&pamu0>; 52 + fsl,liodn-reg = <&guts 0x500>; /* PEX1LIODNR */ 51 53 pcie@0 { 52 54 reg = <0 0 0 0 0>; 53 55 #interrupt-cells = <1>; ··· 77 75 bus-range = <0 0xff>; 78 76 clock-frequency = <33333333>; 79 77 interrupts = <16 2 1 14>; 78 + fsl,iommu-parent = <&pamu0>; 79 + fsl,liodn-reg = <&guts 0x504>; /* PEX2LIODNR */ 80 80 pcie@0 { 81 81 reg = <0 0 0 0 0>; 82 82 #interrupt-cells = <1>; ··· 106 102 bus-range = <0x0 0xff>; 107 103 clock-frequency = <33333333>; 108 104 interrupts = <16 2 1 13>; 105 + fsl,iommu-parent = <&pamu0>; 106 + fsl,liodn-reg = <&guts 0x508>; /* PEX3LIODNR */ 109 107 pcie@0 { 110 108 reg = <0 0 0 0 0>; 111 109 #interrupt-cells = <1>; ··· 132 126 #address-cells = <2>; 133 127 #size-cells = <2>; 134 128 fsl,srio-rmu-handle = <&rmu>; 129 + fsl,iommu-parent = <&pamu0>; 135 130 ranges; 136 131 137 132 port1 { 138 133 #address-cells = <2>; 139 134 #size-cells = <2>; 140 135 cell-index = <1>; 136 + fsl,liodn-reg = <&guts 0x510>; /* RIO1LIODNR */ 141 137 }; 142 138 143 139 port2 { 144 140 #address-cells = <2>; 145 141 #size-cells = <2>; 146 142 cell-index = <2>; 143 + fsl,liodn-reg = <&guts 0x514>; /* RIO2LIODNR */ 147 144 }; 148 145 }; 149 146 ··· 290 281 291 282 iommu@20000 { 292 283 compatible = "fsl,pamu-v1.0", "fsl,pamu"; 293 - reg = <0x20000 0x5000>; 284 + reg = <0x20000 0x5000>; /* for compatibility with older PAMU drivers */ 285 + ranges = <0 0x20000 0x5000>; 286 + #address-cells = <1>; 287 + #size-cells = <1>; 294 288 interrupts = < 295 289 24 2 0 0 296 290 16 2 1 30>; 291 + 292 + pamu0: pamu@0 { 293 + reg = <0 0x1000>; 294 + fsl,primary-cache-geometry = <32 1>; 295 + fsl,secondary-cache-geometry = <128 2>; 296 + }; 297 + 298 + pamu1: pamu@1000 { 299 + reg = <0x1000 0x1000>; 300 + fsl,primary-cache-geometry = <32 1>; 301 + fsl,secondary-cache-geometry = <128 2>; 302 + }; 303 + 304 + pamu2: pamu@2000 { 305 + reg = <0x2000 0x1000>; 306 + fsl,primary-cache-geometry = <32 1>; 307 + fsl,secondary-cache-geometry = <128 2>; 308 + }; 309 + 310 + pamu3: pamu@3000 { 311 + reg = <0x3000 0x1000>; 312 + fsl,primary-cache-geometry = <32 1>; 313 + fsl,secondary-cache-geometry = <128 2>; 314 + }; 315 + 316 + pamu4: pamu@4000 { 317 + reg = <0x4000 0x1000>; 318 + fsl,primary-cache-geometry = <32 1>; 319 + fsl,secondary-cache-geometry = <128 2>; 320 + }; 297 321 }; 298 322 299 323 /include/ "qoriq-rmu-0.dtsi" 324 + rmu@d3000 { 325 + fsl,iommu-parent = <&pamu0>; 326 + fsl,liodn-reg = <&guts 0x540>; /* RMULIODNR */ 327 + }; 328 + 300 329 /include/ "qoriq-mpic.dtsi" 301 330 302 331 guts: global-utilities@e0000 { ··· 374 327 }; 375 328 376 329 /include/ "qoriq-dma-0.dtsi" 330 + dma@100300 { 331 + fsl,iommu-parent = <&pamu0>; 332 + fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */ 333 + }; 334 + 377 335 /include/ "qoriq-dma-1.dtsi" 336 + dma@101300 { 337 + fsl,iommu-parent = <&pamu0>; 338 + fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ 339 + }; 340 + 378 341 /include/ "qoriq-espi-0.dtsi" 379 342 spi@110000 { 380 343 fsl,espi-num-chipselects = <4>; ··· 392 335 393 336 /include/ "qoriq-esdhc-0.dtsi" 394 337 sdhc@114000 { 338 + fsl,iommu-parent = <&pamu1>; 339 + fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */ 395 340 voltage-ranges = <3300 3300>; 396 341 sdhci,auto-cmd12; 397 342 }; ··· 406 347 /include/ "qoriq-usb2-mph-0.dtsi" 407 348 usb@210000 { 408 349 compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph"; 350 + fsl,iommu-parent = <&pamu1>; 351 + fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */ 409 352 port0; 410 353 }; 411 354 /include/ "qoriq-usb2-dr-0.dtsi" 412 355 usb@211000 { 413 356 compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 357 + fsl,iommu-parent = <&pamu1>; 358 + fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */ 414 359 }; 415 360 /include/ "qoriq-sec4.0-0.dtsi" 361 + crypto: crypto@300000 { 362 + fsl,iommu-parent = <&pamu1>; 363 + }; 416 364 };
+81 -11
arch/powerpc/boot/dts/fsl/p5020si-post.dtsi
··· 48 48 bus-range = <0x0 0xff>; 49 49 clock-frequency = <33333333>; 50 50 interrupts = <16 2 1 15>; 51 + fsl,iommu-parent = <&pamu0>; 52 + fsl,liodn-reg = <&guts 0x500>; /* PEX1LIODNR */ 51 53 pcie@0 { 52 54 reg = <0 0 0 0 0>; 53 55 #interrupt-cells = <1>; ··· 77 75 bus-range = <0 0xff>; 78 76 clock-frequency = <33333333>; 79 77 interrupts = <16 2 1 14>; 78 + fsl,iommu-parent = <&pamu0>; 79 + fsl,liodn-reg = <&guts 0x504>; /* PEX2LIODNR */ 80 80 pcie@0 { 81 81 reg = <0 0 0 0 0>; 82 82 #interrupt-cells = <1>; ··· 106 102 bus-range = <0x0 0xff>; 107 103 clock-frequency = <33333333>; 108 104 interrupts = <16 2 1 13>; 105 + fsl,iommu-parent = <&pamu0>; 106 + fsl,liodn-reg = <&guts 0x508>; /* PEX3LIODNR */ 109 107 pcie@0 { 110 108 reg = <0 0 0 0 0>; 111 109 #interrupt-cells = <1>; ··· 135 129 bus-range = <0x0 0xff>; 136 130 clock-frequency = <33333333>; 137 131 interrupts = <16 2 1 12>; 132 + fsl,iommu-parent = <&pamu0>; 133 + fsl,liodn-reg = <&guts 0x50c>; /* PEX4LIODNR */ 138 134 pcie@0 { 139 135 reg = <0 0 0 0 0>; 140 136 #interrupt-cells = <1>; ··· 160 152 interrupts = <16 2 1 11>; 161 153 #address-cells = <2>; 162 154 #size-cells = <2>; 155 + fsl,iommu-parent = <&pamu0>; 163 156 ranges; 164 157 165 158 port1 { 166 159 #address-cells = <2>; 167 160 #size-cells = <2>; 168 161 cell-index = <1>; 162 + fsl,liodn-reg = <&guts 0x510>; /* RIO1LIODNR */ 169 163 }; 170 164 171 165 port2 { 172 166 #address-cells = <2>; 173 167 #size-cells = <2>; 174 168 cell-index = <2>; 169 + fsl,liodn-reg = <&guts 0x514>; /* RIO2LIODNR */ 175 170 }; 176 171 }; 177 172 ··· 287 276 288 277 iommu@20000 { 289 278 compatible = "fsl,pamu-v1.0", "fsl,pamu"; 290 - reg = <0x20000 0x4000>; 279 + reg = <0x20000 0x4000>; /* for compatibility with older PAMU drivers */ 280 + ranges = <0 0x20000 0x4000>; 281 + #address-cells = <1>; 282 + #size-cells = <1>; 291 283 interrupts = < 292 284 24 2 0 0 293 285 16 2 1 30>; 286 + 287 + pamu0: pamu@0 { 288 + reg = <0 0x1000>; 289 + fsl,primary-cache-geometry = <32 1>; 290 + fsl,secondary-cache-geometry = <128 2>; 291 + }; 292 + 293 + pamu1: pamu@1000 { 294 + reg = <0x1000 0x1000>; 295 + fsl,primary-cache-geometry = <32 1>; 296 + fsl,secondary-cache-geometry = <128 2>; 297 + }; 298 + 299 + pamu2: pamu@2000 { 300 + reg = <0x2000 0x1000>; 301 + fsl,primary-cache-geometry = <32 1>; 302 + fsl,secondary-cache-geometry = <128 2>; 303 + }; 304 + 305 + pamu3: pamu@3000 { 306 + reg = <0x3000 0x1000>; 307 + fsl,primary-cache-geometry = <32 1>; 308 + fsl,secondary-cache-geometry = <128 2>; 309 + }; 294 310 }; 295 311 296 312 /include/ "qoriq-mpic.dtsi" ··· 359 321 }; 360 322 361 323 /include/ "qoriq-dma-0.dtsi" 324 + dma@100300 { 325 + fsl,iommu-parent = <&pamu0>; 326 + fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */ 327 + }; 328 + 362 329 /include/ "qoriq-dma-1.dtsi" 330 + dma@101300 { 331 + fsl,iommu-parent = <&pamu0>; 332 + fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ 333 + }; 334 + 363 335 /include/ "qoriq-espi-0.dtsi" 364 336 spi@110000 { 365 337 fsl,espi-num-chipselects = <4>; ··· 377 329 378 330 /include/ "qoriq-esdhc-0.dtsi" 379 331 sdhc@114000 { 332 + fsl,iommu-parent = <&pamu1>; 333 + fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */ 380 334 sdhci,auto-cmd12; 381 335 }; 382 336 ··· 388 338 /include/ "qoriq-duart-1.dtsi" 389 339 /include/ "qoriq-gpio-0.dtsi" 390 340 /include/ "qoriq-usb2-mph-0.dtsi" 391 - usb0: usb@210000 { 392 - compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph"; 393 - phy_type = "utmi"; 394 - port0; 395 - }; 341 + usb0: usb@210000 { 342 + compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph"; 343 + fsl,iommu-parent = <&pamu1>; 344 + fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */ 345 + phy_type = "utmi"; 346 + port0; 347 + }; 396 348 397 349 /include/ "qoriq-usb2-dr-0.dtsi" 398 - usb1: usb@211000 { 399 - compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 400 - dr_mode = "host"; 401 - phy_type = "utmi"; 402 - }; 350 + usb1: usb@211000 { 351 + compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 352 + fsl,iommu-parent = <&pamu1>; 353 + fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */ 354 + dr_mode = "host"; 355 + phy_type = "utmi"; 356 + }; 403 357 404 358 /include/ "qoriq-sata2-0.dtsi" 359 + sata@220000 { 360 + fsl,iommu-parent = <&pamu1>; 361 + fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */ 362 + }; 363 + 405 364 /include/ "qoriq-sata2-1.dtsi" 365 + sata@221000 { 366 + fsl,iommu-parent = <&pamu1>; 367 + fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */ 368 + }; 406 369 /include/ "qoriq-sec4.2-0.dtsi" 370 + crypto@300000 { 371 + fsl,iommu-parent = <&pamu1>; 372 + }; 373 + 407 374 /include/ "qoriq-raid1.0-0.dtsi" 375 + raideng@320000 { 376 + fsl,iommu-parent = <&pamu1>; 377 + }; 408 378 };
+78 -14
arch/powerpc/boot/dts/fsl/p5040si-post.dtsi
··· 48 48 bus-range = <0x0 0xff>; 49 49 clock-frequency = <33333333>; 50 50 interrupts = <16 2 1 15>; 51 + fsl,iommu-parent = <&pamu0>; 51 52 pcie@0 { 52 53 reg = <0 0 0 0 0>; 53 54 #interrupt-cells = <1>; ··· 76 75 bus-range = <0 0xff>; 77 76 clock-frequency = <33333333>; 78 77 interrupts = <16 2 1 14>; 78 + fsl,iommu-parent = <&pamu0>; 79 79 pcie@0 { 80 80 reg = <0 0 0 0 0>; 81 81 #interrupt-cells = <1>; ··· 104 102 bus-range = <0x0 0xff>; 105 103 clock-frequency = <33333333>; 106 104 interrupts = <16 2 1 13>; 105 + fsl,iommu-parent = <&pamu0>; 107 106 pcie@0 { 108 107 reg = <0 0 0 0 0>; 109 108 #interrupt-cells = <1>; ··· 242 239 243 240 iommu@20000 { 244 241 compatible = "fsl,pamu-v1.0", "fsl,pamu"; 245 - reg = <0x20000 0x5000>; 246 - interrupts = < 247 - 24 2 0 0 248 - 16 2 1 30>; 242 + reg = <0x20000 0x5000>; /* for compatibility with older PAMU drivers */ 243 + ranges = <0 0x20000 0x5000>; 244 + #address-cells = <1>; 245 + #size-cells = <1>; 246 + interrupts = <24 2 0 0 247 + 16 2 1 30>; 248 + 249 + pamu0: pamu@0 { 250 + reg = <0 0x1000>; 251 + fsl,primary-cache-geometry = <32 1>; 252 + fsl,secondary-cache-geometry = <128 2>; 253 + }; 254 + 255 + pamu1: pamu@1000 { 256 + reg = <0x1000 0x1000>; 257 + fsl,primary-cache-geometry = <32 1>; 258 + fsl,secondary-cache-geometry = <128 2>; 259 + }; 260 + 261 + pamu2: pamu@2000 { 262 + reg = <0x2000 0x1000>; 263 + fsl,primary-cache-geometry = <32 1>; 264 + fsl,secondary-cache-geometry = <128 2>; 265 + }; 266 + 267 + pamu3: pamu@3000 { 268 + reg = <0x3000 0x1000>; 269 + fsl,primary-cache-geometry = <32 1>; 270 + fsl,secondary-cache-geometry = <128 2>; 271 + }; 272 + 273 + pamu4: pamu@4000 { 274 + reg = <0x4000 0x1000>; 275 + fsl,primary-cache-geometry = <32 1>; 276 + fsl,secondary-cache-geometry = <128 2>; 277 + }; 249 278 }; 250 279 251 280 /include/ "qoriq-mpic.dtsi" ··· 319 284 }; 320 285 321 286 /include/ "qoriq-dma-0.dtsi" 287 + dma@100300 { 288 + fsl,iommu-parent = <&pamu0>; 289 + fsl,liodn-reg = <&guts 0x580>; /* DMA1LIODNR */ 290 + }; 291 + 322 292 /include/ "qoriq-dma-1.dtsi" 293 + dma@101300 { 294 + fsl,iommu-parent = <&pamu0>; 295 + fsl,liodn-reg = <&guts 0x584>; /* DMA2LIODNR */ 296 + }; 297 + 323 298 /include/ "qoriq-espi-0.dtsi" 324 299 spi@110000 { 325 300 fsl,espi-num-chipselects = <4>; ··· 337 292 338 293 /include/ "qoriq-esdhc-0.dtsi" 339 294 sdhc@114000 { 295 + fsl,iommu-parent = <&pamu2>; 296 + fsl,liodn-reg = <&guts 0x530>; /* eSDHCLIODNR */ 340 297 sdhci,auto-cmd12; 341 298 }; 342 299 ··· 348 301 /include/ "qoriq-duart-1.dtsi" 349 302 /include/ "qoriq-gpio-0.dtsi" 350 303 /include/ "qoriq-usb2-mph-0.dtsi" 351 - usb0: usb@210000 { 352 - compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph"; 353 - phy_type = "utmi"; 354 - port0; 355 - }; 304 + usb0: usb@210000 { 305 + compatible = "fsl-usb2-mph-v1.6", "fsl,mpc85xx-usb2-mph", "fsl-usb2-mph"; 306 + fsl,iommu-parent = <&pamu4>; 307 + fsl,liodn-reg = <&guts 0x520>; /* USB1LIODNR */ 308 + phy_type = "utmi"; 309 + port0; 310 + }; 356 311 357 312 /include/ "qoriq-usb2-dr-0.dtsi" 358 - usb1: usb@211000 { 359 - compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 360 - dr_mode = "host"; 361 - phy_type = "utmi"; 362 - }; 313 + usb1: usb@211000 { 314 + compatible = "fsl-usb2-dr-v1.6", "fsl,mpc85xx-usb2-dr", "fsl-usb2-dr"; 315 + fsl,iommu-parent = <&pamu4>; 316 + fsl,liodn-reg = <&guts 0x524>; /* USB2LIODNR */ 317 + dr_mode = "host"; 318 + phy_type = "utmi"; 319 + }; 363 320 364 321 /include/ "qoriq-sata2-0.dtsi" 322 + sata@220000 { 323 + fsl,iommu-parent = <&pamu4>; 324 + fsl,liodn-reg = <&guts 0x550>; /* SATA1LIODNR */ 325 + }; 326 + 365 327 /include/ "qoriq-sata2-1.dtsi" 328 + sata@221000 { 329 + fsl,iommu-parent = <&pamu4>; 330 + fsl,liodn-reg = <&guts 0x554>; /* SATA2LIODNR */ 331 + }; 332 + 366 333 /include/ "qoriq-sec5.2-0.dtsi" 334 + crypto@300000 { 335 + fsl,iommu-parent = <&pamu4>; 336 + }; 367 337 };