Re: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: "ext Kanigeri, Hari" <h-kanigeri2@xxxxxx>
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@xxxxxxxxx]
> > Sent: Friday, July 24, 2009 1:22 PM
> > To: Kanigeri, Hari
> > Cc: tony@xxxxxxxxxxx; linux-omap@xxxxxxxxxxxxxxx; Gupta, Ramesh;
> > rmk@xxxxxxxxxxxxxxxx; Pasam, Vijay
> > Subject: Re: [RFC][PATCH 2/3] ARM:OMAP4 iommu:add omap4 support in iommu
> > 
> > From: "ext Kanigeri, Hari" <h-kanigeri2@xxxxxx>
> > 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@xxxxxx>
> > > ---
> > >  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@xxxxxx>
> > > + *
> > > + * 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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux