All of lore.kernel.org
 help / color / mirror / Atom feed
From: Moudy Ho <moudy.ho@mediatek.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	AngeloGioacchino Del Regno 
	<angelogioacchino.delregno@collabora.com>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>
Cc: <linux-kernel@vger.kernel.org>, <linux-media@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>,
	Moudy Ho <moudy.ho@mediatek.com>
Subject: [PATCH v8 07/12] media: platform: mtk-mdp3: extend GCE event waiting in RDMA and WROT
Date: Mon, 30 Oct 2023 18:06:21 +0800	[thread overview]
Message-ID: <20231030100626.12564-8-moudy.ho@mediatek.com> (raw)
In-Reply-To: <20231030100626.12564-1-moudy.ho@mediatek.com>

Support for multiple RDMA/WROT waits for GCE events.

Signed-off-by: Moudy Ho <moudy.ho@mediatek.com>
---
 .../platform/mediatek/mdp3/mdp_cfg_data.c     |  2 ++
 .../platform/mediatek/mdp3/mtk-mdp3-comp.c    | 27 +++++++++++++------
 .../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 */
-- 
2.18.0


WARNING: multiple messages have this Message-ID (diff)
From: Moudy Ho <moudy.ho@mediatek.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	Hans Verkuil <hverkuil-cisco@xs4all.nl>
Cc: <linux-kernel@vger.kernel.org>, <linux-media@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-mediatek@lists.infradead.org>,
	Moudy Ho <moudy.ho@mediatek.com>
Subject: [PATCH v8 07/12] media: platform: mtk-mdp3: extend GCE event waiting in RDMA and WROT
Date: Mon, 30 Oct 2023 18:06:21 +0800	[thread overview]
Message-ID: <20231030100626.12564-8-moudy.ho@mediatek.com> (raw)
In-Reply-To: <20231030100626.12564-1-moudy.ho@mediatek.com>

Support for multiple RDMA/WROT waits for GCE events.

Signed-off-by: Moudy Ho <moudy.ho@mediatek.com>
---
 .../platform/mediatek/mdp3/mdp_cfg_data.c     |  2 ++
 .../platform/mediatek/mdp3/mtk-mdp3-comp.c    | 27 +++++++++++++------
 .../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 */
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-10-30 10:14 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-30 10:06 [PATCH v8 00/12] add support MDP3 on MT8195 platform Moudy Ho
2023-10-30 10:06 ` Moudy Ho
2023-10-30 10:06 ` [PATCH v8 01/12] media: platform: mtk-mdp3: add support second sets of MMSYS Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:45   ` AngeloGioacchino Del Regno
2023-11-06 12:45     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 02/12] media: platform: mtk-mdp3: add support second sets of MUTEX Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:45   ` AngeloGioacchino Del Regno
2023-11-06 12:45     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 03/12] media: platform: mtk-mdp3: introduce more pipelines from MT8195 Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:45   ` AngeloGioacchino Del Regno
2023-11-06 12:45     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 04/12] media: platform: mtk-mdp3: introduce more MDP3 components Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 05/12] media: platform: mtk-mdp3: add checks for dummy components Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 06/12] media: platform: mtk-mdp3: avoid multiple driver registrations Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` Moudy Ho [this message]
2023-10-30 10:06   ` [PATCH v8 07/12] media: platform: mtk-mdp3: extend GCE event waiting in RDMA and WROT Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 08/12] media: platform: mtk-mdp3: add support for blending multiple components Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 09/12] media: platform: mtk-mdp3: add mt8195 platform configuration Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 10/12] media: platform: mtk-mdp3: add mt8195 shared memory configurations Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 11/12] media: platform: mtk-mdp3: add mt8195 MDP3 component settings Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-30 10:06 ` [PATCH v8 12/12] media: platform: mtk-mdp3: add support for parallel pipe to improve FPS Moudy Ho
2023-10-30 10:06   ` Moudy Ho
2023-11-06 12:44   ` AngeloGioacchino Del Regno
2023-11-06 12:44     ` AngeloGioacchino Del Regno
2023-10-31  8:41 ` [PATCH v8 00/12] add support MDP3 on MT8195 platform Moudy Ho (何宗原)
2023-10-31  8:41   ` Moudy Ho (何宗原)
2023-11-06 12:45 ` AngeloGioacchino Del Regno
2023-11-06 12:45   ` AngeloGioacchino Del Regno
2023-11-09 17:14   ` nicolas
2023-11-09 17:14     ` nicolas
2023-12-16  6:47 ` Sebastian Fricke
2023-12-16  6:47   ` Sebastian Fricke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231030100626.12564-8-moudy.ho@mediatek.com \
    --to=moudy.ho@mediatek.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=hverkuil-cisco@xs4all.nl \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=matthias.bgg@gmail.com \
    --cc=mchehab@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.