summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/mediatek
diff options
context:
space:
mode:
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>2023-10-12 12:57:28 +0300
committerChun-Kuang Hu <chunkuang.hu@kernel.org>2023-10-16 18:10:36 +0300
commita6b39cd248f3321dbf066f95f95a9841f891229e (patch)
tree9a8e662b1223335772e8e0e5a54a1990f83f1fd0 /drivers/gpu/drm/mediatek
parent36e5da13779309793aae2bb7dab39415dfce11ed (diff)
downloadlinux-a6b39cd248f3321dbf066f95f95a9841f891229e.tar.xz
drm/mediatek: De-commonize disp_aal/disp_gamma gamma_set functions
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>
Diffstat (limited to 'drivers/gpu/drm/mediatek')
-rw-r--r--drivers/gpu/drm/mediatek/mtk_disp_gamma.c34
1 files changed, 7 insertions, 27 deletions
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
index b0180b746b5a..95493de24a00 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c
@@ -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,