All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yongqiang Niu <yongqiang.niu@mediatek.com>
To: CK Hu <ck.hu@mediatek.com>
Cc: Hsin-Yi Wang <hsinyi@chromium.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	"David Airlie" <airlied@linux.ie>,
	Daniel Vetter <daniel@ffwll.ch>,
	Mark Rutland <mark.rutland@arm.com>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	Devicetree List <devicetree@vger.kernel.org>,
	lkml <linux-kernel@vger.kernel.org>,
	"moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE" 
	<linux-arm-kernel@lists.infradead.org>,
	"moderated list:ARM/Mediatek SoC support" 
	<linux-mediatek@lists.infradead.org>
Subject: Re: [PATCH v11 7/9] drm/mediatek: enable dither function
Date: Thu, 28 Jan 2021 16:32:09 +0800	[thread overview]
Message-ID: <1611822729.1947.14.camel@mhfsdcap03> (raw)
In-Reply-To: <1611822524.23925.4.camel@mtksdaap41>

On Thu, 2021-01-28 at 16:28 +0800, CK Hu wrote:
> On Thu, 2021-01-28 at 16:18 +0800, Hsin-Yi Wang wrote:
> > On Thu, Jan 28, 2021 at 4:10 PM Yongqiang Niu
> > <yongqiang.niu@mediatek.com> wrote:
> > >
> > > On Thu, 2021-01-28 at 16:07 +0800, CK Hu wrote:
> > > > On Thu, 2021-01-28 at 15:59 +0800, Yongqiang Niu wrote:
> > > > > On Thu, 2021-01-28 at 15:42 +0800, CK Hu wrote:
> > > > > > Hi, Hsin-Yi:
> > > > > >
> > > > > > On Thu, 2021-01-28 at 15:28 +0800, Hsin-Yi Wang wrote:
> > > > > > > From: Yongqiang Niu <yongqiang.niu@mediatek.com>
> > > > > > >
> > > > > > > for 5 or 6 bpc panel, we need enable dither function
> > > > > > > to improve the display quality
> > > > > > >
> > > > > > > Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
> > > > > > > Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
> > > > > > > ---
> > > > > > >  drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 44 ++++++++++++++++++++-
> > > > > > >  1 file changed, 43 insertions(+), 1 deletion(-)
> > > > > > >
> > > > > > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > index 8173f709272be..e85625704d611 100644
> > > > > > > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > @@ -53,7 +53,9 @@
> > > > > > >  #define DITHER_EN                              BIT(0)
> > > > > > >  #define DISP_DITHER_CFG                                0x0020
> > > > > > >  #define DITHER_RELAY_MODE                      BIT(0)
> > > > > > > +#define DITHER_ENGINE_EN                       BIT(1)
> > > > > > >  #define DISP_DITHER_SIZE                       0x0030
> > > > > > > +#define DITHER_REG(idx)                                (0x100 + (idx) * 4)
> > > > > > >
> > > > > > >  #define LUT_10BIT_MASK                         0x03ff
> > > > > > >
> > > > > > > @@ -313,8 +315,48 @@ static void mtk_dither_config(struct device *dev, unsigned int w,
> > > > > > >  {
> > > > > > >         struct mtk_ddp_comp_dev *priv = dev_get_drvdata(dev);
> > > > > > >
> > > > > > > +       bool enable = false;
> > > > > > > +
> > > > > > > +       /* default value for dither reg 5 to 14 */
> > > > > > > +       const u32 dither_setting[] = {
> > > > > > > +               0x00000000, /* 5 */
> > > > > > > +               0x00003002, /* 6 */
> > > > > > > +               0x00000000, /* 7 */
> > > > > > > +               0x00000000, /* 8 */
> > > > > > > +               0x00000000, /* 9 */
> > > > > > > +               0x00000000, /* 10 */
> > > > > > > +               0x00000000, /* 11 */
> > > > > > > +               0x00000011, /* 12 */
> > > > > > > +               0x00000000, /* 13 */
> > > > > > > +               0x00000000, /* 14 */
> > > > > >
> > > > > > Could you explain what is this?
> > > > >
> > > > > this is dither 5 to dither 14 setting
> > > > > this will be useless, we just need set dither 5 and dither 7 like
> > > > > mtk_ddp_write(cmdq_pkt, 0, comp, DISP_DITHER_5);
> > > > > mtk_ddp_write(cmdq_pkt, 0, comp, DISP_DITHER_7);
> > > > > other value is same with hardware default value.
> > > > >
> > > > >
> > > > > >
> > > > > > > +       };
> > > > > > > +
> > > > > > > +       if (bpc == 5 || bpc == 6) {
> > > > > > > +               enable = true;
> > > > > > > +               mtk_ddp_write(cmdq_pkt,
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_R(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_R(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_NEW_BIT_MODE,
> > > > > > > +                             &priv->cmdq_reg, priv->regs, DITHER_REG(15));
> > > > > > > +               mtk_ddp_write(cmdq_pkt,
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_B(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_B(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_G(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_G(MTK_MAX_BPC - bpc),
> > > > > >
> > > > > > This result in 0x50505050, but previous version is 0x50504040, so this
> > > > > > version is correct and previous version is incorrect?
> > > > >
> > > > > the new version set r g b 3 channel same, seams more reasonable
> > > > >
> > > > >
> > > >
> > > > So all the setting of DISP_DITHER_5, DISP_DITHER_7, DISP_DITHER_15,
> > > > DISP_DITHER_16 is identical to mtk_dither_set(), so call
> > > > mtk_dither_set() instead of duplication here.
> > > >
> > >
> > > dither enable set in mtk_dither_set is
> > > mtk_ddp_write(cmdq_pkt, DISP_DITHERING, comp, CFG);
> > >
> > > that is different 8183 and mt8192.
> > > mt8173 dither enable in gamma is bit2
> > > mt8183 and mt8192 dither engine enable is bit 1
> > >
> > >
> > 
> > We can still call mtk_dither_set() for bpc is 5 or 6 here, though it
> > will be set to bit2,
> > but later in mtk_ddp_write(cmdq_pkt, enable ? DITHER_ENGINE_EN :
> > DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG); it
> > will be correct back to bit 1.
> > 
> > Is this reasonable?
> 
> Looks weird. Maybe pass some information into mtk_dither_set() to set
> DISP_DITHERING correctly. 
> 
> I find one thing need to be fixed. CFG should be lower case.

we could modify this like this:

void mtk_dither_set(struct mtk_ddp_comp *comp, unsigned int bpc,
		    unsigned int cfg, u32 dither_enable, struct cmdq_pkt *cmdq_pkt)

		mtk_ddp_write(cmdq_pkt, dither_enable, comp, cfg);



> 
> Regards,
> CK
> 
> > 
> > > > Regards,
> > > > CK
> > > > > >
> > > > > > Regards,
> > > > > > CK
> > > > > >
> > > > > > > +                             &priv->cmdq_reg, priv->regs, DITHER_REG(16));
> > > > > > > +       }
> > > > > > > +
> > > > > > > +
> > > > > > > +       if (enable) {
> > > > > > > +               u32 idx;
> > > > > > > +
> > > > > > > +               for (idx = 0; idx < ARRAY_SIZE(dither_setting); idx++)
> > > > > > > +                       mtk_ddp_write(cmdq_pkt, dither_setting[idx], &priv->cmdq_reg, priv->regs,
> > > > > > > +                                     DITHER_REG(idx + 5));
> > > > > > > +       }
> > > > > > > +
> > > > > > >         mtk_ddp_write(cmdq_pkt, h << 16 | w, &priv->cmdq_reg, priv->regs, DISP_DITHER_SIZE);
> > > > > > > -       mtk_ddp_write(cmdq_pkt, DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG);
> > > > > > > +        mtk_ddp_write(cmdq_pkt, enable ? DITHER_ENGINE_EN : DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG);
> > > > > > >  }
> > > > > > >
> > > > > > >  static void mtk_dither_start(struct device *dev)
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> 
> 


WARNING: multiple messages have this Message-ID (diff)
From: Yongqiang Niu <yongqiang.niu@mediatek.com>
To: CK Hu <ck.hu@mediatek.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Devicetree List <devicetree@vger.kernel.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	David Airlie <airlied@linux.ie>,
	lkml <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	"moderated list:ARM/Mediatek SoC support"
	<linux-mediatek@lists.infradead.org>,
	Daniel Vetter <daniel@ffwll.ch>,
	Hsin-Yi Wang <hsinyi@chromium.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	"moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v11 7/9] drm/mediatek: enable dither function
Date: Thu, 28 Jan 2021 16:32:09 +0800	[thread overview]
Message-ID: <1611822729.1947.14.camel@mhfsdcap03> (raw)
In-Reply-To: <1611822524.23925.4.camel@mtksdaap41>

On Thu, 2021-01-28 at 16:28 +0800, CK Hu wrote:
> On Thu, 2021-01-28 at 16:18 +0800, Hsin-Yi Wang wrote:
> > On Thu, Jan 28, 2021 at 4:10 PM Yongqiang Niu
> > <yongqiang.niu@mediatek.com> wrote:
> > >
> > > On Thu, 2021-01-28 at 16:07 +0800, CK Hu wrote:
> > > > On Thu, 2021-01-28 at 15:59 +0800, Yongqiang Niu wrote:
> > > > > On Thu, 2021-01-28 at 15:42 +0800, CK Hu wrote:
> > > > > > Hi, Hsin-Yi:
> > > > > >
> > > > > > On Thu, 2021-01-28 at 15:28 +0800, Hsin-Yi Wang wrote:
> > > > > > > From: Yongqiang Niu <yongqiang.niu@mediatek.com>
> > > > > > >
> > > > > > > for 5 or 6 bpc panel, we need enable dither function
> > > > > > > to improve the display quality
> > > > > > >
> > > > > > > Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
> > > > > > > Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
> > > > > > > ---
> > > > > > >  drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 44 ++++++++++++++++++++-
> > > > > > >  1 file changed, 43 insertions(+), 1 deletion(-)
> > > > > > >
> > > > > > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > index 8173f709272be..e85625704d611 100644
> > > > > > > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > @@ -53,7 +53,9 @@
> > > > > > >  #define DITHER_EN                              BIT(0)
> > > > > > >  #define DISP_DITHER_CFG                                0x0020
> > > > > > >  #define DITHER_RELAY_MODE                      BIT(0)
> > > > > > > +#define DITHER_ENGINE_EN                       BIT(1)
> > > > > > >  #define DISP_DITHER_SIZE                       0x0030
> > > > > > > +#define DITHER_REG(idx)                                (0x100 + (idx) * 4)
> > > > > > >
> > > > > > >  #define LUT_10BIT_MASK                         0x03ff
> > > > > > >
> > > > > > > @@ -313,8 +315,48 @@ static void mtk_dither_config(struct device *dev, unsigned int w,
> > > > > > >  {
> > > > > > >         struct mtk_ddp_comp_dev *priv = dev_get_drvdata(dev);
> > > > > > >
> > > > > > > +       bool enable = false;
> > > > > > > +
> > > > > > > +       /* default value for dither reg 5 to 14 */
> > > > > > > +       const u32 dither_setting[] = {
> > > > > > > +               0x00000000, /* 5 */
> > > > > > > +               0x00003002, /* 6 */
> > > > > > > +               0x00000000, /* 7 */
> > > > > > > +               0x00000000, /* 8 */
> > > > > > > +               0x00000000, /* 9 */
> > > > > > > +               0x00000000, /* 10 */
> > > > > > > +               0x00000000, /* 11 */
> > > > > > > +               0x00000011, /* 12 */
> > > > > > > +               0x00000000, /* 13 */
> > > > > > > +               0x00000000, /* 14 */
> > > > > >
> > > > > > Could you explain what is this?
> > > > >
> > > > > this is dither 5 to dither 14 setting
> > > > > this will be useless, we just need set dither 5 and dither 7 like
> > > > > mtk_ddp_write(cmdq_pkt, 0, comp, DISP_DITHER_5);
> > > > > mtk_ddp_write(cmdq_pkt, 0, comp, DISP_DITHER_7);
> > > > > other value is same with hardware default value.
> > > > >
> > > > >
> > > > > >
> > > > > > > +       };
> > > > > > > +
> > > > > > > +       if (bpc == 5 || bpc == 6) {
> > > > > > > +               enable = true;
> > > > > > > +               mtk_ddp_write(cmdq_pkt,
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_R(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_R(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_NEW_BIT_MODE,
> > > > > > > +                             &priv->cmdq_reg, priv->regs, DITHER_REG(15));
> > > > > > > +               mtk_ddp_write(cmdq_pkt,
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_B(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_B(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_G(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_G(MTK_MAX_BPC - bpc),
> > > > > >
> > > > > > This result in 0x50505050, but previous version is 0x50504040, so this
> > > > > > version is correct and previous version is incorrect?
> > > > >
> > > > > the new version set r g b 3 channel same, seams more reasonable
> > > > >
> > > > >
> > > >
> > > > So all the setting of DISP_DITHER_5, DISP_DITHER_7, DISP_DITHER_15,
> > > > DISP_DITHER_16 is identical to mtk_dither_set(), so call
> > > > mtk_dither_set() instead of duplication here.
> > > >
> > >
> > > dither enable set in mtk_dither_set is
> > > mtk_ddp_write(cmdq_pkt, DISP_DITHERING, comp, CFG);
> > >
> > > that is different 8183 and mt8192.
> > > mt8173 dither enable in gamma is bit2
> > > mt8183 and mt8192 dither engine enable is bit 1
> > >
> > >
> > 
> > We can still call mtk_dither_set() for bpc is 5 or 6 here, though it
> > will be set to bit2,
> > but later in mtk_ddp_write(cmdq_pkt, enable ? DITHER_ENGINE_EN :
> > DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG); it
> > will be correct back to bit 1.
> > 
> > Is this reasonable?
> 
> Looks weird. Maybe pass some information into mtk_dither_set() to set
> DISP_DITHERING correctly. 
> 
> I find one thing need to be fixed. CFG should be lower case.

we could modify this like this:

void mtk_dither_set(struct mtk_ddp_comp *comp, unsigned int bpc,
		    unsigned int cfg, u32 dither_enable, struct cmdq_pkt *cmdq_pkt)

		mtk_ddp_write(cmdq_pkt, dither_enable, comp, cfg);



> 
> Regards,
> CK
> 
> > 
> > > > Regards,
> > > > CK
> > > > > >
> > > > > > Regards,
> > > > > > CK
> > > > > >
> > > > > > > +                             &priv->cmdq_reg, priv->regs, DITHER_REG(16));
> > > > > > > +       }
> > > > > > > +
> > > > > > > +
> > > > > > > +       if (enable) {
> > > > > > > +               u32 idx;
> > > > > > > +
> > > > > > > +               for (idx = 0; idx < ARRAY_SIZE(dither_setting); idx++)
> > > > > > > +                       mtk_ddp_write(cmdq_pkt, dither_setting[idx], &priv->cmdq_reg, priv->regs,
> > > > > > > +                                     DITHER_REG(idx + 5));
> > > > > > > +       }
> > > > > > > +
> > > > > > >         mtk_ddp_write(cmdq_pkt, h << 16 | w, &priv->cmdq_reg, priv->regs, DISP_DITHER_SIZE);
> > > > > > > -       mtk_ddp_write(cmdq_pkt, DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG);
> > > > > > > +        mtk_ddp_write(cmdq_pkt, enable ? DITHER_ENGINE_EN : DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG);
> > > > > > >  }
> > > > > > >
> > > > > > >  static void mtk_dither_start(struct device *dev)
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> 
> 

_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

WARNING: multiple messages have this Message-ID (diff)
From: Yongqiang Niu <yongqiang.niu@mediatek.com>
To: CK Hu <ck.hu@mediatek.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Devicetree List <devicetree@vger.kernel.org>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	David Airlie <airlied@linux.ie>,
	lkml <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	"moderated list:ARM/Mediatek SoC support"
	<linux-mediatek@lists.infradead.org>,
	Daniel Vetter <daniel@ffwll.ch>,
	Hsin-Yi Wang <hsinyi@chromium.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	"moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v11 7/9] drm/mediatek: enable dither function
Date: Thu, 28 Jan 2021 16:32:09 +0800	[thread overview]
Message-ID: <1611822729.1947.14.camel@mhfsdcap03> (raw)
In-Reply-To: <1611822524.23925.4.camel@mtksdaap41>

On Thu, 2021-01-28 at 16:28 +0800, CK Hu wrote:
> On Thu, 2021-01-28 at 16:18 +0800, Hsin-Yi Wang wrote:
> > On Thu, Jan 28, 2021 at 4:10 PM Yongqiang Niu
> > <yongqiang.niu@mediatek.com> wrote:
> > >
> > > On Thu, 2021-01-28 at 16:07 +0800, CK Hu wrote:
> > > > On Thu, 2021-01-28 at 15:59 +0800, Yongqiang Niu wrote:
> > > > > On Thu, 2021-01-28 at 15:42 +0800, CK Hu wrote:
> > > > > > Hi, Hsin-Yi:
> > > > > >
> > > > > > On Thu, 2021-01-28 at 15:28 +0800, Hsin-Yi Wang wrote:
> > > > > > > From: Yongqiang Niu <yongqiang.niu@mediatek.com>
> > > > > > >
> > > > > > > for 5 or 6 bpc panel, we need enable dither function
> > > > > > > to improve the display quality
> > > > > > >
> > > > > > > Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
> > > > > > > Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
> > > > > > > ---
> > > > > > >  drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 44 ++++++++++++++++++++-
> > > > > > >  1 file changed, 43 insertions(+), 1 deletion(-)
> > > > > > >
> > > > > > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > index 8173f709272be..e85625704d611 100644
> > > > > > > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > @@ -53,7 +53,9 @@
> > > > > > >  #define DITHER_EN                              BIT(0)
> > > > > > >  #define DISP_DITHER_CFG                                0x0020
> > > > > > >  #define DITHER_RELAY_MODE                      BIT(0)
> > > > > > > +#define DITHER_ENGINE_EN                       BIT(1)
> > > > > > >  #define DISP_DITHER_SIZE                       0x0030
> > > > > > > +#define DITHER_REG(idx)                                (0x100 + (idx) * 4)
> > > > > > >
> > > > > > >  #define LUT_10BIT_MASK                         0x03ff
> > > > > > >
> > > > > > > @@ -313,8 +315,48 @@ static void mtk_dither_config(struct device *dev, unsigned int w,
> > > > > > >  {
> > > > > > >         struct mtk_ddp_comp_dev *priv = dev_get_drvdata(dev);
> > > > > > >
> > > > > > > +       bool enable = false;
> > > > > > > +
> > > > > > > +       /* default value for dither reg 5 to 14 */
> > > > > > > +       const u32 dither_setting[] = {
> > > > > > > +               0x00000000, /* 5 */
> > > > > > > +               0x00003002, /* 6 */
> > > > > > > +               0x00000000, /* 7 */
> > > > > > > +               0x00000000, /* 8 */
> > > > > > > +               0x00000000, /* 9 */
> > > > > > > +               0x00000000, /* 10 */
> > > > > > > +               0x00000000, /* 11 */
> > > > > > > +               0x00000011, /* 12 */
> > > > > > > +               0x00000000, /* 13 */
> > > > > > > +               0x00000000, /* 14 */
> > > > > >
> > > > > > Could you explain what is this?
> > > > >
> > > > > this is dither 5 to dither 14 setting
> > > > > this will be useless, we just need set dither 5 and dither 7 like
> > > > > mtk_ddp_write(cmdq_pkt, 0, comp, DISP_DITHER_5);
> > > > > mtk_ddp_write(cmdq_pkt, 0, comp, DISP_DITHER_7);
> > > > > other value is same with hardware default value.
> > > > >
> > > > >
> > > > > >
> > > > > > > +       };
> > > > > > > +
> > > > > > > +       if (bpc == 5 || bpc == 6) {
> > > > > > > +               enable = true;
> > > > > > > +               mtk_ddp_write(cmdq_pkt,
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_R(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_R(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_NEW_BIT_MODE,
> > > > > > > +                             &priv->cmdq_reg, priv->regs, DITHER_REG(15));
> > > > > > > +               mtk_ddp_write(cmdq_pkt,
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_B(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_B(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_G(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_G(MTK_MAX_BPC - bpc),
> > > > > >
> > > > > > This result in 0x50505050, but previous version is 0x50504040, so this
> > > > > > version is correct and previous version is incorrect?
> > > > >
> > > > > the new version set r g b 3 channel same, seams more reasonable
> > > > >
> > > > >
> > > >
> > > > So all the setting of DISP_DITHER_5, DISP_DITHER_7, DISP_DITHER_15,
> > > > DISP_DITHER_16 is identical to mtk_dither_set(), so call
> > > > mtk_dither_set() instead of duplication here.
> > > >
> > >
> > > dither enable set in mtk_dither_set is
> > > mtk_ddp_write(cmdq_pkt, DISP_DITHERING, comp, CFG);
> > >
> > > that is different 8183 and mt8192.
> > > mt8173 dither enable in gamma is bit2
> > > mt8183 and mt8192 dither engine enable is bit 1
> > >
> > >
> > 
> > We can still call mtk_dither_set() for bpc is 5 or 6 here, though it
> > will be set to bit2,
> > but later in mtk_ddp_write(cmdq_pkt, enable ? DITHER_ENGINE_EN :
> > DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG); it
> > will be correct back to bit 1.
> > 
> > Is this reasonable?
> 
> Looks weird. Maybe pass some information into mtk_dither_set() to set
> DISP_DITHERING correctly. 
> 
> I find one thing need to be fixed. CFG should be lower case.

we could modify this like this:

void mtk_dither_set(struct mtk_ddp_comp *comp, unsigned int bpc,
		    unsigned int cfg, u32 dither_enable, struct cmdq_pkt *cmdq_pkt)

		mtk_ddp_write(cmdq_pkt, dither_enable, comp, cfg);



> 
> Regards,
> CK
> 
> > 
> > > > Regards,
> > > > CK
> > > > > >
> > > > > > Regards,
> > > > > > CK
> > > > > >
> > > > > > > +                             &priv->cmdq_reg, priv->regs, DITHER_REG(16));
> > > > > > > +       }
> > > > > > > +
> > > > > > > +
> > > > > > > +       if (enable) {
> > > > > > > +               u32 idx;
> > > > > > > +
> > > > > > > +               for (idx = 0; idx < ARRAY_SIZE(dither_setting); idx++)
> > > > > > > +                       mtk_ddp_write(cmdq_pkt, dither_setting[idx], &priv->cmdq_reg, priv->regs,
> > > > > > > +                                     DITHER_REG(idx + 5));
> > > > > > > +       }
> > > > > > > +
> > > > > > >         mtk_ddp_write(cmdq_pkt, h << 16 | w, &priv->cmdq_reg, priv->regs, DISP_DITHER_SIZE);
> > > > > > > -       mtk_ddp_write(cmdq_pkt, DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG);
> > > > > > > +        mtk_ddp_write(cmdq_pkt, enable ? DITHER_ENGINE_EN : DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG);
> > > > > > >  }
> > > > > > >
> > > > > > >  static void mtk_dither_start(struct device *dev)
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> 
> 

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Yongqiang Niu <yongqiang.niu@mediatek.com>
To: CK Hu <ck.hu@mediatek.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
	Devicetree List <devicetree@vger.kernel.org>,
	David Airlie <airlied@linux.ie>,
	lkml <linux-kernel@vger.kernel.org>,
	dri-devel <dri-devel@lists.freedesktop.org>,
	"moderated list:ARM/Mediatek SoC support"
	<linux-mediatek@lists.infradead.org>,
	Hsin-Yi Wang <hsinyi@chromium.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	"moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE"
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH v11 7/9] drm/mediatek: enable dither function
Date: Thu, 28 Jan 2021 16:32:09 +0800	[thread overview]
Message-ID: <1611822729.1947.14.camel@mhfsdcap03> (raw)
In-Reply-To: <1611822524.23925.4.camel@mtksdaap41>

On Thu, 2021-01-28 at 16:28 +0800, CK Hu wrote:
> On Thu, 2021-01-28 at 16:18 +0800, Hsin-Yi Wang wrote:
> > On Thu, Jan 28, 2021 at 4:10 PM Yongqiang Niu
> > <yongqiang.niu@mediatek.com> wrote:
> > >
> > > On Thu, 2021-01-28 at 16:07 +0800, CK Hu wrote:
> > > > On Thu, 2021-01-28 at 15:59 +0800, Yongqiang Niu wrote:
> > > > > On Thu, 2021-01-28 at 15:42 +0800, CK Hu wrote:
> > > > > > Hi, Hsin-Yi:
> > > > > >
> > > > > > On Thu, 2021-01-28 at 15:28 +0800, Hsin-Yi Wang wrote:
> > > > > > > From: Yongqiang Niu <yongqiang.niu@mediatek.com>
> > > > > > >
> > > > > > > for 5 or 6 bpc panel, we need enable dither function
> > > > > > > to improve the display quality
> > > > > > >
> > > > > > > Signed-off-by: Yongqiang Niu <yongqiang.niu@mediatek.com>
> > > > > > > Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org>
> > > > > > > ---
> > > > > > >  drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c | 44 ++++++++++++++++++++-
> > > > > > >  1 file changed, 43 insertions(+), 1 deletion(-)
> > > > > > >
> > > > > > > diff --git a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > index 8173f709272be..e85625704d611 100644
> > > > > > > --- a/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > +++ b/drivers/gpu/drm/mediatek/mtk_drm_ddp_comp.c
> > > > > > > @@ -53,7 +53,9 @@
> > > > > > >  #define DITHER_EN                              BIT(0)
> > > > > > >  #define DISP_DITHER_CFG                                0x0020
> > > > > > >  #define DITHER_RELAY_MODE                      BIT(0)
> > > > > > > +#define DITHER_ENGINE_EN                       BIT(1)
> > > > > > >  #define DISP_DITHER_SIZE                       0x0030
> > > > > > > +#define DITHER_REG(idx)                                (0x100 + (idx) * 4)
> > > > > > >
> > > > > > >  #define LUT_10BIT_MASK                         0x03ff
> > > > > > >
> > > > > > > @@ -313,8 +315,48 @@ static void mtk_dither_config(struct device *dev, unsigned int w,
> > > > > > >  {
> > > > > > >         struct mtk_ddp_comp_dev *priv = dev_get_drvdata(dev);
> > > > > > >
> > > > > > > +       bool enable = false;
> > > > > > > +
> > > > > > > +       /* default value for dither reg 5 to 14 */
> > > > > > > +       const u32 dither_setting[] = {
> > > > > > > +               0x00000000, /* 5 */
> > > > > > > +               0x00003002, /* 6 */
> > > > > > > +               0x00000000, /* 7 */
> > > > > > > +               0x00000000, /* 8 */
> > > > > > > +               0x00000000, /* 9 */
> > > > > > > +               0x00000000, /* 10 */
> > > > > > > +               0x00000000, /* 11 */
> > > > > > > +               0x00000011, /* 12 */
> > > > > > > +               0x00000000, /* 13 */
> > > > > > > +               0x00000000, /* 14 */
> > > > > >
> > > > > > Could you explain what is this?
> > > > >
> > > > > this is dither 5 to dither 14 setting
> > > > > this will be useless, we just need set dither 5 and dither 7 like
> > > > > mtk_ddp_write(cmdq_pkt, 0, comp, DISP_DITHER_5);
> > > > > mtk_ddp_write(cmdq_pkt, 0, comp, DISP_DITHER_7);
> > > > > other value is same with hardware default value.
> > > > >
> > > > >
> > > > > >
> > > > > > > +       };
> > > > > > > +
> > > > > > > +       if (bpc == 5 || bpc == 6) {
> > > > > > > +               enable = true;
> > > > > > > +               mtk_ddp_write(cmdq_pkt,
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_R(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_R(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_NEW_BIT_MODE,
> > > > > > > +                             &priv->cmdq_reg, priv->regs, DITHER_REG(15));
> > > > > > > +               mtk_ddp_write(cmdq_pkt,
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_B(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_B(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_LSB_ERR_SHIFT_G(MTK_MAX_BPC - bpc) |
> > > > > > > +                             DITHER_ADD_LSHIFT_G(MTK_MAX_BPC - bpc),
> > > > > >
> > > > > > This result in 0x50505050, but previous version is 0x50504040, so this
> > > > > > version is correct and previous version is incorrect?
> > > > >
> > > > > the new version set r g b 3 channel same, seams more reasonable
> > > > >
> > > > >
> > > >
> > > > So all the setting of DISP_DITHER_5, DISP_DITHER_7, DISP_DITHER_15,
> > > > DISP_DITHER_16 is identical to mtk_dither_set(), so call
> > > > mtk_dither_set() instead of duplication here.
> > > >
> > >
> > > dither enable set in mtk_dither_set is
> > > mtk_ddp_write(cmdq_pkt, DISP_DITHERING, comp, CFG);
> > >
> > > that is different 8183 and mt8192.
> > > mt8173 dither enable in gamma is bit2
> > > mt8183 and mt8192 dither engine enable is bit 1
> > >
> > >
> > 
> > We can still call mtk_dither_set() for bpc is 5 or 6 here, though it
> > will be set to bit2,
> > but later in mtk_ddp_write(cmdq_pkt, enable ? DITHER_ENGINE_EN :
> > DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG); it
> > will be correct back to bit 1.
> > 
> > Is this reasonable?
> 
> Looks weird. Maybe pass some information into mtk_dither_set() to set
> DISP_DITHERING correctly. 
> 
> I find one thing need to be fixed. CFG should be lower case.

we could modify this like this:

void mtk_dither_set(struct mtk_ddp_comp *comp, unsigned int bpc,
		    unsigned int cfg, u32 dither_enable, struct cmdq_pkt *cmdq_pkt)

		mtk_ddp_write(cmdq_pkt, dither_enable, comp, cfg);



> 
> Regards,
> CK
> 
> > 
> > > > Regards,
> > > > CK
> > > > > >
> > > > > > Regards,
> > > > > > CK
> > > > > >
> > > > > > > +                             &priv->cmdq_reg, priv->regs, DITHER_REG(16));
> > > > > > > +       }
> > > > > > > +
> > > > > > > +
> > > > > > > +       if (enable) {
> > > > > > > +               u32 idx;
> > > > > > > +
> > > > > > > +               for (idx = 0; idx < ARRAY_SIZE(dither_setting); idx++)
> > > > > > > +                       mtk_ddp_write(cmdq_pkt, dither_setting[idx], &priv->cmdq_reg, priv->regs,
> > > > > > > +                                     DITHER_REG(idx + 5));
> > > > > > > +       }
> > > > > > > +
> > > > > > >         mtk_ddp_write(cmdq_pkt, h << 16 | w, &priv->cmdq_reg, priv->regs, DISP_DITHER_SIZE);
> > > > > > > -       mtk_ddp_write(cmdq_pkt, DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG);
> > > > > > > +        mtk_ddp_write(cmdq_pkt, enable ? DITHER_ENGINE_EN : DITHER_RELAY_MODE, &priv->cmdq_reg, priv->regs, DISP_DITHER_CFG);
> > > > > > >  }
> > > > > > >
> > > > > > >  static void mtk_dither_start(struct device *dev)
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> 
> 

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2021-01-28  8:33 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-28  7:27 [PATCH v11 0/9] drm/mediatek: add support for mediatek SOC MT8183 Hsin-Yi Wang
2021-01-28  7:27 ` Hsin-Yi Wang
2021-01-28  7:27 ` Hsin-Yi Wang
2021-01-28  7:27 ` Hsin-Yi Wang
2021-01-28  7:27 ` [PATCH v11 1/9] arm64: dts: mt8183: rename rdma fifo size Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28 10:24   ` Enric Balletbo Serra
2021-01-28 10:24     ` Enric Balletbo Serra
2021-01-28 10:24     ` Enric Balletbo Serra
2021-01-28 10:24     ` Enric Balletbo Serra
2021-01-28  7:27 ` [PATCH v11 2/9] arm64: dts: mt8183: refine gamma compatible name Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  9:11   ` Enric Balletbo Serra
2021-01-28  9:11     ` Enric Balletbo Serra
2021-01-28  9:11     ` Enric Balletbo Serra
2021-01-28  9:11     ` Enric Balletbo Serra
2021-01-28  7:27 ` [PATCH v11 3/9] drm/mediatek: add RDMA fifo size error handle Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:50   ` CK Hu
2021-01-28  7:50     ` CK Hu
2021-01-28  7:50     ` CK Hu
2021-01-28  7:50     ` CK Hu
2021-01-28 11:12     ` Hsin-Yi Wang
2021-01-28 11:12       ` Hsin-Yi Wang
2021-01-28 11:12       ` Hsin-Yi Wang
2021-01-28 11:12       ` Hsin-Yi Wang
2021-01-28  7:27 ` [PATCH v11 4/9] drm/mediatek: add mtk_dither_set_common() function Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:39   ` CK Hu
2021-01-28  7:39     ` CK Hu
2021-01-28  7:39     ` CK Hu
2021-01-28  7:39     ` CK Hu
2021-01-28  7:27 ` [PATCH v11 5/9] drm/mediatek: separate gamma module Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27 ` [PATCH v11 6/9] drm/mediatek: add has_dither private data for gamma Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:27   ` Hsin-Yi Wang
2021-01-28  7:28 ` [PATCH v11 7/9] drm/mediatek: enable dither function Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang
2021-01-28  7:42   ` CK Hu
2021-01-28  7:42     ` CK Hu
2021-01-28  7:42     ` CK Hu
2021-01-28  7:42     ` CK Hu
2021-01-28  7:59     ` Yongqiang Niu
2021-01-28  7:59       ` Yongqiang Niu
2021-01-28  7:59       ` Yongqiang Niu
2021-01-28  7:59       ` Yongqiang Niu
2021-01-28  8:07       ` CK Hu
2021-01-28  8:07         ` CK Hu
2021-01-28  8:07         ` CK Hu
2021-01-28  8:07         ` CK Hu
2021-01-28  8:09         ` Yongqiang Niu
2021-01-28  8:09           ` Yongqiang Niu
2021-01-28  8:09           ` Yongqiang Niu
2021-01-28  8:09           ` Yongqiang Niu
2021-01-28  8:18           ` Hsin-Yi Wang
2021-01-28  8:18             ` Hsin-Yi Wang
2021-01-28  8:18             ` Hsin-Yi Wang
2021-01-28  8:18             ` Hsin-Yi Wang
2021-01-28  8:28             ` Yongqiang Niu
2021-01-28  8:28               ` Yongqiang Niu
2021-01-28  8:28               ` Yongqiang Niu
2021-01-28  8:28               ` Yongqiang Niu
2021-01-28  8:28             ` CK Hu
2021-01-28  8:28               ` CK Hu
2021-01-28  8:28               ` CK Hu
2021-01-28  8:28               ` CK Hu
2021-01-28  8:32               ` Yongqiang Niu [this message]
2021-01-28  8:32                 ` Yongqiang Niu
2021-01-28  8:32                 ` Yongqiang Niu
2021-01-28  8:32                 ` Yongqiang Niu
2021-01-28  8:41                 ` Hsin-Yi Wang
2021-01-28  8:41                   ` Hsin-Yi Wang
2021-01-28  8:41                   ` Hsin-Yi Wang
2021-01-28  8:41                   ` Hsin-Yi Wang
2021-01-28  7:28 ` [PATCH v11 8/9] soc: mediatek: add mtk mutex support for MT8183 Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang
2021-01-28  7:46   ` CK Hu
2021-01-28  7:46     ` CK Hu
2021-01-28  7:46     ` CK Hu
2021-01-28  7:46     ` CK Hu
2021-01-28  7:28 ` [PATCH v11 9/9] drm/mediatek: add support for mediatek SOC MT8183 Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang
2021-01-28  7:28   ` Hsin-Yi Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1611822729.1947.14.camel@mhfsdcap03 \
    --to=yongqiang.niu@mediatek.com \
    --cc=airlied@linux.ie \
    --cc=ck.hu@mediatek.com \
    --cc=daniel@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=hsinyi@chromium.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=p.zabel@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.