Message ID | 20220620091930.27797-7-nancy.lin@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add MediaTek SoC DRM (vdosys1) support for mt8195 | expand |
Hi, Nancy: On Mon, 2022-06-20 at 17:19 +0800, Nancy.Lin wrote: > Add merge mute/unmute setting for MT8195. > MT8195 Vdosys1 merge1~merge4 support HW mute function. Applied to mediatek-drm-next [1], thanks. [1] https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux.git/log/?h=mediatek-drm-next Regards, CK > > Signed-off-by: Nancy.Lin <nancy.lin@mediatek.com> > Reviewed-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> > Reviewed-by: AngeloGioacchino Del Regno < > angelogioacchino.delregno@collabora.com> > Tested-by: AngeloGioacchino Del Regno < > angelogioacchino.delregno@collabora.com> > Tested-by: Bo-Chen Chen <rex-bc.chen@mediatek.com> > --- > drivers/gpu/drm/mediatek/mtk_disp_merge.c | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_merge.c > b/drivers/gpu/drm/mediatek/mtk_disp_merge.c > index c7af5ccab916..2e13d2fb429e 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; > + bool mute_support; > }; > > void mtk_merge_start(struct device *dev) > @@ -80,6 +83,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); > } > @@ -88,6 +95,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); > } > @@ -262,6 +273,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);
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_merge.c b/drivers/gpu/drm/mediatek/mtk_disp_merge.c index c7af5ccab916..2e13d2fb429e 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; + bool mute_support; }; void mtk_merge_start(struct device *dev) @@ -80,6 +83,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); } @@ -88,6 +95,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); } @@ -262,6 +273,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);