drm/tidss: remove AM65x PG1 YUV erratum code
authorTomi Valkeinen <tomi.valkeinen@ti.com>
Wed, 29 Apr 2020 12:10:22 +0000 (15:10 +0300)
committerTomi Valkeinen <tomi.valkeinen@ti.com>
Tue, 5 May 2020 07:00:07 +0000 (10:00 +0300)
AM65x PG1 has a HW issue with YUV pixel formats, resulting in wrong
colors on the screen. This issue is fixed in PG2 hardware.

The driver currently has code to hide YUV pixel formats from the
userspace. To support PG2, we would need to add code to detect the SoC
version and hide the YUV formats based on that.

However, as PG1 will be phased out and PG2 will be the main platform, a
much simpler solution is just to drop the code in question. The downside
is that the users will be able to use YUV formats on PG1, getting wrong
colors on the screen. On the other hand, that may also be a plus, as the
same applications will now work on PG1 and PG2, even if the colors are
wrong on PG1.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200429121022.3871-1-tomi.valkeinen@ti.com
Reviewed-by: Jyri Sarha <jsarha@ti.com>
drivers/gpu/drm/tidss/tidss_dispc.c
drivers/gpu/drm/tidss/tidss_dispc.h

index 29f42768e294738904d6fd09df3d901c795a002e..629dd06393f68051187a1d3abdb1d1e5081b7763 100644 (file)
@@ -181,10 +181,6 @@ const struct dispc_features dispc_am65x_feats = {
        .vid_name = { "vid", "vidl1" },
        .vid_lite = { false, true, },
        .vid_order = { 1, 0 },
-
-       .errata = {
-               .i2000 = true,
-       },
 };
 
 static const u16 tidss_j721e_common_regs[DISPC_COMMON_REG_TABLE_LEN] = {
@@ -2674,12 +2670,9 @@ int dispc_init(struct tidss_device *tidss)
                return -ENOMEM;
 
        num_fourccs = 0;
-       for (i = 0; i < ARRAY_SIZE(dispc_color_formats); ++i) {
-               if (feat->errata.i2000 &&
-                   dispc_fourcc_is_yuv(dispc_color_formats[i].fourcc))
-                       continue;
+       for (i = 0; i < ARRAY_SIZE(dispc_color_formats); ++i)
                dispc->fourccs[num_fourccs++] = dispc_color_formats[i].fourcc;
-       }
+
        dispc->num_fourccs = num_fourccs;
        dispc->tidss = tidss;
        dispc->dev = dev;
index a4a68249e44b8da17eccd21f08409cea4adb1009..902e612ff7acd9047f228ef88eedcdbb79dfb9e5 100644 (file)
@@ -46,10 +46,6 @@ struct dispc_features_scaling {
        u32 xinc_max;
 };
 
-struct dispc_errata {
-       bool i2000; /* DSS Does Not Support YUV Pixel Data Formats */
-};
-
 enum dispc_vp_bus_type {
        DISPC_VP_DPI,           /* DPI output */
        DISPC_VP_OLDI,          /* OLDI (LVDS) output */
@@ -83,8 +79,6 @@ struct dispc_features {
        const char *vid_name[TIDSS_MAX_PLANES]; /* Should match dt reg names */
        bool vid_lite[TIDSS_MAX_PLANES];
        u32 vid_order[TIDSS_MAX_PLANES];
-
-       struct dispc_errata errata;
 };
 
 extern const struct dispc_features dispc_k2g_feats;