drm/mediatek: De-commonize disp_aal/disp_gamma gamma_set functions
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Thu, 12 Oct 2023 09:57:28 +0000 (11:57 +0200)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Mon, 16 Oct 2023 15:10:36 +0000 (15:10 +0000)
In preparation for adding a 12-bits gamma support for the DISP_GAMMA
IP, remove the mtk_gamma_set_common() function and move the relevant
bits in mtk_gamma_set() for DISP_GAMMA and mtk_aal_gamma_set() for
DISP_AAL: since the latter has no more support for gamma manipulation
(being moved to a different IP) in newer revisions, those functions
are about to diverge and it makes no sense to keep a common one (with
all the complications of passing common data and making exclusions
for device driver data) for just a few bits.

This commit brings no functional changes.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20231012095736.100784-9-angelogioacchino.delregno@collabora.com/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_disp_gamma.c

index b0180b746b5aa01e8c6de108ef0e478c8cd3777e..95493de24a000202f5a89fd94ebb602c694e5146 100644 (file)
@@ -69,41 +69,28 @@ unsigned int mtk_gamma_get_lut_size(struct device *dev)
        return 0;
 }
 
-void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crtc_state *state)
+void mtk_gamma_set(struct device *dev, struct drm_crtc_state *state)
 {
-       struct mtk_disp_gamma *gamma;
+       struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
        unsigned int i;
        struct drm_color_lut *lut;
        void __iomem *lut_base;
-       bool lut_diff;
-       u16 lut_size;
        u32 cfg_val, word;
 
        /* If there's no gamma lut there's nothing to do here. */
        if (!state->gamma_lut)
                return;
 
-       /* If we're called from AAL, dev is NULL */
-       gamma = dev ? dev_get_drvdata(dev) : NULL;
-
-       if (gamma && gamma->data) {
-               lut_diff = gamma->data->lut_diff;
-               lut_size = gamma->data->lut_size;
-       } else {
-               lut_diff = false;
-               lut_size = 512;
-       }
-
-       lut_base = regs + DISP_GAMMA_LUT;
+       lut_base = gamma->regs + DISP_GAMMA_LUT;
        lut = (struct drm_color_lut *)state->gamma_lut->data;
-       for (i = 0; i < lut_size; i++) {
+       for (i = 0; i < gamma->data->lut_size; i++) {
                struct drm_color_lut diff, hwlut;
 
                hwlut.red = drm_color_lut_extract(lut[i].red, 10);
                hwlut.green = drm_color_lut_extract(lut[i].green, 10);
                hwlut.blue = drm_color_lut_extract(lut[i].blue, 10);
 
-               if (!lut_diff || (i % 2 == 0)) {
+               if (!gamma->data->lut_diff || (i % 2 == 0)) {
                        word = FIELD_PREP(DISP_GAMMA_LUT_10BIT_R, hwlut.red);
                        word |= FIELD_PREP(DISP_GAMMA_LUT_10BIT_G, hwlut.green);
                        word |= FIELD_PREP(DISP_GAMMA_LUT_10BIT_B, hwlut.blue);
@@ -124,19 +111,12 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt
                writel(word, lut_base + i * 4);
        }
 
-       cfg_val = readl(regs + DISP_GAMMA_CFG);
+       cfg_val = readl(gamma->regs + DISP_GAMMA_CFG);
 
        /* Enable the gamma table */
        cfg_val |= FIELD_PREP(GAMMA_LUT_EN, 1);
 
-       writel(cfg_val, regs + DISP_GAMMA_CFG);
-}
-
-void mtk_gamma_set(struct device *dev, struct drm_crtc_state *state)
-{
-       struct mtk_disp_gamma *gamma = dev_get_drvdata(dev);
-
-       mtk_gamma_set_common(dev, gamma->regs, state);
+       cfg_val = readl(gamma->regs + DISP_GAMMA_CFG);
 }
 
 void mtk_gamma_config(struct device *dev, unsigned int w,