[media] media: s5p-mfc: fix sparse warnings
authorMarek Szyprowski <m.szyprowski@samsung.com>
Thu, 28 May 2015 11:11:47 +0000 (08:11 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Fri, 5 Jun 2015 09:37:24 +0000 (06:37 -0300)
Commits a0f10c131cc49d7d84394beb7903e1f246331224 and
6c9fe765360efa97c63b89af685b620baf5e0012 ("media: s5p-mfc: fix broken
pointer cast on 64bit arch") fixed issue with lossy cast on 64-bit
architectures. However it also removed __iomem attribute from that cast.
This leads to sparse warnings. This patch fixes those warnings by adding
__iomem cast in case of v6+ code version and replacing readl/writel by
simple u32 load/store operations in case of v5 code (which is called on
system memory allocated by dma_alloc_coherent() instead of io registers).

Reported-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v5.c
drivers/media/platform/s5p-mfc/s5p_mfc_opr_v6.c

index c7adc3d26792a0ea643b0f0c1826c3e0f3e8119f..9a923b1a9bac3cdf6c3145ad309703bb10356a5c 100644 (file)
@@ -263,7 +263,7 @@ static void s5p_mfc_release_dev_context_buffer_v5(struct s5p_mfc_dev *dev)
 static void s5p_mfc_write_info_v5(struct s5p_mfc_ctx *ctx, unsigned int data,
                        unsigned int ofs)
 {
-       writel(data, (void *)(ctx->shm.virt + ofs));
+       *(u32 *)(ctx->shm.virt + ofs) = data;
        wmb();
 }
 
@@ -271,7 +271,7 @@ static unsigned int s5p_mfc_read_info_v5(struct s5p_mfc_ctx *ctx,
                                unsigned long ofs)
 {
        rmb();
-       return readl((void *)(ctx->shm.virt + ofs));
+       return *(u32 *)(ctx->shm.virt + ofs);
 }
 
 static void s5p_mfc_dec_calc_dpb_size_v5(struct s5p_mfc_ctx *ctx)
index cefad184fe969296db59858103f4c6e713c6acd3..12497f5ed8e984746455b377f111791e7f1046f1 100644 (file)
@@ -1852,7 +1852,7 @@ static void s5p_mfc_write_info_v6(struct s5p_mfc_ctx *ctx, unsigned int data,
                unsigned int ofs)
 {
        s5p_mfc_clock_on();
-       writel(data, (void *)((unsigned long)ofs));
+       writel(data, (void __iomem *)((unsigned long)ofs));
        s5p_mfc_clock_off();
 }
 
@@ -1862,7 +1862,7 @@ s5p_mfc_read_info_v6(struct s5p_mfc_ctx *ctx, unsigned long ofs)
        int ret;
 
        s5p_mfc_clock_on();
-       ret = readl((void *)ofs);
+       ret = readl((void __iomem *)ofs);
        s5p_mfc_clock_off();
 
        return ret;