|
@@ -28,6 +28,7 @@
|
|
|
#include <linux/sh_dma.h>
|
|
|
#include <linux/sh_timer.h>
|
|
|
#include <linux/dma-mapping.h>
|
|
|
+#include <linux/platform_data/sh_ipmmu.h>
|
|
|
#include <mach/dma-register.h>
|
|
|
#include <mach/r8a7740.h>
|
|
|
#include <mach/pm-rmobile.h>
|
|
@@ -262,6 +263,37 @@ static struct platform_device cmt10_device = {
|
|
|
.num_resources = ARRAY_SIZE(cmt10_resources),
|
|
|
};
|
|
|
|
|
|
+/* IPMMUI (an IPMMU module for ICB/LMB) */
|
|
|
+static struct resource ipmmu_resources[] = {
|
|
|
+ [0] = {
|
|
|
+ .name = "IPMMUI",
|
|
|
+ .start = 0xfe951000,
|
|
|
+ .end = 0xfe9510ff,
|
|
|
+ .flags = IORESOURCE_MEM,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static const char * const ipmmu_dev_names[] = {
|
|
|
+ "sh_mobile_lcdc_fb.0",
|
|
|
+ "sh_mobile_lcdc_fb.1",
|
|
|
+ "sh_mobile_ceu.0",
|
|
|
+};
|
|
|
+
|
|
|
+static struct shmobile_ipmmu_platform_data ipmmu_platform_data = {
|
|
|
+ .dev_names = ipmmu_dev_names,
|
|
|
+ .num_dev_names = ARRAY_SIZE(ipmmu_dev_names),
|
|
|
+};
|
|
|
+
|
|
|
+static struct platform_device ipmmu_device = {
|
|
|
+ .name = "ipmmu",
|
|
|
+ .id = -1,
|
|
|
+ .dev = {
|
|
|
+ .platform_data = &ipmmu_platform_data,
|
|
|
+ },
|
|
|
+ .resource = ipmmu_resources,
|
|
|
+ .num_resources = ARRAY_SIZE(ipmmu_resources),
|
|
|
+};
|
|
|
+
|
|
|
static struct platform_device *r8a7740_early_devices[] __initdata = {
|
|
|
&scif0_device,
|
|
|
&scif1_device,
|
|
@@ -273,6 +305,7 @@ static struct platform_device *r8a7740_early_devices[] __initdata = {
|
|
|
&scif7_device,
|
|
|
&scifb_device,
|
|
|
&cmt10_device,
|
|
|
+ &ipmmu_device,
|
|
|
};
|
|
|
|
|
|
/* DMA */
|