2010-12-02 12:32:24

by Russell King - ARM Linux

[permalink] [raw]
Subject: Re: [PATCHv5 3/4] omap: iovmm - replace __iounmap with omap_iounmap

On Mon, Oct 25, 2010 at 02:10:05PM -0500, Fernando Guzman Lugo wrote:
> Omap platform is omap_iounmap function.
>
> Signed-off-by: Fernando Guzman Lugo <[email protected]>
> ---
> arch/arm/plat-omap/iovmm.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/arch/arm/plat-omap/iovmm.c b/arch/arm/plat-omap/iovmm.c
> index 93a34d9..5489ca9 100644
> --- a/arch/arm/plat-omap/iovmm.c
> +++ b/arch/arm/plat-omap/iovmm.c
> @@ -821,7 +821,7 @@ void iommu_kunmap(struct iommu *obj, u32 da)
> struct sg_table *sgt;
> typedef void (*func_t)(const void *);
>
> - sgt = unmap_vm_area(obj, da, (func_t)__iounmap,
> + sgt = unmap_vm_area(obj, da, (func_t)omap_iounmap,
> IOVMF_LINEAR | IOVMF_MMIO);
> if (!sgt)
> dev_dbg(obj->dev, "%s: No sgt\n", __func__);

Err, this is wrong. Why are you breaking the layer separation and going
for the implementation detail of iounmap()?

plat/io.h:
#define __arch_ioremap(p,s,t) omap_ioremap(p,s,t)
#define __arch_iounmap(v) omap_iounmap(v)

void __iomem *omap_ioremap(unsigned long phys, size_t size, unsigned int type);
void omap_iounmap(volatile void __iomem *addr);

asm/io.h:
#define ioremap(cookie,size) __arch_ioremap((cookie), (size), MT_DEVICE)
#define iounmap(cookie) __arch_iounmap(cookie)