MLK-17514: drm/imx: dcss: directly bypass dec400d when no modifier present
authorFancy Fang <chen.fang@nxp.com>
Fri, 2 Feb 2018 08:40:24 +0000 (16:40 +0800)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
When no modifier present, the 'fb->modifier[0]' may contain
undefined value. So it cannot be used to decide whether the
DEC400D should be set to bypass or not in this case.

Signed-off-by: Fancy Fang <chen.fang@nxp.com>
drivers/gpu/drm/imx/dcss/dcss-plane.c

index c2b1a83..2566fb9 100644 (file)
@@ -245,14 +245,18 @@ static void dcss_plane_atomic_set_base(struct dcss_plane *dcss_plane)
 
        switch (plane->type) {
        case DRM_PLANE_TYPE_PRIMARY:
-               if (modifiers_present) {
-                       for (mod_idx = 0; mod_idx < 4; mod_idx++)
-                               dcss_dec400d_set_format_mod(dcss_plane->dcss,
-                                               pix_format,
-                                               mod_idx,
-                                               fb->modifier);
+               if (!modifiers_present) {
+                       /* No modifier: bypass dec400d */
+                       dcss_dec400d_bypass(dcss_plane->dcss);
+                       return;
                }
 
+               for (mod_idx = 0; mod_idx < 4; mod_idx++)
+                       dcss_dec400d_set_format_mod(dcss_plane->dcss,
+                                       pix_format,
+                                       mod_idx,
+                                       fb->modifier);
+
                switch (fb->modifier) {
                case DRM_FORMAT_MOD_LINEAR:
                case DRM_FORMAT_MOD_VIVANTE_TILED: