diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 14:09:17 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-26 14:09:17 -0500 |
commit | f6c0ffa8f0b0781f4954cb06f0a81d6c10c1b434 (patch) | |
tree | f99190661706d18f129497a4ef2d37822c9c34db /arch/arm/mach-shmobile/setup-r8a7740.c | |
parent | 42a0a1b0fd343888c59afc8b243a77bcec2cc11c (diff) | |
parent | 604542b824f72fa5d7fd977af277538c1e15b5f0 (diff) |
Merge tag 'iommu-updates-v3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu
Pull IOMMU Updates from Joerg Roedel:
"Besides some fixes and cleanups in the code there are three more
important changes to point out this time:
* New IOMMU driver for the ARM SHMOBILE platform
* An IOMMU-API extension for non-paging IOMMUs (required for
upcoming PAMU driver)
* Rework of the way the Tegra IOMMU driver accesses its
registetrs - register windows are easier to extend now.
There are also a few changes to non-iommu code, but that is acked by
the respective maintainers."
* tag 'iommu-updates-v3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu: (23 commits)
iommu/tegra: assume CONFIG_OF in SMMU driver
iommu/tegra: assume CONFIG_OF in gart driver
iommu/amd: Remove redundant NULL check before dma_ops_domain_free().
iommu/amd: Initialize device table after dma_ops
iommu/vt-d: Zero out allocated memory in dmar_enable_qi
iommu/tegra: smmu: Fix incorrect mask for regbase
iommu/exynos: Make exynos_sysmmu_disable static
ARM: mach-shmobile: r8a7740: Add IPMMU device
ARM: mach-shmobile: sh73a0: Add IPMMU device
ARM: mach-shmobile: sh7372: Add IPMMU device
iommu/shmobile: Add iommu driver for Renesas IPMMU modules
iommu: Add DOMAIN_ATTR_WINDOWS domain attribute
iommu: Add domain window handling functions
iommu: Implement DOMAIN_ATTR_PAGING attribute
iommu: Check for valid pgsize_bitmap in iommu_map/unmap
iommu: Make sure DOMAIN_ATTR_MAX is really the maximum
iommu/tegra: smmu: Change SMMU's dependency on ARCH_TEGRA
iommu/tegra: smmu: Use helper function to check for valid register offset
iommu/tegra: smmu: Support variable MMIO ranges/blocks
iommu/tegra: Add missing spinlock initialization
...
Diffstat (limited to 'arch/arm/mach-shmobile/setup-r8a7740.c')
-rw-r--r-- | arch/arm/mach-shmobile/setup-r8a7740.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c index 30ac79c7c687..8b85d4d8fab6 100644 --- a/arch/arm/mach-shmobile/setup-r8a7740.c +++ b/arch/arm/mach-shmobile/setup-r8a7740.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/serial_sci.h> | 27 | #include <linux/serial_sci.h> |
28 | #include <linux/sh_dma.h> | 28 | #include <linux/sh_dma.h> |
29 | #include <linux/sh_timer.h> | 29 | #include <linux/sh_timer.h> |
30 | #include <linux/platform_data/sh_ipmmu.h> | ||
30 | #include <mach/dma-register.h> | 31 | #include <mach/dma-register.h> |
31 | #include <mach/r8a7740.h> | 32 | #include <mach/r8a7740.h> |
32 | #include <mach/pm-rmobile.h> | 33 | #include <mach/pm-rmobile.h> |
@@ -378,6 +379,37 @@ static struct platform_device tmu02_device = { | |||
378 | .num_resources = ARRAY_SIZE(tmu02_resources), | 379 | .num_resources = ARRAY_SIZE(tmu02_resources), |
379 | }; | 380 | }; |
380 | 381 | ||
382 | /* IPMMUI (an IPMMU module for ICB/LMB) */ | ||
383 | static struct resource ipmmu_resources[] = { | ||
384 | [0] = { | ||
385 | .name = "IPMMUI", | ||
386 | .start = 0xfe951000, | ||
387 | .end = 0xfe9510ff, | ||
388 | .flags = IORESOURCE_MEM, | ||
389 | }, | ||
390 | }; | ||
391 | |||
392 | static const char * const ipmmu_dev_names[] = { | ||
393 | "sh_mobile_lcdc_fb.0", | ||
394 | "sh_mobile_lcdc_fb.1", | ||
395 | "sh_mobile_ceu.0", | ||
396 | }; | ||
397 | |||
398 | static struct shmobile_ipmmu_platform_data ipmmu_platform_data = { | ||
399 | .dev_names = ipmmu_dev_names, | ||
400 | .num_dev_names = ARRAY_SIZE(ipmmu_dev_names), | ||
401 | }; | ||
402 | |||
403 | static struct platform_device ipmmu_device = { | ||
404 | .name = "ipmmu", | ||
405 | .id = -1, | ||
406 | .dev = { | ||
407 | .platform_data = &ipmmu_platform_data, | ||
408 | }, | ||
409 | .resource = ipmmu_resources, | ||
410 | .num_resources = ARRAY_SIZE(ipmmu_resources), | ||
411 | }; | ||
412 | |||
381 | static struct platform_device *r8a7740_early_devices[] __initdata = { | 413 | static struct platform_device *r8a7740_early_devices[] __initdata = { |
382 | &scif0_device, | 414 | &scif0_device, |
383 | &scif1_device, | 415 | &scif1_device, |
@@ -392,6 +424,7 @@ static struct platform_device *r8a7740_early_devices[] __initdata = { | |||
392 | &tmu00_device, | 424 | &tmu00_device, |
393 | &tmu01_device, | 425 | &tmu01_device, |
394 | &tmu02_device, | 426 | &tmu02_device, |
427 | &ipmmu_device, | ||
395 | }; | 428 | }; |
396 | 429 | ||
397 | /* DMA */ | 430 | /* DMA */ |