]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: platform: mtk-mdp3: Get fine-grain control of cmdq_pkt_finalize()
authorChun-Kuang Hu <chunkuang.hu@kernel.org>
Sun, 1 Sep 2024 14:32:57 +0000 (14:32 +0000)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 13 Dec 2024 16:30:57 +0000 (17:30 +0100)
In order to have fine-grained control, use cmdq_pkt_eoc() and
cmdq_pkt_jump_rel() to replace cmdq_pkt_finalize().

Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c
drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h

index 4c6d6dd62197bccc337062d3d7904d4b47b4d763..dbbb7e2057701e1850f11c18743307c5c4232771 100644 (file)
@@ -664,7 +664,8 @@ static struct mdp_cmdq_cmd *mdp_cmdq_prepare(struct mdp_dev *mdp,
                dev_err(dev, "mdp_path_config error %d\n", pp_idx);
                goto err_free_path;
        }
-       cmdq_pkt_finalize(&cmd->pkt);
+       cmdq_pkt_eoc(&cmd->pkt);
+       cmdq_pkt_jump_rel(&cmd->pkt, CMDQ_INST_SIZE, mdp->cmdq_shift_pa[pp_idx]);
 
        for (i = 0; i < num_comp; i++) {
                s32 inner_id = MDP_COMP_NONE;
index 5e94ff0d0756fc6a525c6707ac36ff34926892d1..f571f561f070b94996ded5270486a30349382658 100644 (file)
@@ -312,6 +312,8 @@ static int mdp_probe(struct platform_device *pdev)
                        ret = PTR_ERR(mdp->cmdq_clt[i]);
                        goto err_mbox_destroy;
                }
+
+               mdp->cmdq_shift_pa[i] = cmdq_get_shift_pa(mdp->cmdq_clt[i]->chan);
        }
 
        init_waitqueue_head(&mdp->callback_wq);
index 430251f63754c999e23fe323ff1a2fa8f5b1d648..05cade1d098edc61c575c2b26df521c28fc77300 100644 (file)
@@ -126,6 +126,7 @@ struct mdp_dev {
        u32                                     id_count;
        struct ida                              mdp_ida;
        struct cmdq_client                      *cmdq_clt[MDP_PP_MAX];
+       u8                                      cmdq_shift_pa[MDP_PP_MAX];
        wait_queue_head_t                       callback_wq;
 
        struct v4l2_device                      v4l2_dev;