MLK-17634-17: drm: imx: dcss: make P010 tiled formats work
authorLaurentiu Palcu <laurentiu.palcu@nxp.com>
Thu, 22 Feb 2018 08:42:59 +0000 (10:42 +0200)
committerLeonard Crestez <leonard.crestez@nxp.com>
Wed, 17 Apr 2019 23:51:34 +0000 (02:51 +0300)
Signed-off-by: Laurentiu Palcu <laurentiu.palcu@nxp.com>
drivers/gpu/drm/imx/dcss/dcss-plane.c
drivers/gpu/imx/dcss/dcss-dtrc.c
include/video/imx-dcss.h

index a50ad4e..7c928fe 100644 (file)
@@ -307,7 +307,7 @@ static void dcss_plane_atomic_set_base(struct dcss_plane *dcss_plane)
                }
 
                dcss_dtrc_set_format_mod(dcss_plane->dcss, dcss_plane->ch_num,
-                                        pix_format, fb->modifier);
+                                        fb->modifier);
                dcss_dtrc_addr_set(dcss_plane->dcss, dcss_plane->ch_num,
                                   p1_ba, p2_ba, dcss_plane->dtrc_table_ofs_val);
                break;
@@ -412,7 +412,7 @@ static void dcss_plane_atomic_update(struct drm_plane *plane,
 
        if (plane->type == DRM_PLANE_TYPE_OVERLAY)
                dcss_dtrc_set_res(dcss_plane->dcss, dcss_plane->ch_num,
-                                 &src, &old_src);
+                                 &src, &old_src, pixel_format);
 
        /* DTRC has probably aligned the sizes. */
        adj_w = src.x2 - src.x1;
index b19b335..b7bd13c 100644 (file)
@@ -298,7 +298,6 @@ void dcss_dtrc_addr_set(struct dcss_soc *dcss, int ch_num, u32 p1_ba, u32 p2_ba,
 
        ch = &dtrc->ch[ch_num];
 
-
        dcss_dtrc_write(dtrc, ch_num, p1_ba, DCSS_DTRC_DYDSADDR);
        dcss_dtrc_write(dtrc, ch_num, p2_ba, DCSS_DTRC_DCDSADDR);
 
@@ -322,7 +321,7 @@ void dcss_dtrc_addr_set(struct dcss_soc *dcss, int ch_num, u32 p1_ba, u32 p2_ba,
 EXPORT_SYMBOL(dcss_dtrc_addr_set);
 
 void dcss_dtrc_set_res(struct dcss_soc *dcss, int ch_num, struct drm_rect *src,
-                      struct drm_rect *old_src)
+                      struct drm_rect *old_src, u32 pixel_format)
 {
        struct dcss_dtrc_priv *dtrc = dcss->dtrc_priv;
        struct dcss_dtrc_ch *ch;
@@ -342,6 +341,8 @@ void dcss_dtrc_set_res(struct dcss_soc *dcss, int ch_num, struct drm_rect *src,
 
        bank = dcss_readl(ch->base_reg + DCSS_DTRC_DTCTRL) >> 31;
 
+       ch->pix_format = pixel_format;
+
        pix_depth = ch->pix_format == DRM_FORMAT_P010 ? 10 : 8;
        old_xres = old_src->x2 - old_src->x1;
        old_yres = old_src->y2 - old_src->y1;
@@ -506,8 +507,7 @@ bool dcss_dtrc_is_running(struct dcss_soc *dcss, int ch_num)
        return ch->running;
 }
 
-void dcss_dtrc_set_format_mod(struct dcss_soc *dcss, int ch_num,
-                             u32 pix_format, u64 modifier)
+void dcss_dtrc_set_format_mod(struct dcss_soc *dcss, int ch_num, u64 modifier)
 {
        struct dcss_dtrc_priv *dtrc = dcss->dtrc_priv;
        struct dcss_dtrc_ch *ch;
@@ -519,7 +519,6 @@ void dcss_dtrc_set_format_mod(struct dcss_soc *dcss, int ch_num,
 
        ch = &dtrc->ch[ch_num];
 
-       ch->pix_format = pix_format;
        ch->format_modifier = modifier;
 }
 EXPORT_SYMBOL(dcss_dtrc_set_format_mod);
index 29cd3e1..253dff8 100644 (file)
@@ -128,12 +128,11 @@ void dcss_hdr10_setup(struct dcss_soc *dcss, int ch_num,
 /* DTRC */
 void dcss_dtrc_bypass(struct dcss_soc *dcss, int ch_num);
 void dcss_dtrc_set_res(struct dcss_soc *dcss, int ch_num, struct drm_rect *src,
-                      struct drm_rect *old_src);
+                      struct drm_rect *old_src, u32 pixel_format);
 void dcss_dtrc_addr_set(struct dcss_soc *dcss, int ch_num, u32 p1_ba, u32 p2_ba,
                        uint64_t dec_table_ofs);
 void dcss_dtrc_enable(struct dcss_soc *dcss, int ch_num, bool enable);
-void dcss_dtrc_set_format_mod(struct dcss_soc *dcss, int ch_num,
-                             u32 pix_format, u64 modifier);
+void dcss_dtrc_set_format_mod(struct dcss_soc *dcss, int ch_num, u64 modifier);
 
 enum dcss_color_space {
        DCSS_COLORSPACE_RGB,