Laurent Pinchart | 4a93f21 | 2014-03-17 01:02:46 +0100 | [diff] [blame] | 1 | * Renesas VMSA-Compatible IOMMU |
| 2 | |
| 3 | The IPMMU is an IOMMU implementation compatible with the ARM VMSA page tables. |
| 4 | It provides address translation for bus masters outside of the CPU, each |
| 5 | connected to the IPMMU through a port called micro-TLB. |
| 6 | |
| 7 | |
| 8 | Required Properties: |
| 9 | |
Magnus Damm | d4e42e7 | 2016-02-29 23:33:09 +0900 | [diff] [blame] | 10 | - compatible: Must contain SoC-specific and generic entry below in case |
| 11 | the device is compatible with the R-Car Gen2 VMSA-compatible IPMMU. |
Magnus Damm | 89ae54b | 2015-11-17 12:53:20 +0900 | [diff] [blame] | 12 | |
| 13 | - "renesas,ipmmu-r8a73a4" for the R8A73A4 (R-Mobile APE6) IPMMU. |
| 14 | - "renesas,ipmmu-r8a7790" for the R8A7790 (R-Car H2) IPMMU. |
| 15 | - "renesas,ipmmu-r8a7791" for the R8A7791 (R-Car M2-W) IPMMU. |
| 16 | - "renesas,ipmmu-r8a7793" for the R8A7793 (R-Car M2-N) IPMMU. |
| 17 | - "renesas,ipmmu-r8a7794" for the R8A7794 (R-Car E2) IPMMU. |
Magnus Damm | d4e42e7 | 2016-02-29 23:33:09 +0900 | [diff] [blame] | 18 | - "renesas,ipmmu-r8a7795" for the R8A7795 (R-Car H3) IPMMU. |
Magnus Damm | 89ae54b | 2015-11-17 12:53:20 +0900 | [diff] [blame] | 19 | - "renesas,ipmmu-vmsa" for generic R-Car Gen2 VMSA-compatible IPMMU. |
| 20 | |
Laurent Pinchart | 4a93f21 | 2014-03-17 01:02:46 +0100 | [diff] [blame] | 21 | - reg: Base address and size of the IPMMU registers. |
| 22 | - interrupts: Specifiers for the MMU fault interrupts. For instances that |
| 23 | support secure mode two interrupts must be specified, for non-secure and |
| 24 | secure mode, in that order. For instances that don't support secure mode a |
Magnus Damm | d4e42e7 | 2016-02-29 23:33:09 +0900 | [diff] [blame] | 25 | single interrupt must be specified. Not required for cache IPMMUs. |
Laurent Pinchart | 4a93f21 | 2014-03-17 01:02:46 +0100 | [diff] [blame] | 26 | |
| 27 | - #iommu-cells: Must be 1. |
| 28 | |
Magnus Damm | d4e42e7 | 2016-02-29 23:33:09 +0900 | [diff] [blame] | 29 | Optional properties: |
| 30 | |
| 31 | - renesas,ipmmu-main: reference to the main IPMMU instance in two cells. |
| 32 | The first cell is a phandle to the main IPMMU and the second cell is |
| 33 | the interrupt bit number associated with the particular cache IPMMU device. |
| 34 | The interrupt bit number needs to match the main IPMMU IMSSTR register. |
| 35 | Only used by cache IPMMU instances. |
| 36 | |
| 37 | |
Laurent Pinchart | 4a93f21 | 2014-03-17 01:02:46 +0100 | [diff] [blame] | 38 | Each bus master connected to an IPMMU must reference the IPMMU in its device |
| 39 | node with the following property: |
| 40 | |
| 41 | - iommus: A reference to the IPMMU in two cells. The first cell is a phandle |
| 42 | to the IPMMU and the second cell the number of the micro-TLB that the |
| 43 | device is connected to. |
| 44 | |
| 45 | |
| 46 | Example: R8A7791 IPMMU-MX and VSP1-D0 bus master |
| 47 | |
| 48 | ipmmu_mx: mmu@fe951000 { |
Magnus Damm | 89ae54b | 2015-11-17 12:53:20 +0900 | [diff] [blame] | 49 | compatible = "renasas,ipmmu-r8a7791", "renasas,ipmmu-vmsa"; |
Laurent Pinchart | 4a93f21 | 2014-03-17 01:02:46 +0100 | [diff] [blame] | 50 | reg = <0 0xfe951000 0 0x1000>; |
| 51 | interrupts = <0 222 IRQ_TYPE_LEVEL_HIGH>, |
| 52 | <0 221 IRQ_TYPE_LEVEL_HIGH>; |
| 53 | #iommu-cells = <1>; |
| 54 | }; |
| 55 | |
| 56 | vsp1@fe928000 { |
| 57 | ... |
| 58 | iommus = <&ipmmu_mx 13>; |
| 59 | ... |
| 60 | }; |