drm/meson: Fix overflow implicit truncation warnings
authorSai Prakash Ranjan <quic_saipraka@quicinc.com>
Wed, 18 May 2022 16:44:13 +0000 (22:14 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Aug 2022 09:40:32 +0000 (11:40 +0200)
[ Upstream commit 98692f52c588225034cbff458622c2c06dfcb544 ]

Fix -Woverflow warnings for drm/meson driver which is a result
of moving arm64 custom MMIO accessor macros to asm-generic function
implementations giving a bonus type-checking now and uncovering these
overflow warnings.

drivers/gpu/drm/meson/meson_viu.c: In function ‘meson_viu_init’:
drivers/gpu/drm/meson/meson_registers.h:1826:48: error: large integer implicitly truncated to unsigned type [-Werror=overflow]
 #define  VIU_OSD_BLEND_REORDER(dest, src)      ((src) << (dest * 4))
                                                ^
drivers/gpu/drm/meson/meson_viu.c:472:18: note: in expansion of macro ‘VIU_OSD_BLEND_REORDER’
   writel_relaxed(VIU_OSD_BLEND_REORDER(0, 1) |
                  ^~~~~~~~~~~~~~~~~~~~~

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Sai Prakash Ranjan <quic_saipraka@quicinc.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/meson/meson_viu.c

index 259f3e6..bb7e109 100644 (file)
@@ -469,17 +469,17 @@ void meson_viu_init(struct meson_drm *priv)
                        priv->io_base + _REG(VD2_IF0_LUMA_FIFO_SIZE));
 
        if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A)) {
-               writel_relaxed(VIU_OSD_BLEND_REORDER(0, 1) |
-                              VIU_OSD_BLEND_REORDER(1, 0) |
-                              VIU_OSD_BLEND_REORDER(2, 0) |
-                              VIU_OSD_BLEND_REORDER(3, 0) |
-                              VIU_OSD_BLEND_DIN_EN(1) |
-                              VIU_OSD_BLEND1_DIN3_BYPASS_TO_DOUT1 |
-                              VIU_OSD_BLEND1_DOUT_BYPASS_TO_BLEND2 |
-                              VIU_OSD_BLEND_DIN0_BYPASS_TO_DOUT0 |
-                              VIU_OSD_BLEND_BLEN2_PREMULT_EN(1) |
-                              VIU_OSD_BLEND_HOLD_LINES(4),
-                              priv->io_base + _REG(VIU_OSD_BLEND_CTRL));
+               u32 val = (u32)VIU_OSD_BLEND_REORDER(0, 1) |
+                         (u32)VIU_OSD_BLEND_REORDER(1, 0) |
+                         (u32)VIU_OSD_BLEND_REORDER(2, 0) |
+                         (u32)VIU_OSD_BLEND_REORDER(3, 0) |
+                         (u32)VIU_OSD_BLEND_DIN_EN(1) |
+                         (u32)VIU_OSD_BLEND1_DIN3_BYPASS_TO_DOUT1 |
+                         (u32)VIU_OSD_BLEND1_DOUT_BYPASS_TO_BLEND2 |
+                         (u32)VIU_OSD_BLEND_DIN0_BYPASS_TO_DOUT0 |
+                         (u32)VIU_OSD_BLEND_BLEN2_PREMULT_EN(1) |
+                         (u32)VIU_OSD_BLEND_HOLD_LINES(4);
+               writel_relaxed(val, priv->io_base + _REG(VIU_OSD_BLEND_CTRL));
 
                writel_relaxed(OSD_BLEND_PATH_SEL_ENABLE,
                               priv->io_base + _REG(OSD1_BLEND_SRC_CTRL));