mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-28 21:33:52 +00:00
drm/mediatek: Add display merge start/stop API for cmdq support
Add merge start/stop API for cmdq support. The ovl_adaptor merges are configured with each drm plane update. Need to enable/disable merge with cmdq making sure all the settings taken effect in the same vblank. Signed-off-by: Nancy.Lin <nancy.lin@mediatek.com> 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> Link: https://patchwork.kernel.org/project/linux-mediatek/patch/20220620091930.27797-6-nancy.lin@mediatek.com/ Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
This commit is contained in:
parent
7e4727f745
commit
d2ae586f0e
2 changed files with 18 additions and 4 deletions
|
@ -66,6 +66,8 @@ void mtk_merge_stop(struct device *dev);
|
|||
void mtk_merge_advance_config(struct device *dev, unsigned int l_w, unsigned int r_w,
|
||||
unsigned int h, unsigned int vrefresh, unsigned int bpc,
|
||||
struct cmdq_pkt *cmdq_pkt);
|
||||
void mtk_merge_start_cmdq(struct device *dev, struct cmdq_pkt *cmdq_pkt);
|
||||
void mtk_merge_stop_cmdq(struct device *dev, struct cmdq_pkt *cmdq_pkt);
|
||||
|
||||
void mtk_ovl_bgclr_in_on(struct device *dev);
|
||||
void mtk_ovl_bgclr_in_off(struct device *dev);
|
||||
|
|
|
@ -68,16 +68,28 @@ struct mtk_disp_merge {
|
|||
|
||||
void mtk_merge_start(struct device *dev)
|
||||
{
|
||||
struct mtk_disp_merge *priv = dev_get_drvdata(dev);
|
||||
|
||||
writel(MERGE_EN, priv->regs + DISP_REG_MERGE_CTRL);
|
||||
mtk_merge_start_cmdq(dev, NULL);
|
||||
}
|
||||
|
||||
void mtk_merge_stop(struct device *dev)
|
||||
{
|
||||
mtk_merge_stop_cmdq(dev, NULL);
|
||||
}
|
||||
|
||||
void mtk_merge_start_cmdq(struct device *dev, struct cmdq_pkt *cmdq_pkt)
|
||||
{
|
||||
struct mtk_disp_merge *priv = dev_get_drvdata(dev);
|
||||
|
||||
writel(0x0, priv->regs + DISP_REG_MERGE_CTRL);
|
||||
mtk_ddp_write(cmdq_pkt, 1, &priv->cmdq_reg, priv->regs,
|
||||
DISP_REG_MERGE_CTRL);
|
||||
}
|
||||
|
||||
void mtk_merge_stop_cmdq(struct device *dev, struct cmdq_pkt *cmdq_pkt)
|
||||
{
|
||||
struct mtk_disp_merge *priv = dev_get_drvdata(dev);
|
||||
|
||||
mtk_ddp_write(cmdq_pkt, 0, &priv->cmdq_reg, priv->regs,
|
||||
DISP_REG_MERGE_CTRL);
|
||||
}
|
||||
|
||||
static void mtk_merge_fifo_setting(struct mtk_disp_merge *priv,
|
||||
|
|
Loading…
Reference in a new issue