]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/iommu/Kconfig
Merge branches 'core', 'arm/omap', 'iommu/fixes', 'arm/tegra', 'arm/shmobile', 'arm...
[karo-tx-linux.git] / drivers / iommu / Kconfig
index e39f9dbf297ba977384bc9e1733ec7990c245c77..8fc1c7fa20b58fbe6cfb62fa5b30d37d3337991e 100644 (file)
@@ -158,7 +158,7 @@ config TEGRA_IOMMU_GART
 
 config TEGRA_IOMMU_SMMU
        bool "Tegra SMMU IOMMU Support"
-       depends on ARCH_TEGRA_3x_SOC && TEGRA_AHB
+       depends on ARCH_TEGRA && TEGRA_AHB
        select IOMMU_API
        help
          Enables support for remapping discontiguous physical memory
@@ -187,4 +187,78 @@ config EXYNOS_IOMMU_DEBUG
 
          Say N unless you need kernel log message for IOMMU debugging
 
+config SHMOBILE_IPMMU
+       bool
+
+config SHMOBILE_IPMMU_TLB
+       bool
+
+config SHMOBILE_IOMMU
+       bool "IOMMU for Renesas IPMMU/IPMMUI"
+       default n
+       depends on (ARM && ARCH_SHMOBILE)
+       select IOMMU_API
+       select ARM_DMA_USE_IOMMU
+       select SHMOBILE_IPMMU
+       select SHMOBILE_IPMMU_TLB
+       help
+         Support for Renesas IPMMU/IPMMUI. This option enables
+         remapping of DMA memory accesses from all of the IP blocks
+         on the ICB.
+
+         Warning: Drivers (including userspace drivers of UIO
+         devices) of the IP blocks on the ICB *must* use addresses
+         allocated from the IPMMU (iova) for DMA with this option
+         enabled.
+
+         If unsure, say N.
+
+choice
+       prompt "IPMMU/IPMMUI address space size"
+       default SHMOBILE_IOMMU_ADDRSIZE_2048MB
+       depends on SHMOBILE_IOMMU
+       help
+         This option sets IPMMU/IPMMUI address space size by
+         adjusting the 1st level page table size. The page table size
+         is calculated as follows:
+
+             page table size = number of page table entries * 4 bytes
+             number of page table entries = address space size / 1 MiB
+
+         For example, when the address space size is 2048 MiB, the
+         1st level page table size is 8192 bytes.
+
+       config SHMOBILE_IOMMU_ADDRSIZE_2048MB
+               bool "2 GiB"
+
+       config SHMOBILE_IOMMU_ADDRSIZE_1024MB
+               bool "1 GiB"
+
+       config SHMOBILE_IOMMU_ADDRSIZE_512MB
+               bool "512 MiB"
+
+       config SHMOBILE_IOMMU_ADDRSIZE_256MB
+               bool "256 MiB"
+
+       config SHMOBILE_IOMMU_ADDRSIZE_128MB
+               bool "128 MiB"
+
+       config SHMOBILE_IOMMU_ADDRSIZE_64MB
+               bool "64 MiB"
+
+       config SHMOBILE_IOMMU_ADDRSIZE_32MB
+               bool "32 MiB"
+
+endchoice
+
+config SHMOBILE_IOMMU_L1SIZE
+       int
+       default 8192 if SHMOBILE_IOMMU_ADDRSIZE_2048MB
+       default 4096 if SHMOBILE_IOMMU_ADDRSIZE_1024MB
+       default 2048 if SHMOBILE_IOMMU_ADDRSIZE_512MB
+       default 1024 if SHMOBILE_IOMMU_ADDRSIZE_256MB
+       default 512 if SHMOBILE_IOMMU_ADDRSIZE_128MB
+       default 256 if SHMOBILE_IOMMU_ADDRSIZE_64MB
+       default 128 if SHMOBILE_IOMMU_ADDRSIZE_32MB
+
 endif # IOMMU_SUPPORT