This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: platform: mtk-mdp3: extend GCE event waiting in RDMA and WROT
Author:  Moudy Ho <moudy...@mediatek.com>
Date:    Wed Dec 20 11:18:33 2023 +0100

Support for multiple RDMA/WROT waits for GCE events.

Signed-off-by: Moudy Ho <moudy...@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno 
<angelogioacchino.delre...@collabora.com>
Signed-off-by: Sebastian Fricke <sebastian.fri...@collabora.com>
Signed-off-by: Mauro Carvalho Chehab <mche...@kernel.org>

 .../media/platform/mediatek/mdp3/mdp_cfg_data.c    |  2 ++
 .../media/platform/mediatek/mdp3/mtk-mdp3-comp.c   | 27 +++++++++++++++-------
 .../media/platform/mediatek/mdp3/mtk-mdp3-core.h   |  2 ++
 3 files changed, 23 insertions(+), 8 deletions(-)

---

diff --git a/drivers/media/platform/mediatek/mdp3/mdp_cfg_data.c 
b/drivers/media/platform/mediatek/mdp3/mdp_cfg_data.c
index 6f77c33074ec..3834efe54e17 100644
--- a/drivers/media/platform/mediatek/mdp3/mdp_cfg_data.c
+++ b/drivers/media/platform/mediatek/mdp3/mdp_cfg_data.c
@@ -56,8 +56,10 @@ static const struct mdp_platform_config mt8183_plat_cfg = {
        .rdma_support_10bit             = true,
        .rdma_rsz1_sram_sharing         = true,
        .rdma_upsample_repeat_only      = true,
+       .rdma_event_num                 = 1,
        .rsz_disable_dcm_small_sample   = false,
        .wrot_filter_constraint         = false,
+       .wrot_event_num                 = 1,
 };
 
 static const u32 mt8183_mutex_idx[MDP_MAX_COMP_COUNT] = {
diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c 
b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c
index 93df2e013438..ed6092e1666f 100644
--- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c
+++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-comp.c
@@ -251,14 +251,20 @@ static int config_rdma_subfrm(struct mdp_comp_ctx *ctx,
 
 static int wait_rdma_event(struct mdp_comp_ctx *ctx, struct mdp_cmdq_cmd *cmd)
 {
+       const struct mdp_platform_config *mdp_cfg = __get_plat_cfg(ctx);
        struct device *dev = &ctx->comp->mdp_dev->pdev->dev;
        phys_addr_t base = ctx->comp->reg_base;
        u8 subsys_id = ctx->comp->subsys_id;
 
-       if (ctx->comp->alias_id == 0)
-               MM_REG_WAIT(cmd, ctx->comp->gce_event[MDP_GCE_EVENT_EOF]);
-       else
-               dev_err(dev, "Do not support RDMA1_DONE event\n");
+       if (!mdp_cfg)
+               return -EINVAL;
+
+       if (ctx->comp->alias_id >= mdp_cfg->rdma_event_num) {
+               dev_err(dev, "Invalid RDMA event %d\n", ctx->comp->alias_id);
+               return -EINVAL;
+       }
+
+       MM_REG_WAIT(cmd, ctx->comp->gce_event[MDP_GCE_EVENT_EOF]);
 
        /* Disable RDMA */
        MM_REG_WRITE(cmd, subsys_id, base, MDP_RDMA_EN, 0x0, BIT(0));
@@ -553,10 +559,15 @@ static int wait_wrot_event(struct mdp_comp_ctx *ctx, 
struct mdp_cmdq_cmd *cmd)
        phys_addr_t base = ctx->comp->reg_base;
        u8 subsys_id = ctx->comp->subsys_id;
 
-       if (ctx->comp->alias_id == 0)
-               MM_REG_WAIT(cmd, ctx->comp->gce_event[MDP_GCE_EVENT_EOF]);
-       else
-               dev_err(dev, "Do not support WROT1_DONE event\n");
+       if (!mdp_cfg)
+               return -EINVAL;
+
+       if (ctx->comp->alias_id >= mdp_cfg->wrot_event_num) {
+               dev_err(dev, "Invalid WROT event %d!\n", ctx->comp->alias_id);
+               return -EINVAL;
+       }
+
+       MM_REG_WAIT(cmd, ctx->comp->gce_event[MDP_GCE_EVENT_EOF]);
 
        if (mdp_cfg && mdp_cfg->wrot_filter_constraint)
                MM_REG_WRITE(cmd, subsys_id, base, VIDO_MAIN_BUF_SIZE, 0x0,
diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h 
b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h
index 22d1b17ef2fc..e57c415a1c78 100644
--- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h
+++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h
@@ -49,8 +49,10 @@ struct mdp_platform_config {
        bool    rdma_support_10bit;
        bool    rdma_rsz1_sram_sharing;
        bool    rdma_upsample_repeat_only;
+       u32     rdma_event_num;
        bool    rsz_disable_dcm_small_sample;
        bool    wrot_filter_constraint;
+       u32     wrot_event_num;
 };
 
 /* indicate which mutex is used by each pipepline */
_______________________________________________
linuxtv-commits mailing list -- linuxtv-commits@linuxtv.org
To unsubscribe send an email to linuxtv-commits-le...@linuxtv.org
%(web_page_url)slistinfo/%(_internal_name)s

Reply via email to