From: Hideki EIRAKU <hdk@igel.co.jp>
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/2] ARM: mach-shmobile: sh7372: Add IPMMU device
Date: Wed, 25 Jul 2012 06:29:02 +0000 [thread overview]
Message-ID: <1343197742-13630-3-git-send-email-hdk@igel.co.jp> (raw)
In-Reply-To: <1343197742-13630-1-git-send-email-hdk@igel.co.jp>
This patch adds an IPMMU device and notifies the IPMMU driver which
devices are connected via the IPMMU module. All devices connected to the main
memory bus via the IPMMU module MUST be registered when SHMOBILE_IPMMU and
SHMOBILE_IOMMU are enabled because physical address cannot be used
while the IPMMU module's MMU function is enabled.
Signed-off-by: Hideki EIRAKU <hdk@igel.co.jp>
---
arch/arm/mach-shmobile/board-ap4evb.c | 5 +++++
arch/arm/mach-shmobile/board-mackerel.c | 5 +++++
arch/arm/mach-shmobile/setup-sh7372.c | 22 ++++++++++++++++++++++
3 files changed, 32 insertions(+), 0 deletions(-)
diff --git a/arch/arm/mach-shmobile/board-ap4evb.c b/arch/arm/mach-shmobile/board-ap4evb.c
index ace6024..c35bb75 100644
--- a/arch/arm/mach-shmobile/board-ap4evb.c
+++ b/arch/arm/mach-shmobile/board-ap4evb.c
@@ -59,6 +59,7 @@
#include <mach/common.h>
#include <mach/irqs.h>
#include <mach/sh7372.h>
+#include <mach/ipmmu.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -1434,6 +1435,10 @@ static void __init ap4evb_init(void)
sh7372_add_standard_devices();
+ ipmmu_add_device(&lcdc_device.dev);
+ ipmmu_add_device(&lcdc1_device.dev);
+ ipmmu_add_device(&ceu_device.dev);
+
/* HDMI */
gpio_request(GPIO_FN_HDMI_HPD, NULL);
gpio_request(GPIO_FN_HDMI_CEC, NULL);
diff --git a/arch/arm/mach-shmobile/board-mackerel.c b/arch/arm/mach-shmobile/board-mackerel.c
index 150122a..1dc9f44 100644
--- a/arch/arm/mach-shmobile/board-mackerel.c
+++ b/arch/arm/mach-shmobile/board-mackerel.c
@@ -58,6 +58,7 @@
#include <mach/common.h>
#include <mach/irqs.h>
#include <mach/sh7372.h>
+#include <mach/ipmmu.h>
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
@@ -1612,6 +1613,10 @@ static void __init mackerel_init(void)
sh7372_add_standard_devices();
+ ipmmu_add_device(&lcdc_device.dev);
+ ipmmu_add_device(&hdmi_lcdc_device.dev);
+ ipmmu_add_device(&ceu_device.dev);
+
platform_add_devices(mackerel_devices, ARRAY_SIZE(mackerel_devices));
sh7372_add_device_to_domain(&sh7372_a4lc, &lcdc_device);
diff --git a/arch/arm/mach-shmobile/setup-sh7372.c b/arch/arm/mach-shmobile/setup-sh7372.c
index fafce9c..5045638 100644
--- a/arch/arm/mach-shmobile/setup-sh7372.c
+++ b/arch/arm/mach-shmobile/setup-sh7372.c
@@ -37,6 +37,7 @@
#include <mach/irqs.h>
#include <mach/sh7372.h>
#include <mach/common.h>
+#include <mach/ipmmu.h>
#include <asm/mach/map.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -1005,6 +1006,23 @@ static struct platform_device spu1_device = {
.num_resources = ARRAY_SIZE(spu1_resources),
};
+/* IPMMUI (an IPMMU module for ICB/LMB) */
+static struct resource ipmmu_resources[] = {
+ [0] = {
+ .name = "IPMMUI",
+ .start = 0xfe951000,
+ .end = 0xfe9510ff,
+ .flags = IORESOURCE_MEM,
+ },
+};
+
+static struct platform_device ipmmu_device = {
+ .name = "ipmmu",
+ .id = -1,
+ .resource = ipmmu_resources,
+ .num_resources = ARRAY_SIZE(ipmmu_resources),
+};
+
static struct platform_device *sh7372_early_devices[] __initdata = {
&scif0_device,
&scif1_device,
@@ -1016,6 +1034,7 @@ static struct platform_device *sh7372_early_devices[] __initdata = {
&cmt2_device,
&tmu00_device,
&tmu01_device,
+ &ipmmu_device,
};
static struct platform_device *sh7372_late_devices[] __initdata = {
@@ -1057,6 +1076,9 @@ void __init sh7372_add_standard_devices(void)
platform_add_devices(sh7372_early_devices,
ARRAY_SIZE(sh7372_early_devices));
+ ipmmu_add_device(&vpu_device.dev);
+ ipmmu_add_device(&jpu_device.dev);
+
platform_add_devices(sh7372_late_devices,
ARRAY_SIZE(sh7372_late_devices));
--
1.7.0.4
next prev parent reply other threads:[~2012-07-25 6:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-25 6:29 [PATCH 0/2] Renesas IPMMU driver for sh7372 Hideki EIRAKU
2012-07-25 6:29 ` [PATCH 1/2] iommu/shmobile: Add iommu driver for Renesas IPMMU modules Hideki EIRAKU
2012-07-25 6:29 ` Hideki EIRAKU [this message]
2012-08-25 7:13 ` [PATCH 0/2] Renesas IPMMU driver for sh7372 Simon Horman
2012-08-30 2:03 ` Damian Hobson-Garcia
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1343197742-13630-3-git-send-email-hdk@igel.co.jp \
--to=hdk@igel.co.jp \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).