Message ID | 20230804072850.89365-3-angelogioacchino.delregno@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | MediaTek DDP GAMMA - 12-bit LUT support | expand |
Hi, Angelo: On Fri, 2023-08-04 at 09:28 +0200, AngeloGioacchino Del Regno wrote: > Invert the check for state->gamma_lut and move it at the beginning > of the function to reduce indentation: this prepares the code for > keeping readability on later additions. > > This commit brings no functional changes. Reviewed-by: CK Hu <ck.hu@mediatek.com> > > Signed-off-by: AngeloGioacchino Del Regno < > angelogioacchino.delregno@collabora.com> > Reviewed-by: Jason-JH.Lin <jason-jh.lin@mediatek.com> > Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com> > --- > drivers/gpu/drm/mediatek/mtk_disp_gamma.c | 45 ++++++++++++--------- > -- > 1 file changed, 23 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c > b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c > index d42cc0698d83..47751864bd5c 100644 > --- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c > +++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c > @@ -64,6 +64,10 @@ void mtk_gamma_set_common(struct device *dev, void > __iomem *regs, struct drm_crt > u32 word; > u32 diff[3] = {0}; > > + /* 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; > > @@ -72,29 +76,26 @@ void mtk_gamma_set_common(struct device *dev, > void __iomem *regs, struct drm_crt > else > lut_diff = false; > > - if (state->gamma_lut) { > - reg = readl(regs + DISP_GAMMA_CFG); > - reg = reg | GAMMA_LUT_EN; > - writel(reg, regs + DISP_GAMMA_CFG); > - lut_base = regs + DISP_GAMMA_LUT; > - lut = (struct drm_color_lut *)state->gamma_lut->data; > - for (i = 0; i < MTK_LUT_SIZE; i++) { > - > - if (!lut_diff || (i % 2 == 0)) { > - word = (((lut[i].red >> 6) & > LUT_10BIT_MASK) << 20) + > - (((lut[i].green >> 6) & > LUT_10BIT_MASK) << 10) + > - ((lut[i].blue >> 6) & > LUT_10BIT_MASK); > - } else { > - diff[0] = (lut[i].red >> 6) - (lut[i - > 1].red >> 6); > - diff[1] = (lut[i].green >> 6) - (lut[i > - 1].green >> 6); > - diff[2] = (lut[i].blue >> 6) - (lut[i - > 1].blue >> 6); > - > - word = ((diff[0] & LUT_10BIT_MASK) << > 20) + > - ((diff[1] & LUT_10BIT_MASK) << > 10) + > - (diff[2] & LUT_10BIT_MASK); > - } > - writel(word, (lut_base + i * 4)); > + reg = readl(regs + DISP_GAMMA_CFG); > + reg = reg | GAMMA_LUT_EN; > + writel(reg, regs + DISP_GAMMA_CFG); > + lut_base = regs + DISP_GAMMA_LUT; > + lut = (struct drm_color_lut *)state->gamma_lut->data; > + for (i = 0; i < MTK_LUT_SIZE; i++) { > + if (!lut_diff || (i % 2 == 0)) { > + word = (((lut[i].red >> 6) & LUT_10BIT_MASK) << > 20) + > + (((lut[i].green >> 6) & LUT_10BIT_MASK) > << 10) + > + ((lut[i].blue >> 6) & LUT_10BIT_MASK); > + } else { > + diff[0] = (lut[i].red >> 6) - (lut[i - 1].red > >> 6); > + diff[1] = (lut[i].green >> 6) - (lut[i - > 1].green >> 6); > + diff[2] = (lut[i].blue >> 6) - (lut[i - 1].blue > >> 6); > + > + word = ((diff[0] & LUT_10BIT_MASK) << 20) + > + ((diff[1] & LUT_10BIT_MASK) << 10) + > + (diff[2] & LUT_10BIT_MASK); > } > + writel(word, (lut_base + i * 4)); > } > } >
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c index d42cc0698d83..47751864bd5c 100644 --- a/drivers/gpu/drm/mediatek/mtk_disp_gamma.c +++ b/drivers/gpu/drm/mediatek/mtk_disp_gamma.c @@ -64,6 +64,10 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt u32 word; u32 diff[3] = {0}; + /* 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; @@ -72,29 +76,26 @@ void mtk_gamma_set_common(struct device *dev, void __iomem *regs, struct drm_crt else lut_diff = false; - if (state->gamma_lut) { - reg = readl(regs + DISP_GAMMA_CFG); - reg = reg | GAMMA_LUT_EN; - writel(reg, regs + DISP_GAMMA_CFG); - lut_base = regs + DISP_GAMMA_LUT; - lut = (struct drm_color_lut *)state->gamma_lut->data; - for (i = 0; i < MTK_LUT_SIZE; i++) { - - if (!lut_diff || (i % 2 == 0)) { - word = (((lut[i].red >> 6) & LUT_10BIT_MASK) << 20) + - (((lut[i].green >> 6) & LUT_10BIT_MASK) << 10) + - ((lut[i].blue >> 6) & LUT_10BIT_MASK); - } else { - diff[0] = (lut[i].red >> 6) - (lut[i - 1].red >> 6); - diff[1] = (lut[i].green >> 6) - (lut[i - 1].green >> 6); - diff[2] = (lut[i].blue >> 6) - (lut[i - 1].blue >> 6); - - word = ((diff[0] & LUT_10BIT_MASK) << 20) + - ((diff[1] & LUT_10BIT_MASK) << 10) + - (diff[2] & LUT_10BIT_MASK); - } - writel(word, (lut_base + i * 4)); + reg = readl(regs + DISP_GAMMA_CFG); + reg = reg | GAMMA_LUT_EN; + writel(reg, regs + DISP_GAMMA_CFG); + lut_base = regs + DISP_GAMMA_LUT; + lut = (struct drm_color_lut *)state->gamma_lut->data; + for (i = 0; i < MTK_LUT_SIZE; i++) { + if (!lut_diff || (i % 2 == 0)) { + word = (((lut[i].red >> 6) & LUT_10BIT_MASK) << 20) + + (((lut[i].green >> 6) & LUT_10BIT_MASK) << 10) + + ((lut[i].blue >> 6) & LUT_10BIT_MASK); + } else { + diff[0] = (lut[i].red >> 6) - (lut[i - 1].red >> 6); + diff[1] = (lut[i].green >> 6) - (lut[i - 1].green >> 6); + diff[2] = (lut[i].blue >> 6) - (lut[i - 1].blue >> 6); + + word = ((diff[0] & LUT_10BIT_MASK) << 20) + + ((diff[1] & LUT_10BIT_MASK) << 10) + + (diff[2] & LUT_10BIT_MASK); } + writel(word, (lut_base + i * 4)); } }