drm/meson: fix green/pink color distortion from HDR set during vendor Uboot

Mathias Steiger mathias.steiger at googlemail.com
Wed Apr 28 00:11:57 BST 2021


Fixes: 728883948b0d ("drm/meson: Add G12A Support for VIU setup")

Tested-by: Neil Armstrong<narmstrong at baylibre.com>


diff --git a/drivers/gpu/drm/meson/meson_registers.h b/drivers/gpu/drm/meson/meson_registers.h
--- a/drivers/gpu/drm/meson/meson_registers.h
+++ b/drivers/gpu/drm/meson/meson_registers.h
@@ -634,6 +634,11 @@
  #define VPP_WRAP_OSD3_MATRIX_PRE_OFFSET2 0x3dbc
  #define VPP_WRAP_OSD3_MATRIX_EN_CTRL 0x3dbd
  
+/* osd1 HDR */
+#define OSD1_HDR2_CTRL 0x38a0
+#define OSD1_HDR2_CTRL_VDIN0_HDR2_TOP_EN       BIT(13)
+#define OSD1_HDR2_CTRL_REG_ONLY_MAT            BIT(16)
+
  /* osd2 scaler */
  #define OSD2_VSC_PHASE_STEP 0x3d00
  #define OSD2_VSC_INI_PHASE 0x3d01
diff --git a/drivers/gpu/drm/meson/meson_viu.c b/drivers/gpu/drm/meson/meson_viu.c
--- a/drivers/gpu/drm/meson/meson_viu.c
+++ b/drivers/gpu/drm/meson/meson_viu.c
@@ -426,8 +426,14 @@ void meson_viu_init(struct meson_drm *priv)
             meson_vpu_is_compatible(priv, VPU_COMPATIBLE_GXL))
                 meson_viu_load_matrix(priv);
         else if (meson_vpu_is_compatible(priv, VPU_COMPATIBLE_G12A))
+       {
                 meson_viu_set_g12a_osd1_matrix(priv, RGB709_to_YUV709l_coeff,
                                                true);
+               /* fix green/pink color distortion from vendor uboot */
+               writel_bits_relaxed(OSD1_HDR2_CTRL_REG_ONLY_MAT |
+                                   OSD1_HDR2_CTRL_VDIN0_HDR2_TOP_EN, 0,
+                                   priv->io_base + _REG(OSD1_HDR2_CTRL));
+       }
  
         /* Initialize OSD1 fifo control register */
         reg = VIU_OSD_DDR_PRIORITY_URGENT |




More information about the linux-amlogic mailing list