Cast error pointers when returning them as void __iomem *. Fixes
a number of Sparse warnings, such as the ones shown below.

../drivers/gpu/drm/tiny/ofdrm.c:439:31: warning: incorrect type in return 
expression (different address spaces)
../drivers/gpu/drm/tiny/ofdrm.c:439:31:    expected void [noderef] __iomem *
../drivers/gpu/drm/tiny/ofdrm.c:439:31:    got void *
../drivers/gpu/drm/tiny/ofdrm.c:442:31: warning: incorrect type in return 
expression (different address spaces)
../drivers/gpu/drm/tiny/ofdrm.c:442:31:    expected void [noderef] __iomem *
../drivers/gpu/drm/tiny/ofdrm.c:442:31:    got void *

See [1] for the bug report.

Reported-by: kernel test robot <l...@intel.com>
Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
Link: https://lore.kernel.org/dri-devel/202210200016.yiqzpiy0-...@intel.com/ # 
[1]
---
 drivers/gpu/drm/tiny/ofdrm.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/tiny/ofdrm.c b/drivers/gpu/drm/tiny/ofdrm.c
index 0da8b248ccc6e..b358da3840ad0 100644
--- a/drivers/gpu/drm/tiny/ofdrm.c
+++ b/drivers/gpu/drm/tiny/ofdrm.c
@@ -436,21 +436,21 @@ static void __iomem *get_cmap_address_of(struct 
ofdrm_device *odev, struct devic
        if (!addr_p)
                addr_p = of_get_address(of_node, bar_no, &max_size, &flags);
        if (!addr_p)
-               return ERR_PTR(-ENODEV);
+               return (void __iomem *)ERR_PTR(-ENODEV);
 
        if ((flags & (IORESOURCE_IO | IORESOURCE_MEM)) == 0)
-               return ERR_PTR(-ENODEV);
+               return (void __iomem *)ERR_PTR(-ENODEV);
 
        if ((offset + size) >= max_size)
-               return ERR_PTR(-ENODEV);
+               return (void __iomem *)ERR_PTR(-ENODEV);
 
        address = of_translate_address(of_node, addr_p);
        if (address == OF_BAD_ADDR)
-               return ERR_PTR(-ENODEV);
+               return (void __iomem *)ERR_PTR(-ENODEV);
 
        mem = devm_ioremap(dev->dev, address + offset, size);
        if (!mem)
-               return ERR_PTR(-ENOMEM);
+               return (void __iomem *)ERR_PTR(-ENOMEM);
 
        return mem;
 }
@@ -468,7 +468,7 @@ static void __iomem *ofdrm_mach64_cmap_ioremap(struct 
ofdrm_device *odev,
 
        cmap_base = devm_ioremap(dev->dev, address, 0x1000);
        if (!cmap_base)
-               return ERR_PTR(-ENOMEM);
+               return (void __iomem *)ERR_PTR(-ENOMEM);
 
        return cmap_base;
 }
@@ -627,11 +627,11 @@ static void __iomem *ofdrm_qemu_cmap_ioremap(struct 
ofdrm_device *odev,
 
        address = of_translate_address(of_node, io_of_addr);
        if (address == OF_BAD_ADDR)
-               return ERR_PTR(-ENODEV);
+               return (void __iomem *)ERR_PTR(-ENODEV);
 
        cmap_base = devm_ioremap(dev->dev, address + 0x3c8, 2);
        if (!cmap_base)
-               return ERR_PTR(-ENOMEM);
+               return (void __iomem *)ERR_PTR(-ENOMEM);
 
        return cmap_base;
 }
-- 
2.38.0

Reply via email to