On Sat, Nov 6, 2010 at 3:19 AM, Omar Ramirez Luna <omar.ramirez@xxxxxx> wrote: > Since omap-iommu is now using hwmod, there are structures and > arrays that can be cleaned up to increase the readability of > the code. > > Signed-off-by: Omar Ramirez Luna <omar.ramirez@xxxxxx> NAK. > --- > Âarch/arm/mach-omap2/omap-iommu.c    Â|  95 +++++++++++-------------------- > Âarch/arm/plat-omap/include/plat/iommu.h |  Â2 +- > Â2 files changed, 34 insertions(+), 63 deletions(-) > > diff --git a/arch/arm/mach-omap2/omap-iommu.c b/arch/arm/mach-omap2/omap-iommu.c > index 0a76bce..135474b 100644 > --- a/arch/arm/mach-omap2/omap-iommu.c > +++ b/arch/arm/mach-omap2/omap-iommu.c > @@ -17,53 +17,17 @@ > Â#include <plat/omap_hwmod.h> > Â#include <plat/omap_device.h> > > -struct iommu_device { > -    struct iommu_platform_data pdata; > +static char *omap3_devices[] = { Shouldn't this be __init? > +    "isp", #if defined(CONFIG_MPU_BRIDGE_IOMMU) > +    "iva2", #endif > +    NULL, > Â}; If you want to get rid of CONFIG_MPU_BRIDGE_IOMMU, do it in a separate patch. > -static int num_iommu_devices; > - > -#ifdef CONFIG_ARCH_OMAP3 > -static struct iommu_device omap3_devices[] = { > -    { > -        .pdata = { > -            .name = "isp", > -        }, > -    }, > -#if defined(CONFIG_MPU_BRIDGE_IOMMU) > -    { > -        .pdata = { > -            .name = "iva2", > -        }, > -    }, > -#endif > -}; > -#define NR_OMAP3_IOMMU_DEVICES ARRAY_SIZE(omap3_devices) > -#else > -#define omap3_devices     ÂNULL > -#define NR_OMAP3_IOMMU_DEVICES 0 > -#endif > - > -#ifdef CONFIG_ARCH_OMAP4 > -static struct iommu_device omap4_devices[] = { > -    { > -        .pdata = { > -            .name = "ducati", > -        }, > -    }, > -#if defined(CONFIG_MPU_TESLA_IOMMU) > -    { > -        .pdata = { > -            .name = "tesla", > -        }, > -    }, > -#endif > + > +static char *omap4_devices[] = { > +    "ducati", > +    "tesla", > +    NULL, > Â}; > -#define NR_OMAP4_IOMMU_DEVICES ARRAY_SIZE(omap4_devices) > -#else > -#define omap4_devices     ÂNULL > -#define NR_OMAP4_IOMMU_DEVICES 0 > -#endif > > Âstatic struct omap_device_pm_latency iommu_latencies[] = { >    Â[0] = { > @@ -73,36 +37,28 @@ static struct omap_device_pm_latency iommu_latencies[] = { >    Â}, > Â}; > > -static int __init omap_iommu_init(void) > +static int __init omap_iommu_add(char **devices) > Â{ >    Âint i; > > -    if (cpu_is_omap34xx()) { > -        devices = omap3_devices; > -        num_iommu_devices = NR_OMAP3_IOMMU_DEVICES; > -    } else if (cpu_is_omap44xx()) { > -        devices = omap4_devices; > -        num_iommu_devices = NR_OMAP4_IOMMU_DEVICES; > -    } else > -        return -ENODEV; > - > -    for (i = 0; i < num_iommu_devices; i++) { > +    for (i = 0; devices[i]; i++) { >        Âstruct omap_hwmod *oh; >        Âstruct omap_device *od; > +        struct iommu_platform_data pdata; > > -        oh = omap_hwmod_lookup(devices[i].pdata.name); > +        oh = omap_hwmod_lookup(devices[i]); >        Âif (!oh) { >            Âpr_err("%s: hwmod not found\n", __func__); >            Âreturn -ENODEV; >        Â} > > -        devices[i].pdata.mmu_attr = > -                (struct omap_mmu_dev_attr *)oh->dev_attr; > -        devices[i].pdata.device_enable = omap_device_enable; > -        devices[i].pdata.device_disable = omap_device_idle; > +        pdata.name = devices[i]; > +        pdata.mmu_attr = (struct omap_mmu_dev_attr *)oh->dev_attr; No need for casting on a 'void *'. > +        pdata.device_enable = omap_device_enable; > +        pdata.device_disable = omap_device_idle; > >        Âod = omap_device_build("omap-iommu", i, oh, > -                &devices[i].pdata, sizeof(devices[i].pdata), > +                &pdata, sizeof(pdata), >                Âiommu_latencies, ARRAY_SIZE(iommu_latencies), >                Â0); >        Âif (!od) { > @@ -110,8 +66,23 @@ static int __init omap_iommu_init(void) >            Âreturn -EPERM; >        Â} >    Â} > + >    Âreturn 0; > Â} > + > +static int __init omap_iommu_init(void) > +{ > +    int err; > + > +    if (cpu_is_omap34xx()) > +        err = omap_iommu_add(omap3_devices); > +    else if (cpu_is_omap44xx()) > +        err = omap_iommu_add(omap4_devices); > +    else > +        return -ENODEV; > + > +    return err; > +} I don't see what's the point of having a separate omap_iommu_add. The code of omap_iommu_add() can be moved to the end of omap_iommu_init() very easily. Cheers. -- Felipe Contreras ÿô.nÇ·®+%˱é¥wÿº{.nÇ·¥{±þ§ø¡Ü}©²ÆzÚj:+v¨þø®w¥þàÞ¨è&¢)ß«a¶Úÿûz¹ÞúÝjÿwèf