Message ID | 20211029075203.17093-16-nancy.lin@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add MediaTek SoC DRM (vdosys1) support for mt8195 | expand |
Hi, Nancy: Nancy.Lin <nancy.lin@mediatek.com> 於 2021年10月29日 週五 下午3:52寫道: > > Add merge mute/unmute setting for MT8195. > MT8195 Vdosys1 merge1~merge4 support HW mute function. Reviewed-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> > > Signed-off-by: Nancy.Lin <nancy.lin@mediatek.com> > --- > drivers/gpu/drm/mediatek/mtk_disp_merge.c | 23 ++++++++++++++++++----- > 1 file changed, 18 insertions(+), 5 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_merge.c b/drivers/gpu/drm/mediatek/mtk_disp_merge.c > index 92c81ce24a49..dff2797a2f68 100644 > --- a/drivers/gpu/drm/mediatek/mtk_disp_merge.c > +++ b/drivers/gpu/drm/mediatek/mtk_disp_merge.c > @@ -58,12 +58,15 @@ > #define FLD_PREULTRA_TH_LOW GENMASK(15, 0) > #define FLD_PREULTRA_TH_HIGH GENMASK(31, 16) > > +#define DISP_REG_MERGE_MUTE_0 0xf00 > + > struct mtk_disp_merge { > - void __iomem *regs; > - struct clk *clk; > - struct clk *async_clk; > - struct cmdq_client_reg cmdq_reg; > - bool fifo_en; > + void __iomem *regs; > + struct clk *clk; > + struct clk *async_clk; > + struct cmdq_client_reg cmdq_reg; > + bool fifo_en; > + bool mute_support; > }; > > void mtk_merge_start(struct device *dev) > @@ -82,6 +85,10 @@ void mtk_merge_start_cmdq(struct device *dev, struct cmdq_pkt *cmdq_pkt) > { > struct mtk_disp_merge *priv = dev_get_drvdata(dev); > > + if (priv->mute_support) > + mtk_ddp_write(cmdq_pkt, 0x0, &priv->cmdq_reg, priv->regs, > + DISP_REG_MERGE_MUTE_0); > + > mtk_ddp_write(cmdq_pkt, 1, &priv->cmdq_reg, priv->regs, > DISP_REG_MERGE_CTRL); > } > @@ -90,6 +97,10 @@ void mtk_merge_stop_cmdq(struct device *dev, struct cmdq_pkt *cmdq_pkt) > { > struct mtk_disp_merge *priv = dev_get_drvdata(dev); > > + if (priv->mute_support) > + mtk_ddp_write(cmdq_pkt, 0x1, &priv->cmdq_reg, priv->regs, > + DISP_REG_MERGE_MUTE_0); > + > mtk_ddp_write(cmdq_pkt, 0, &priv->cmdq_reg, priv->regs, > DISP_REG_MERGE_CTRL); > } > @@ -264,6 +275,8 @@ static int mtk_disp_merge_probe(struct platform_device *pdev) > priv->fifo_en = of_property_read_bool(dev->of_node, > "mediatek,merge-fifo-en"); > > + priv->mute_support = of_property_read_bool(dev->of_node, > + "mediatek,merge-mute"); > platform_set_drvdata(pdev, priv); > > ret = component_add(dev, &mtk_disp_merge_component_ops); > -- > 2.18.0 >
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_merge.c b/drivers/gpu/drm/mediatek/mtk_disp_merge.c index 92c81ce24a49..dff2797a2f68 100644 --- a/drivers/gpu/drm/mediatek/mtk_disp_merge.c +++ b/drivers/gpu/drm/mediatek/mtk_disp_merge.c @@ -58,12 +58,15 @@ #define FLD_PREULTRA_TH_LOW GENMASK(15, 0) #define FLD_PREULTRA_TH_HIGH GENMASK(31, 16) +#define DISP_REG_MERGE_MUTE_0 0xf00 + struct mtk_disp_merge { - void __iomem *regs; - struct clk *clk; - struct clk *async_clk; - struct cmdq_client_reg cmdq_reg; - bool fifo_en; + void __iomem *regs; + struct clk *clk; + struct clk *async_clk; + struct cmdq_client_reg cmdq_reg; + bool fifo_en; + bool mute_support; }; void mtk_merge_start(struct device *dev) @@ -82,6 +85,10 @@ void mtk_merge_start_cmdq(struct device *dev, struct cmdq_pkt *cmdq_pkt) { struct mtk_disp_merge *priv = dev_get_drvdata(dev); + if (priv->mute_support) + mtk_ddp_write(cmdq_pkt, 0x0, &priv->cmdq_reg, priv->regs, + DISP_REG_MERGE_MUTE_0); + mtk_ddp_write(cmdq_pkt, 1, &priv->cmdq_reg, priv->regs, DISP_REG_MERGE_CTRL); } @@ -90,6 +97,10 @@ void mtk_merge_stop_cmdq(struct device *dev, struct cmdq_pkt *cmdq_pkt) { struct mtk_disp_merge *priv = dev_get_drvdata(dev); + if (priv->mute_support) + mtk_ddp_write(cmdq_pkt, 0x1, &priv->cmdq_reg, priv->regs, + DISP_REG_MERGE_MUTE_0); + mtk_ddp_write(cmdq_pkt, 0, &priv->cmdq_reg, priv->regs, DISP_REG_MERGE_CTRL); } @@ -264,6 +275,8 @@ static int mtk_disp_merge_probe(struct platform_device *pdev) priv->fifo_en = of_property_read_bool(dev->of_node, "mediatek,merge-fifo-en"); + priv->mute_support = of_property_read_bool(dev->of_node, + "mediatek,merge-mute"); platform_set_drvdata(pdev, priv); ret = component_add(dev, &mtk_disp_merge_component_ops);
Add merge mute/unmute setting for MT8195. MT8195 Vdosys1 merge1~merge4 support HW mute function. Signed-off-by: Nancy.Lin <nancy.lin@mediatek.com> --- drivers/gpu/drm/mediatek/mtk_disp_merge.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-)