lkml.org 
[lkml]   [2023]   [May]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 05/11] drm/mediatek: gamma: Enable the Gamma LUT table only after programming
    Date
    Move the write to DISP_GAMMA_CFG to enable the Gamma LUT to after
    programming the actual table to avoid potential visual glitches during
    table modification.

    Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
    Reviewed-by: Jason-JH.Lin <jason-jh.lin@mediatek.com>
    ---
    drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 13 ++++++++-----
    1 file changed, 8 insertions(+), 5 deletions(-)

    diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
    index 60ccea8c1e1a..1592614b6de7 100644
    --- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
    +++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
    @@ -71,12 +71,12 @@ unsigned int mtk_gamma_get_lut_size(struct device *dev)
    void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crtc_state *state)
    {
    struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
    - unsigned int i, reg;
    + unsigned int i;
    struct drm_color_lut *lut;
    void __iomem *lut_base;
    bool lut_diff;
    u16 lut_size;
    - u32 word;
    + u32 cfg_val, word;

    /* If there's no gamma lut there's nothing to do here. */
    if (!state->gamma_lut)
    @@ -90,9 +90,7 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
    lut_size = LUT_SIZE_DEFAULT;
    }

    - reg = readl(regs + DISP_GAMMA_CFG);
    - reg = reg | GAMMA_LUT_EN;
    - writel(reg, regs + DISP_GAMMA_CFG);
    + cfg_val = readl(regs + DISP_GAMMA_CFG);
    lut_base = regs + DISP_GAMMA_LUT;
    lut = (struct drm_color_lut *)state->gamma_lut->data;
    for (i = 0; i < lut_size; i++) {
    @@ -122,6 +120,11 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
    }
    writel(word, (lut_base + i * 4));
    }
    +
    + /* Enable the gamma table */
    + cfg_val = cfg_val | GAMMA_LUT_EN;
    +
    + writel(cfg_val, regs + DISP_GAMMA_CFG);
    }

    void mtk_gamma_set(struct device *dev, struct drm_crtc_state *state)
    --
    2.40.1
    \
     
     \ /
      Last update: 2023-05-18 12:50    [W:4.066 / U:0.364 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site