Message ID | 8F7AF80515AF0D4D93307E594F3CB40E3A8CAD44@dlee03.ent.ti.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
On Fri, Jul 24, 2009 at 07:22:32PM +0200, ext Kanigeri, Hari wrote: > This patch adds omap4 support in iommu > module. This creates OMAP4 platform specific file > for iommu and defines the Ducati MMU fault interrupt. > > Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> > --- > arch/arm/mach-omap2/omap4-iommu.c | 112 ++++++++++++++++++++++++++++++++ > arch/arm/plat-omap/include/mach/irqs.h | 2 +- > 2 files changed, 113 insertions(+), 1 deletions(-) > create mode 100644 arch/arm/mach-omap2/omap4-iommu.c > > diff --git a/arch/arm/mach-omap2/omap4-iommu.c b/arch/arm/mach-omap2/omap4-iommu.c > new file mode 100644 > index 0000000..5a782df > --- /dev/null > +++ b/arch/arm/mach-omap2/omap4-iommu.c > @@ -0,0 +1,112 @@ > +/* > + * omap iommu: omap4 device registration > + * > + * Copyright (C) 2009-2010 Nokia Corporation > + * > + * Written by Hari Kanigeri <h-kanigeri2@ti.com> > + * > + * Added support for OMAP4. This is based on original file > + * omap3-iommu.c > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +#include <linux/platform_device.h> > + > +#include <mach/iommu.h> > +#include <mach/irqs.h> > + > +#define OMAP4_MMU1_BASE 0x55082000 > +#define OMAP4_MMU2_BASE 0x4A066000 > + > +#define OMAP4_MMU1_IRQ INT_44XX_DUCATI_MMU_IRQ > +#define OMAP4_MMU2_IRQ INT_44XX_DSP_MMU > + > + > + > +static unsigned long iommu_base[] __initdata = { > + OMAP4_MMU1_BASE, > + OMAP4_MMU2_BASE, > +}; > + > +static int iommu_irq[] __initdata = { > + OMAP4_MMU1_IRQ, > + OMAP4_MMU2_IRQ, > +}; these two looks really odd :-s > + > +static const struct iommu_platform_data omap4_iommu_pdata[] __initconst = { > + { > + .name = "ducati", > + .nr_tlb_entries = 32, > + .clk_name = "ducati_ick", passing clk names should be avoided. use clkdev. > + }, > +#if defined(CONFIG_MPU_TESLA_IOMMU) this ifdef looks odd.
hi, On Fri, Jul 24, 2009 at 08:47:57PM +0200, Doyu Hiroshi (Nokia-D/Helsinki) wrote: > > > +static unsigned long iommu_base[] __initdata = { > > > + OMAP4_MMU1_BASE, > > > + OMAP4_MMU2_BASE, > > > +}; > > > + > > > +static int iommu_irq[] __initdata = { > > > + OMAP4_MMU1_IRQ, > > > + OMAP4_MMU2_IRQ, > > > +}; > > > > these two looks really odd :-s > > I think that the above just follows Russeell's proposal as below: > > http://lists.arm.linux.org.uk/lurker/message/20090516.092036.df9420d1.en.html I see... still looks odd though.
> -----Original Message----- > From: linux-omap-owner@vger.kernel.org [mailto:linux-omap- > owner@vger.kernel.org] On Behalf Of Kanigeri, Hari > Sent: Friday, July 24, 2009 10:53 PM > To: tony@atomide.com; Hiroshi DOYU > Cc: linux-omap@vger.kernel.org; Gupta, Ramesh; rmk@arm.linux.org.uk; Pasam, > Vijay > Subject: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > > This patch adds omap4 support in iommu > module. This creates OMAP4 platform specific file > for iommu and defines the Ducati MMU fault interrupt. > > Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> > --- > arch/arm/mach-omap2/omap4-iommu.c | 112 > ++++++++++++++++++++++++++++++++ > arch/arm/plat-omap/include/mach/irqs.h | 2 +- > 2 files changed, 113 insertions(+), 1 deletions(-) > create mode 100644 arch/arm/mach-omap2/omap4-iommu.c > > diff --git a/arch/arm/mach-omap2/omap4-iommu.c b/arch/arm/mach- > omap2/omap4-iommu.c > new file mode 100644 > index 0000000..5a782df > --- /dev/null > +++ b/arch/arm/mach-omap2/omap4-iommu.c > @@ -0,0 +1,112 @@ > +/* > + * omap iommu: omap4 device registration > + * > + * Copyright (C) 2009-2010 Nokia Corporation Hari, We are still in 2009 :) Regards, Santosh -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Santosh, > > + * omap iommu: omap4 device registration > > + * > > + * Copyright (C) 2009-2010 Nokia Corporation > Hari, > We are still in 2009 :) -- I wasn't sure how this works, so as we are already well past the mid-year, I placed the copyright year covering current year and next year :). Thank you, Best regards, Hari > -----Original Message----- > From: Shilimkar, Santosh > Sent: Saturday, July 25, 2009 4:02 AM > To: Kanigeri, Hari; tony@atomide.com; Hiroshi DOYU > Cc: linux-omap@vger.kernel.org; Gupta, Ramesh; rmk@arm.linux.org.uk; > Pasam, Vijay > Subject: RE: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > > > > -----Original Message----- > > From: linux-omap-owner@vger.kernel.org [mailto:linux-omap- > > owner@vger.kernel.org] On Behalf Of Kanigeri, Hari > > Sent: Friday, July 24, 2009 10:53 PM > > To: tony@atomide.com; Hiroshi DOYU > > Cc: linux-omap@vger.kernel.org; Gupta, Ramesh; rmk@arm.linux.org.uk; > Pasam, > > Vijay > > Subject: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > > > > This patch adds omap4 support in iommu > > module. This creates OMAP4 platform specific file > > for iommu and defines the Ducati MMU fault interrupt. > > > > Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> > > --- > > arch/arm/mach-omap2/omap4-iommu.c | 112 > > ++++++++++++++++++++++++++++++++ > > arch/arm/plat-omap/include/mach/irqs.h | 2 +- > > 2 files changed, 113 insertions(+), 1 deletions(-) > > create mode 100644 arch/arm/mach-omap2/omap4-iommu.c > > > > diff --git a/arch/arm/mach-omap2/omap4-iommu.c b/arch/arm/mach- > > omap2/omap4-iommu.c > > new file mode 100644 > > index 0000000..5a782df > > --- /dev/null > > +++ b/arch/arm/mach-omap2/omap4-iommu.c > > @@ -0,0 +1,112 @@ > > +/* > > + * omap iommu: omap4 device registration > > + * > > + * Copyright (C) 2009-2010 Nokia Corporation > Hari, > We are still in 2009 :) > Regards, > Santosh -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Felipe, > > + > > +static const struct iommu_platform_data omap4_iommu_pdata[] __initconst > = { > > + { > > + .name = "ducati", > > + .nr_tlb_entries = 32, > > + .clk_name = "ducati_ick", > > passing clk names should be avoided. use clkdev. > -- Thanks for your comment. I will include this change in my revised patch. Thank you, Best regards, Hari > -----Original Message----- > From: Felipe Balbi [mailto:felipe.balbi@nokia.com] > Sent: Friday, July 24, 2009 1:27 PM > To: Kanigeri, Hari > Cc: tony@atomide.com; Doyu Hiroshi (Nokia-D/Helsinki); linux- > omap@vger.kernel.org; Gupta, Ramesh; rmk@arm.linux.org.uk; Pasam, Vijay > Subject: Re: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > > On Fri, Jul 24, 2009 at 07:22:32PM +0200, ext Kanigeri, Hari wrote: > > This patch adds omap4 support in iommu > > module. This creates OMAP4 platform specific file > > for iommu and defines the Ducati MMU fault interrupt. > > > > Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> > > --- > > arch/arm/mach-omap2/omap4-iommu.c | 112 > ++++++++++++++++++++++++++++++++ > > arch/arm/plat-omap/include/mach/irqs.h | 2 +- > > 2 files changed, 113 insertions(+), 1 deletions(-) > > create mode 100644 arch/arm/mach-omap2/omap4-iommu.c > > > > diff --git a/arch/arm/mach-omap2/omap4-iommu.c b/arch/arm/mach- > omap2/omap4-iommu.c > > new file mode 100644 > > index 0000000..5a782df > > --- /dev/null > > +++ b/arch/arm/mach-omap2/omap4-iommu.c > > @@ -0,0 +1,112 @@ > > +/* > > + * omap iommu: omap4 device registration > > + * > > + * Copyright (C) 2009-2010 Nokia Corporation > > + * > > + * Written by Hari Kanigeri <h-kanigeri2@ti.com> > > + * > > + * Added support for OMAP4. This is based on original file > > + * omap3-iommu.c > > + * > > + * This program is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License version 2 as > > + * published by the Free Software Foundation. > > + */ > > + > > +#include <linux/platform_device.h> > > + > > +#include <mach/iommu.h> > > +#include <mach/irqs.h> > > + > > +#define OMAP4_MMU1_BASE 0x55082000 > > +#define OMAP4_MMU2_BASE 0x4A066000 > > + > > +#define OMAP4_MMU1_IRQ INT_44XX_DUCATI_MMU_IRQ > > +#define OMAP4_MMU2_IRQ INT_44XX_DSP_MMU > > + > > + > > + > > +static unsigned long iommu_base[] __initdata = { > > + OMAP4_MMU1_BASE, > > + OMAP4_MMU2_BASE, > > +}; > > + > > +static int iommu_irq[] __initdata = { > > + OMAP4_MMU1_IRQ, > > + OMAP4_MMU2_IRQ, > > +}; > > these two looks really odd :-s > > > + > > +static const struct iommu_platform_data omap4_iommu_pdata[] __initconst > = { > > + { > > + .name = "ducati", > > + .nr_tlb_entries = 32, > > + .clk_name = "ducati_ick", > > passing clk names should be avoided. use clkdev. > > > + }, > > +#if defined(CONFIG_MPU_TESLA_IOMMU) > > this ifdef looks odd. > > -- > balbi -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Hiroshi, > > +static const struct iommu_platform_data omap4_iommu_pdata[] __initconst > = { > > + { > > + .name = "ducati", > > + .nr_tlb_entries = 32, > > + .clk_name = "ducati_ick", > > + }, > > +#if defined(CONFIG_MPU_TESLA_IOMMU) > > + { > > + .name = "tesla", > > + .nr_tlb_entries = 32, > > + .clk_name = "tesla_ick", > > + }, > > +#endif > > +}; > > If iommu is used as a character device driver, is the above config still > necessary? -- My apologies, I am not sure what you mean by this. Can you please elaborate a bit more. Thank you, Best regards, Hari > -----Original Message----- > From: Hiroshi DOYU [mailto:Hiroshi.DOYU@nokia.com] > Sent: Friday, July 24, 2009 1:22 PM > To: Kanigeri, Hari > Cc: tony@atomide.com; linux-omap@vger.kernel.org; Gupta, Ramesh; > rmk@arm.linux.org.uk; Pasam, Vijay > Subject: Re: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > > From: "ext Kanigeri, Hari" <h-kanigeri2@ti.com> > Subject: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > Date: Fri, 24 Jul 2009 19:22:32 +0200 > > > This patch adds omap4 support in iommu > > module. This creates OMAP4 platform specific file > > for iommu and defines the Ducati MMU fault interrupt. > > > > Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> > > --- > > arch/arm/mach-omap2/omap4-iommu.c | 112 > ++++++++++++++++++++++++++++++++ > > arch/arm/plat-omap/include/mach/irqs.h | 2 +- > > 2 files changed, 113 insertions(+), 1 deletions(-) > > create mode 100644 arch/arm/mach-omap2/omap4-iommu.c > > > > diff --git a/arch/arm/mach-omap2/omap4-iommu.c b/arch/arm/mach- > omap2/omap4-iommu.c > > new file mode 100644 > > index 0000000..5a782df > > --- /dev/null > > +++ b/arch/arm/mach-omap2/omap4-iommu.c > > @@ -0,0 +1,112 @@ > > +/* > > + * omap iommu: omap4 device registration > > + * > > + * Copyright (C) 2009-2010 Nokia Corporation > > + * > > + * Written by Hari Kanigeri <h-kanigeri2@ti.com> > > + * > > + * Added support for OMAP4. This is based on original file > > + * omap3-iommu.c > > + * > > + * This program is free software; you can redistribute it and/or modify > > + * it under the terms of the GNU General Public License version 2 as > > + * published by the Free Software Foundation. > > + */ > > + > > +#include <linux/platform_device.h> > > + > > +#include <mach/iommu.h> > > +#include <mach/irqs.h> > > + > > +#define OMAP4_MMU1_BASE 0x55082000 > > +#define OMAP4_MMU2_BASE 0x4A066000 > > + > > +#define OMAP4_MMU1_IRQ INT_44XX_DUCATI_MMU_IRQ > > +#define OMAP4_MMU2_IRQ INT_44XX_DSP_MMU > > + > > + > > + > > +static unsigned long iommu_base[] __initdata = { > > + OMAP4_MMU1_BASE, > > + OMAP4_MMU2_BASE, > > +}; > > + > > +static int iommu_irq[] __initdata = { > > + OMAP4_MMU1_IRQ, > > + OMAP4_MMU2_IRQ, > > +}; > > + > > +static const struct iommu_platform_data omap4_iommu_pdata[] __initconst > = { > > + { > > + .name = "ducati", > > + .nr_tlb_entries = 32, > > + .clk_name = "ducati_ick", > > + }, > > +#if defined(CONFIG_MPU_TESLA_IOMMU) > > + { > > + .name = "tesla", > > + .nr_tlb_entries = 32, > > + .clk_name = "tesla_ick", > > + }, > > +#endif > > +}; > > If iommu is used as a character device driver, is the above config still > necessary? > > > +#define NR_IOMMU_DEVICES ARRAY_SIZE(omap4_iommu_pdata) > > + > > +static struct platform_device *omap4_iommu_pdev[NR_IOMMU_DEVICES]; > > + > > +static int __init omap4_iommu_init(void) > > +{ > > + int i, err; > > + > > + for (i = 0; i < NR_IOMMU_DEVICES; i++) { > > + struct platform_device *pdev; > > + struct resource res[2]; > > + > > + pdev = platform_device_alloc("omap-iommu", i); > > + if (!pdev) { > > + err = -ENOMEM; > > + goto err_out; > > + } > > + > > + memset(res, 0, sizeof(res)); > > + res[0].start = iommu_base[i]; > > + res[0].end = iommu_base[i] + MMU_REG_SIZE - 1; > > + res[0].flags = IORESOURCE_MEM; > > + res[1].start = res[1].end = iommu_irq[i]; > > + res[1].flags = IORESOURCE_IRQ; > > + > > + err = platform_device_add_resources(pdev, res, > > + ARRAY_SIZE(res)); > > + if (err) > > + goto err_out; > > + err = platform_device_add_data(pdev, &omap4_iommu_pdata[i], > > + sizeof(omap4_iommu_pdata[0])); > > + if (err) > > + goto err_out; > > + err = platform_device_add(pdev); > > + if (err) > > + goto err_out; > > + omap4_iommu_pdev[i] = pdev; > > + } > > + return 0; > > + > > +err_out: > > + while (i--) > > + platform_device_put(omap4_iommu_pdev[i]); > > + return err; > > +} > > +module_init(omap4_iommu_init); > > + > > +static void __exit omap4_iommu_exit(void) > > +{ > > + int i; > > + > > + for (i = 0; i < NR_IOMMU_DEVICES; i++) > > + platform_device_unregister(omap4_iommu_pdev[i]); > > +} > > +module_exit(omap4_iommu_exit); > > + > > +MODULE_AUTHOR("Hiroshi DOYU, Hari Kanigeri"); > > +MODULE_DESCRIPTION("omap iommu: omap4 device registration"); > > +MODULE_LICENSE("GPL v2"); > > + > > diff --git a/arch/arm/plat-omap/include/mach/irqs.h b/arch/arm/plat- > omap/include/mach/irqs.h > > index fb7cb77..34b6d09 100644 > > --- a/arch/arm/plat-omap/include/mach/irqs.h > > +++ b/arch/arm/plat-omap/include/mach/irqs.h > > @@ -511,7 +511,7 @@ > > #define INT_44XX_TLL_IRQ (78 + IRQ_GIC_START) > > #define INT_44XX_PARTHASH_IRQ (79 + IRQ_GIC_START) > > #define INT_44XX_MMC3_IRQ (94 + IRQ_GIC_START) > > - > > +#define INT_44XX_DUCATI_MMU_IRQ (100 + IRQ_GIC_START) > > > > /* Max. 128 level 2 IRQs (OMAP1610), 192 GPIOs (OMAP730/850) and > > * 16 MPUIO lines */ > > -- > > 1.5.4.3 > > > > > > Thank you, > > Best regards, > > Hari > > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hi Hiroshi, > > This "omap iommu" driver is used in OMAP4 IPC and its interface is a > character device node. IOW, the client of this device will be an > userland process and kernel won't know if it uses or not, but kernel > just provides "/dev/iommu?" for userland. So I don't think that we > have to care about the dependency of the existance of clients, at > least, for a moment. > > > The first patch set that I sent is to provide support in IOMMU for OMAP4 just like how it is done in OMAP3 today. The define "CONFIG_MPU_TESLA_IOMMU" is used for now because in the first phase we are planning to use DSP-Bridge to communicate with Tesla (until we move the new user-land IPC to replace DSP-Bridge for OMAP4). IMHO, let's go ahead with these changes and any changes to support IOMMU from user-land we can address them in next set of patches. Thank you, Best regards, Hari > -----Original Message----- > From: Hiroshi DOYU [mailto:Hiroshi.DOYU@nokia.com] > Sent: Monday, July 27, 2009 1:48 AM > To: Kanigeri, Hari > Cc: tony@atomide.com; linux-omap@vger.kernel.org; Gupta, Ramesh; > rmk@arm.linux.org.uk; Pasam, Vijay > Subject: Re: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > > From: "ext Kanigeri, Hari" <h-kanigeri2@ti.com> > Subject: RE: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > Date: Mon, 27 Jul 2009 02:18:21 +0200 > > > Hi Hiroshi, > > > > > > +static const struct iommu_platform_data omap4_iommu_pdata[] > __initconst > > > = { > > > > + { > > > > + .name = "ducati", > > > > + .nr_tlb_entries = 32, > > > > + .clk_name = "ducati_ick", > > > > + }, > > > > +#if defined(CONFIG_MPU_TESLA_IOMMU) > > > > + { > > > > + .name = "tesla", > > > > + .nr_tlb_entries = 32, > > > > + .clk_name = "tesla_ick", > > > > + }, > > > > +#endif > > > > +}; > > > > > > If iommu is used as a character device driver, is the above config > still > > > necessary? > > > > -- My apologies, I am not sure what you mean by this. Can you please > elaborate a bit more. > > Well...I'm trying to explain;), > > This "omap iommu" driver is used in OMAP4 IPC and its interface is a > character device node. IOW, the client of this device will be an > userland process and kernel won't know if it uses or not, but kernel > just provides "/dev/iommu?" for userland. So I don't think that we > have to care about the dependency of the existance of clients, at > least, for a moment. > > > > > Thank you, > > Best regards, > > Hari > > > > > -----Original Message----- > > > From: Hiroshi DOYU [mailto:Hiroshi.DOYU@nokia.com] > > > Sent: Friday, July 24, 2009 1:22 PM > > > To: Kanigeri, Hari > > > Cc: tony@atomide.com; linux-omap@vger.kernel.org; Gupta, Ramesh; > > > rmk@arm.linux.org.uk; Pasam, Vijay > > > Subject: Re: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in > iommu > > > > > > From: "ext Kanigeri, Hari" <h-kanigeri2@ti.com> > > > Subject: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu > > > Date: Fri, 24 Jul 2009 19:22:32 +0200 > > > > > > > This patch adds omap4 support in iommu > > > > module. This creates OMAP4 platform specific file > > > > for iommu and defines the Ducati MMU fault interrupt. > > > > > > > > Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> > > > > --- > > > > arch/arm/mach-omap2/omap4-iommu.c | 112 > > > ++++++++++++++++++++++++++++++++ > > > > arch/arm/plat-omap/include/mach/irqs.h | 2 +- > > > > 2 files changed, 113 insertions(+), 1 deletions(-) > > > > create mode 100644 arch/arm/mach-omap2/omap4-iommu.c > > > > > > > > diff --git a/arch/arm/mach-omap2/omap4-iommu.c b/arch/arm/mach- > > > omap2/omap4-iommu.c > > > > new file mode 100644 > > > > index 0000000..5a782df > > > > --- /dev/null > > > > +++ b/arch/arm/mach-omap2/omap4-iommu.c > > > > @@ -0,0 +1,112 @@ > > > > +/* > > > > + * omap iommu: omap4 device registration > > > > + * > > > > + * Copyright (C) 2009-2010 Nokia Corporation > > > > + * > > > > + * Written by Hari Kanigeri <h-kanigeri2@ti.com> > > > > + * > > > > + * Added support for OMAP4. This is based on original file > > > > + * omap3-iommu.c > > > > + * > > > > + * This program is free software; you can redistribute it and/or > modify > > > > + * it under the terms of the GNU General Public License version 2 > as > > > > + * published by the Free Software Foundation. > > > > + */ > > > > + > > > > +#include <linux/platform_device.h> > > > > + > > > > +#include <mach/iommu.h> > > > > +#include <mach/irqs.h> > > > > + > > > > +#define OMAP4_MMU1_BASE 0x55082000 > > > > +#define OMAP4_MMU2_BASE 0x4A066000 > > > > + > > > > +#define OMAP4_MMU1_IRQ INT_44XX_DUCATI_MMU_IRQ > > > > +#define OMAP4_MMU2_IRQ INT_44XX_DSP_MMU > > > > + > > > > + > > > > + > > > > +static unsigned long iommu_base[] __initdata = { > > > > + OMAP4_MMU1_BASE, > > > > + OMAP4_MMU2_BASE, > > > > +}; > > > > + > > > > +static int iommu_irq[] __initdata = { > > > > + OMAP4_MMU1_IRQ, > > > > + OMAP4_MMU2_IRQ, > > > > +}; > > > > + > > > > +static const struct iommu_platform_data omap4_iommu_pdata[] > __initconst > > > = { > > > > + { > > > > + .name = "ducati", > > > > + .nr_tlb_entries = 32, > > > > + .clk_name = "ducati_ick", > > > > + }, > > > > +#if defined(CONFIG_MPU_TESLA_IOMMU) > > > > + { > > > > + .name = "tesla", > > > > + .nr_tlb_entries = 32, > > > > + .clk_name = "tesla_ick", > > > > + }, > > > > +#endif > > > > +}; > > > > > > If iommu is used as a character device driver, is the above config > still > > > necessary? > > > > > > > +#define NR_IOMMU_DEVICES ARRAY_SIZE(omap4_iommu_pdata) > > > > + > > > > +static struct platform_device *omap4_iommu_pdev[NR_IOMMU_DEVICES]; > > > > + > > > > +static int __init omap4_iommu_init(void) > > > > +{ > > > > + int i, err; > > > > + > > > > + for (i = 0; i < NR_IOMMU_DEVICES; i++) { > > > > + struct platform_device *pdev; > > > > + struct resource res[2]; > > > > + > > > > + pdev = platform_device_alloc("omap-iommu", i); > > > > + if (!pdev) { > > > > + err = -ENOMEM; > > > > + goto err_out; > > > > + } > > > > + > > > > + memset(res, 0, sizeof(res)); > > > > + res[0].start = iommu_base[i]; > > > > + res[0].end = iommu_base[i] + MMU_REG_SIZE - 1; > > > > + res[0].flags = IORESOURCE_MEM; > > > > + res[1].start = res[1].end = iommu_irq[i]; > > > > + res[1].flags = IORESOURCE_IRQ; > > > > + > > > > + err = platform_device_add_resources(pdev, res, > > > > + ARRAY_SIZE(res)); > > > > + if (err) > > > > + goto err_out; > > > > + err = platform_device_add_data(pdev, > &omap4_iommu_pdata[i], > > > > + sizeof(omap4_iommu_pdata[0])); > > > > + if (err) > > > > + goto err_out; > > > > + err = platform_device_add(pdev); > > > > + if (err) > > > > + goto err_out; > > > > + omap4_iommu_pdev[i] = pdev; > > > > + } > > > > + return 0; > > > > + > > > > +err_out: > > > > + while (i--) > > > > + platform_device_put(omap4_iommu_pdev[i]); > > > > + return err; > > > > +} > > > > +module_init(omap4_iommu_init); > > > > + > > > > +static void __exit omap4_iommu_exit(void) > > > > +{ > > > > + int i; > > > > + > > > > + for (i = 0; i < NR_IOMMU_DEVICES; i++) > > > > + platform_device_unregister(omap4_iommu_pdev[i]); > > > > +} > > > > +module_exit(omap4_iommu_exit); > > > > + > > > > +MODULE_AUTHOR("Hiroshi DOYU, Hari Kanigeri"); > > > > +MODULE_DESCRIPTION("omap iommu: omap4 device registration"); > > > > +MODULE_LICENSE("GPL v2"); > > > > + > > > > diff --git a/arch/arm/plat-omap/include/mach/irqs.h b/arch/arm/plat- > > > omap/include/mach/irqs.h > > > > index fb7cb77..34b6d09 100644 > > > > --- a/arch/arm/plat-omap/include/mach/irqs.h > > > > +++ b/arch/arm/plat-omap/include/mach/irqs.h > > > > @@ -511,7 +511,7 @@ > > > > #define INT_44XX_TLL_IRQ (78 + IRQ_GIC_START) > > > > #define INT_44XX_PARTHASH_IRQ (79 + IRQ_GIC_START) > > > > #define INT_44XX_MMC3_IRQ (94 + IRQ_GIC_START) > > > > - > > > > +#define INT_44XX_DUCATI_MMU_IRQ (100 + IRQ_GIC_START) > > > > > > > > /* Max. 128 level 2 IRQs (OMAP1610), 192 GPIOs (OMAP730/850) and > > > > * 16 MPUIO lines */ > > > > -- > > > > 1.5.4.3 > > > > > > > > > > > > Thank you, > > > > Best regards, > > > > Hari > > > > > > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/arm/mach-omap2/omap4-iommu.c b/arch/arm/mach-omap2/omap4-iommu.c new file mode 100644 index 0000000..5a782df --- /dev/null +++ b/arch/arm/mach-omap2/omap4-iommu.c @@ -0,0 +1,112 @@ +/* + * omap iommu: omap4 device registration + * + * Copyright (C) 2009-2010 Nokia Corporation + * + * Written by Hari Kanigeri <h-kanigeri2@ti.com> + * + * Added support for OMAP4. This is based on original file + * omap3-iommu.c + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/platform_device.h> + +#include <mach/iommu.h> +#include <mach/irqs.h> + +#define OMAP4_MMU1_BASE 0x55082000 +#define OMAP4_MMU2_BASE 0x4A066000 + +#define OMAP4_MMU1_IRQ INT_44XX_DUCATI_MMU_IRQ +#define OMAP4_MMU2_IRQ INT_44XX_DSP_MMU + + + +static unsigned long iommu_base[] __initdata = { + OMAP4_MMU1_BASE, + OMAP4_MMU2_BASE, +}; + +static int iommu_irq[] __initdata = { + OMAP4_MMU1_IRQ, + OMAP4_MMU2_IRQ, +}; + +static const struct iommu_platform_data omap4_iommu_pdata[] __initconst = { + { + .name = "ducati", + .nr_tlb_entries = 32, + .clk_name = "ducati_ick", + }, +#if defined(CONFIG_MPU_TESLA_IOMMU) + { + .name = "tesla", + .nr_tlb_entries = 32, + .clk_name = "tesla_ick", + }, +#endif +}; +#define NR_IOMMU_DEVICES ARRAY_SIZE(omap4_iommu_pdata) + +static struct platform_device *omap4_iommu_pdev[NR_IOMMU_DEVICES]; + +static int __init omap4_iommu_init(void) +{ + int i, err; + + for (i = 0; i < NR_IOMMU_DEVICES; i++) { + struct platform_device *pdev; + struct resource res[2]; + + pdev = platform_device_alloc("omap-iommu", i); + if (!pdev) { + err = -ENOMEM; + goto err_out; + } + + memset(res, 0, sizeof(res)); + res[0].start = iommu_base[i]; + res[0].end = iommu_base[i] + MMU_REG_SIZE - 1; + res[0].flags = IORESOURCE_MEM; + res[1].start = res[1].end = iommu_irq[i]; + res[1].flags = IORESOURCE_IRQ; + + err = platform_device_add_resources(pdev, res, + ARRAY_SIZE(res)); + if (err) + goto err_out; + err = platform_device_add_data(pdev, &omap4_iommu_pdata[i], + sizeof(omap4_iommu_pdata[0])); + if (err) + goto err_out; + err = platform_device_add(pdev); + if (err) + goto err_out; + omap4_iommu_pdev[i] = pdev; + } + return 0; + +err_out: + while (i--) + platform_device_put(omap4_iommu_pdev[i]); + return err; +} +module_init(omap4_iommu_init); + +static void __exit omap4_iommu_exit(void) +{ + int i; + + for (i = 0; i < NR_IOMMU_DEVICES; i++) + platform_device_unregister(omap4_iommu_pdev[i]); +} +module_exit(omap4_iommu_exit); + +MODULE_AUTHOR("Hiroshi DOYU, Hari Kanigeri"); +MODULE_DESCRIPTION("omap iommu: omap4 device registration"); +MODULE_LICENSE("GPL v2"); + diff --git a/arch/arm/plat-omap/include/mach/irqs.h b/arch/arm/plat-omap/include/mach/irqs.h index fb7cb77..34b6d09 100644 --- a/arch/arm/plat-omap/include/mach/irqs.h +++ b/arch/arm/plat-omap/include/mach/irqs.h @@ -511,7 +511,7 @@ #define INT_44XX_TLL_IRQ (78 + IRQ_GIC_START) #define INT_44XX_PARTHASH_IRQ (79 + IRQ_GIC_START) #define INT_44XX_MMC3_IRQ (94 + IRQ_GIC_START) - +#define INT_44XX_DUCATI_MMU_IRQ (100 + IRQ_GIC_START) /* Max. 128 level 2 IRQs (OMAP1610), 192 GPIOs (OMAP730/850) and * 16 MPUIO lines */
This patch adds omap4 support in iommu module. This creates OMAP4 platform specific file for iommu and defines the Ducati MMU fault interrupt. Signed-off-by: Hari Kanigeri <h-kanigeri2@ti.com> --- arch/arm/mach-omap2/omap4-iommu.c | 112 ++++++++++++++++++++++++++++++++ arch/arm/plat-omap/include/mach/irqs.h | 2 +- 2 files changed, 113 insertions(+), 1 deletions(-) create mode 100644 arch/arm/mach-omap2/omap4-iommu.c