* [PATCH v3 0/5] Remove cl in struct cmdq_pkt
@ 2024-08-10 9:09 Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 1/5] drm/mediatek: Use cmdq_pkt_eoc() instead of cmdq_pkt_finalize() Chun-Kuang Hu
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Chun-Kuang Hu @ 2024-08-10 9:09 UTC (permalink / raw)
To: Matthias Brugger, AngeloGioacchino Del Regno,
Mauro Carvalho Chehab, Moudy Ho, Jason-JH . Lin,
linux-arm-kernel, linux-mediatek, dri-devel, linux-kernel,
linux-media
Cc: Chun-Kuang Hu
cl in struct cmdq_pkt is used to store struct cmdq_client, but every client
driver has the struct cmdq_client information, so it's not necessary to
store struct cmdq_client in struct cmdq_pkt. Because mailbox maintainer
do not like to mix mailbox patch with other patches in a series, so
mailbox patch [1] would be sent independently.
Changes in v3:
1. Rebase onto Linux 6.11-rc1 and fix conflicts.
Changes in v2:
1. Fix typo of CMDQ_JUMP_RELATIVE
2. Refine cmdq_pkt_create() and cmdq_pkt_destroy()
3. Rename cmdq_pkt_jump() to cmdq_pkt_jump_abs()
4. Add cmdq_pkt_jump_rel() helper function
5. drm/mediatek: Use cmdq_pkt_create() and cmdq_pkt_destroy()
6. mtk-mdp3: Get fine-grain control of cmdq_pkt_finalize()
7. mtk-mdp3: Use cmdq_pkt_create() and cmdq_pkt_destroy()
[1] https://git.kernel.org/pub/scm/linux/kernel/git/chunkuang.hu/linux.git/commit/?h=mediatek-cmdq8&id=a1b2f7a7488285975c1f439086f1c4cc51a13bb9
Chun-Kuang Hu (5):
drm/mediatek: Use cmdq_pkt_eoc() instead of cmdq_pkt_finalize()
drm/mediatek: Use cmdq_pkt_create() and cmdq_pkt_destroy()
media: platform: mtk-mdp3: Get fine-grain control of
cmdq_pkt_finalize()
media: platform: mtk-mdp3: Use cmdq_pkt_create() and
cmdq_pkt_destroy()
soc: mediatek: cmdq: Remove cmdq_pkt_finalize() helper function
drivers/gpu/drm/mediatek/mtk_crtc.c | 48 ++-----------------
.../platform/mediatek/mdp3/mtk-mdp3-cmdq.c | 48 +++----------------
.../platform/mediatek/mdp3/mtk-mdp3-core.c | 2 +
.../platform/mediatek/mdp3/mtk-mdp3-core.h | 1 +
drivers/soc/mediatek/mtk-cmdq-helper.c | 22 ---------
include/linux/soc/mediatek/mtk-cmdq.h | 13 -----
6 files changed, 14 insertions(+), 120 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 1/5] drm/mediatek: Use cmdq_pkt_eoc() instead of cmdq_pkt_finalize()
2024-08-10 9:09 [PATCH v3 0/5] Remove cl in struct cmdq_pkt Chun-Kuang Hu
@ 2024-08-10 9:09 ` Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 2/5] drm/mediatek: Use cmdq_pkt_create() and cmdq_pkt_destroy() Chun-Kuang Hu
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Chun-Kuang Hu @ 2024-08-10 9:09 UTC (permalink / raw)
To: Matthias Brugger, AngeloGioacchino Del Regno,
Mauro Carvalho Chehab, Moudy Ho, Jason-JH . Lin,
linux-arm-kernel, linux-mediatek, dri-devel, linux-kernel,
linux-media
Cc: Chun-Kuang Hu
For some client driver, it want to reduce latency between excuting
previous packet command and next packet command, so append jump
command to the end of previous packet and the jump destination
address is the start address of next packet command buffer. Before
next packet exist, the previous packet has no information of where
to jump to, so append nop command first. When next packet exist,
change nop command to jump command. For mediatek drm driver, it
never has next packet, so appending nop command is redundant.
Because cmdq_pkt_finalize() would append nop command, so change
calling cmdq_pkt_finalize() to cmdq_pkt_eoc() to prevent append
redundant nop command.
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
---
drivers/gpu/drm/mediatek/mtk_crtc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_crtc.c b/drivers/gpu/drm/mediatek/mtk_crtc.c
index 6f34f573e127..a1976c3ae001 100644
--- a/drivers/gpu/drm/mediatek/mtk_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_crtc.c
@@ -607,7 +607,7 @@ static void mtk_crtc_update_config(struct mtk_crtc *mtk_crtc, bool needs_vblank)
cmdq_pkt_clear_event(cmdq_handle, mtk_crtc->cmdq_event);
cmdq_pkt_wfe(cmdq_handle, mtk_crtc->cmdq_event, false);
mtk_crtc_ddp_config(crtc, cmdq_handle);
- cmdq_pkt_finalize(cmdq_handle);
+ cmdq_pkt_eoc(cmdq_handle);
dma_sync_single_for_device(mtk_crtc->cmdq_client.chan->mbox->dev,
cmdq_handle->pa_base,
cmdq_handle->cmd_buf_size,
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 2/5] drm/mediatek: Use cmdq_pkt_create() and cmdq_pkt_destroy()
2024-08-10 9:09 [PATCH v3 0/5] Remove cl in struct cmdq_pkt Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 1/5] drm/mediatek: Use cmdq_pkt_eoc() instead of cmdq_pkt_finalize() Chun-Kuang Hu
@ 2024-08-10 9:09 ` Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 3/5] media: platform: mtk-mdp3: Get fine-grain control of cmdq_pkt_finalize() Chun-Kuang Hu
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Chun-Kuang Hu @ 2024-08-10 9:09 UTC (permalink / raw)
To: Matthias Brugger, AngeloGioacchino Del Regno,
Mauro Carvalho Chehab, Moudy Ho, Jason-JH . Lin,
linux-arm-kernel, linux-mediatek, dri-devel, linux-kernel,
linux-media
Cc: Chun-Kuang Hu
Use cmdq_pkt_create() and cmdq_pkt_destroy() common function
instead of implementing drm version.
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
---
drivers/gpu/drm/mediatek/mtk_crtc.c | 46 +++--------------------------
1 file changed, 4 insertions(+), 42 deletions(-)
diff --git a/drivers/gpu/drm/mediatek/mtk_crtc.c b/drivers/gpu/drm/mediatek/mtk_crtc.c
index a1976c3ae001..5413c0c3dfe8 100644
--- a/drivers/gpu/drm/mediatek/mtk_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_crtc.c
@@ -113,44 +113,6 @@ static void mtk_drm_finish_page_flip(struct mtk_crtc *mtk_crtc)
}
}
-#if IS_REACHABLE(CONFIG_MTK_CMDQ)
-static int mtk_drm_cmdq_pkt_create(struct cmdq_client *client, struct cmdq_pkt *pkt,
- size_t size)
-{
- struct device *dev;
- dma_addr_t dma_addr;
-
- pkt->va_base = kzalloc(size, GFP_KERNEL);
- if (!pkt->va_base)
- return -ENOMEM;
-
- pkt->buf_size = size;
- pkt->cl = (void *)client;
-
- dev = client->chan->mbox->dev;
- dma_addr = dma_map_single(dev, pkt->va_base, pkt->buf_size,
- DMA_TO_DEVICE);
- if (dma_mapping_error(dev, dma_addr)) {
- dev_err(dev, "dma map failed, size=%u\n", (u32)(u64)size);
- kfree(pkt->va_base);
- return -ENOMEM;
- }
-
- pkt->pa_base = dma_addr;
-
- return 0;
-}
-
-static void mtk_drm_cmdq_pkt_destroy(struct cmdq_pkt *pkt)
-{
- struct cmdq_client *client = (struct cmdq_client *)pkt->cl;
-
- dma_unmap_single(client->chan->mbox->dev, pkt->pa_base, pkt->buf_size,
- DMA_TO_DEVICE);
- kfree(pkt->va_base);
-}
-#endif
-
static void mtk_crtc_destroy(struct drm_crtc *crtc)
{
struct mtk_crtc *mtk_crtc = to_mtk_crtc(crtc);
@@ -158,7 +120,7 @@ static void mtk_crtc_destroy(struct drm_crtc *crtc)
mtk_mutex_put(mtk_crtc->mutex);
#if IS_REACHABLE(CONFIG_MTK_CMDQ)
- mtk_drm_cmdq_pkt_destroy(&mtk_crtc->cmdq_handle);
+ cmdq_pkt_destroy(&mtk_crtc->cmdq_client, &mtk_crtc->cmdq_handle);
if (mtk_crtc->cmdq_client.chan) {
mbox_free_channel(mtk_crtc->cmdq_client.chan);
@@ -1094,9 +1056,9 @@ int mtk_crtc_create(struct drm_device *drm_dev, const unsigned int *path,
mbox_free_channel(mtk_crtc->cmdq_client.chan);
mtk_crtc->cmdq_client.chan = NULL;
} else {
- ret = mtk_drm_cmdq_pkt_create(&mtk_crtc->cmdq_client,
- &mtk_crtc->cmdq_handle,
- PAGE_SIZE);
+ ret = cmdq_pkt_create(&mtk_crtc->cmdq_client,
+ &mtk_crtc->cmdq_handle,
+ PAGE_SIZE);
if (ret) {
dev_dbg(dev, "mtk_crtc %d failed to create cmdq packet\n",
drm_crtc_index(&mtk_crtc->base));
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 3/5] media: platform: mtk-mdp3: Get fine-grain control of cmdq_pkt_finalize()
2024-08-10 9:09 [PATCH v3 0/5] Remove cl in struct cmdq_pkt Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 1/5] drm/mediatek: Use cmdq_pkt_eoc() instead of cmdq_pkt_finalize() Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 2/5] drm/mediatek: Use cmdq_pkt_create() and cmdq_pkt_destroy() Chun-Kuang Hu
@ 2024-08-10 9:09 ` Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 4/5] media: platform: mtk-mdp3: Use cmdq_pkt_create() and cmdq_pkt_destroy() Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 5/5] soc: mediatek: cmdq: Remove cmdq_pkt_finalize() helper function Chun-Kuang Hu
4 siblings, 0 replies; 8+ messages in thread
From: Chun-Kuang Hu @ 2024-08-10 9:09 UTC (permalink / raw)
To: Matthias Brugger, AngeloGioacchino Del Regno,
Mauro Carvalho Chehab, Moudy Ho, Jason-JH . Lin,
linux-arm-kernel, linux-mediatek, dri-devel, linux-kernel,
linux-media
Cc: Chun-Kuang Hu
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>
---
drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c | 3 ++-
drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c | 2 ++
drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h | 1 +
3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
index ea2ea119dd2a..0cddafedbecc 100644
--- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
+++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
@@ -676,7 +676,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);
for (i = 0; i < num_comp; i++) {
s32 inner_id = MDP_COMP_NONE;
diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c
index 37e7b985d52c..22b0aafccb85 100644
--- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c
+++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c
@@ -314,6 +314,8 @@ static int mdp_probe(struct platform_device *pdev)
}
}
+ mdp->cmdq_shift_pa = cmdq_get_shift_pa(mdp->cmdq_clt->chan);
+
init_waitqueue_head(&mdp->callback_wq);
ida_init(&mdp->mdp_ida);
platform_set_drvdata(pdev, mdp);
diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h
index 430251f63754..78c87c4eaba9 100644
--- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h
+++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.h
@@ -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;
wait_queue_head_t callback_wq;
struct v4l2_device v4l2_dev;
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 4/5] media: platform: mtk-mdp3: Use cmdq_pkt_create() and cmdq_pkt_destroy()
2024-08-10 9:09 [PATCH v3 0/5] Remove cl in struct cmdq_pkt Chun-Kuang Hu
` (2 preceding siblings ...)
2024-08-10 9:09 ` [PATCH v3 3/5] media: platform: mtk-mdp3: Get fine-grain control of cmdq_pkt_finalize() Chun-Kuang Hu
@ 2024-08-10 9:09 ` Chun-Kuang Hu
2024-08-30 20:28 ` Nícolas F. R. A. Prado
2024-08-10 9:09 ` [PATCH v3 5/5] soc: mediatek: cmdq: Remove cmdq_pkt_finalize() helper function Chun-Kuang Hu
4 siblings, 1 reply; 8+ messages in thread
From: Chun-Kuang Hu @ 2024-08-10 9:09 UTC (permalink / raw)
To: Matthias Brugger, AngeloGioacchino Del Regno,
Mauro Carvalho Chehab, Moudy Ho, Jason-JH . Lin,
linux-arm-kernel, linux-mediatek, dri-devel, linux-kernel,
linux-media
Cc: Chun-Kuang Hu
Use cmdq_pkt_create() and cmdq_pkt_destroy() common function
instead of implementing mdp3 version.
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
---
.../platform/mediatek/mdp3/mtk-mdp3-cmdq.c | 45 ++-----------------
1 file changed, 4 insertions(+), 41 deletions(-)
diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
index 0cddafedbecc..48432d60b49a 100644
--- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
+++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
@@ -471,43 +471,6 @@ static int mdp_path_config(struct mdp_dev *mdp, struct mdp_cmdq_cmd *cmd,
return 0;
}
-static int mdp_cmdq_pkt_create(struct cmdq_client *client, struct cmdq_pkt *pkt,
- size_t size)
-{
- struct device *dev;
- dma_addr_t dma_addr;
-
- pkt->va_base = kzalloc(size, GFP_KERNEL);
- if (!pkt->va_base)
- return -ENOMEM;
-
- pkt->buf_size = size;
- pkt->cl = (void *)client;
-
- dev = client->chan->mbox->dev;
- dma_addr = dma_map_single(dev, pkt->va_base, pkt->buf_size,
- DMA_TO_DEVICE);
- if (dma_mapping_error(dev, dma_addr)) {
- dev_err(dev, "dma map failed, size=%u\n", (u32)(u64)size);
- kfree(pkt->va_base);
- return -ENOMEM;
- }
-
- pkt->pa_base = dma_addr;
-
- return 0;
-}
-
-static void mdp_cmdq_pkt_destroy(struct cmdq_pkt *pkt)
-{
- struct cmdq_client *client = (struct cmdq_client *)pkt->cl;
-
- dma_unmap_single(client->chan->mbox->dev, pkt->pa_base, pkt->buf_size,
- DMA_TO_DEVICE);
- kfree(pkt->va_base);
- pkt->va_base = NULL;
-}
-
static void mdp_auto_release_work(struct work_struct *work)
{
struct mdp_cmdq_cmd *cmd;
@@ -538,7 +501,7 @@ static void mdp_auto_release_work(struct work_struct *work)
wake_up(&mdp->callback_wq);
}
- mdp_cmdq_pkt_destroy(&cmd->pkt);
+ cmdq_pkt_destroy(mdp->cmdq_clt, &cmd->pkt);
kfree(cmd->comps);
cmd->comps = NULL;
kfree(cmd);
@@ -578,7 +541,7 @@ static void mdp_handle_cmdq_callback(struct mbox_client *cl, void *mssg)
if (refcount_dec_and_test(&mdp->job_count))
wake_up(&mdp->callback_wq);
- mdp_cmdq_pkt_destroy(&cmd->pkt);
+ cmdq_pkt_destroy(mdp->cmdq_clt, &cmd->pkt);
kfree(cmd->comps);
cmd->comps = NULL;
kfree(cmd);
@@ -620,7 +583,7 @@ static struct mdp_cmdq_cmd *mdp_cmdq_prepare(struct mdp_dev *mdp,
goto err_uninit;
}
- ret = mdp_cmdq_pkt_create(mdp->cmdq_clt[pp_idx], &cmd->pkt, SZ_16K);
+ ret = cmdq_pkt_create(mdp->cmdq_clt[pp_idx], &cmd->pkt, SZ_16K);
if (ret)
goto err_free_cmd;
@@ -711,7 +674,7 @@ static struct mdp_cmdq_cmd *mdp_cmdq_prepare(struct mdp_dev *mdp,
err_free_comps:
kfree(comps);
err_destroy_pkt:
- mdp_cmdq_pkt_destroy(&cmd->pkt);
+ cmdq_pkt_destroy(mdp->cmdq_clt, &cmd->pkt);
err_free_cmd:
kfree(cmd);
err_uninit:
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 5/5] soc: mediatek: cmdq: Remove cmdq_pkt_finalize() helper function
2024-08-10 9:09 [PATCH v3 0/5] Remove cl in struct cmdq_pkt Chun-Kuang Hu
` (3 preceding siblings ...)
2024-08-10 9:09 ` [PATCH v3 4/5] media: platform: mtk-mdp3: Use cmdq_pkt_create() and cmdq_pkt_destroy() Chun-Kuang Hu
@ 2024-08-10 9:09 ` Chun-Kuang Hu
2024-08-30 20:32 ` Nícolas F. R. A. Prado
4 siblings, 1 reply; 8+ messages in thread
From: Chun-Kuang Hu @ 2024-08-10 9:09 UTC (permalink / raw)
To: Matthias Brugger, AngeloGioacchino Del Regno,
Mauro Carvalho Chehab, Moudy Ho, Jason-JH . Lin,
linux-arm-kernel, linux-mediatek, dri-devel, linux-kernel,
linux-media
Cc: Chun-Kuang Hu
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>
---
drivers/soc/mediatek/mtk-cmdq-helper.c | 22 ----------------------
include/linux/soc/mediatek/mtk-cmdq.h | 13 -------------
2 files changed, 35 deletions(-)
diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c
index a8fccedba83f..2a47dda4dd4a 100644
--- a/drivers/soc/mediatek/mtk-cmdq-helper.c
+++ b/drivers/soc/mediatek/mtk-cmdq-helper.c
@@ -538,27 +538,5 @@ int cmdq_pkt_eoc(struct cmdq_pkt *pkt)
}
EXPORT_SYMBOL(cmdq_pkt_eoc);
-int cmdq_pkt_finalize(struct cmdq_pkt *pkt)
-{
- struct cmdq_instruction inst = { {0} };
- int err;
-
- /* insert EOC and generate IRQ for each command iteration */
- inst.op = CMDQ_CODE_EOC;
- inst.value = CMDQ_EOC_IRQ_EN;
- err = cmdq_pkt_append_command(pkt, inst);
- if (err < 0)
- return err;
-
- /* JUMP to end */
- inst.op = CMDQ_CODE_JUMP;
- inst.value = CMDQ_JUMP_PASS >>
- cmdq_get_shift_pa(((struct cmdq_client *)pkt->cl)->chan);
- err = cmdq_pkt_append_command(pkt, inst);
-
- return err;
-}
-EXPORT_SYMBOL(cmdq_pkt_finalize);
-
MODULE_DESCRIPTION("MediaTek Command Queue (CMDQ) driver");
MODULE_LICENSE("GPL v2");
diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h
index 5bee6f7fc400..0c3906e8ad19 100644
--- a/include/linux/soc/mediatek/mtk-cmdq.h
+++ b/include/linux/soc/mediatek/mtk-cmdq.h
@@ -391,14 +391,6 @@ int cmdq_pkt_jump_rel(struct cmdq_pkt *pkt, s32 offset, u8 shift_pa);
*/
int cmdq_pkt_eoc(struct cmdq_pkt *pkt);
-/**
- * cmdq_pkt_finalize() - Append EOC and jump command to pkt.
- * @pkt: the CMDQ packet
- *
- * Return: 0 for success; else the error code is returned
- */
-int cmdq_pkt_finalize(struct cmdq_pkt *pkt);
-
#else /* IS_ENABLED(CONFIG_MTK_CMDQ) */
static inline int cmdq_dev_get_client_reg(struct device *dev,
@@ -519,11 +511,6 @@ static inline int cmdq_pkt_eoc(struct cmdq_pkt *pkt)
return -EINVAL;
}
-static inline int cmdq_pkt_finalize(struct cmdq_pkt *pkt)
-{
- return -EINVAL;
-}
-
#endif /* IS_ENABLED(CONFIG_MTK_CMDQ) */
#endif /* __MTK_CMDQ_H__ */
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 4/5] media: platform: mtk-mdp3: Use cmdq_pkt_create() and cmdq_pkt_destroy()
2024-08-10 9:09 ` [PATCH v3 4/5] media: platform: mtk-mdp3: Use cmdq_pkt_create() and cmdq_pkt_destroy() Chun-Kuang Hu
@ 2024-08-30 20:28 ` Nícolas F. R. A. Prado
0 siblings, 0 replies; 8+ messages in thread
From: Nícolas F. R. A. Prado @ 2024-08-30 20:28 UTC (permalink / raw)
To: Chun-Kuang Hu
Cc: Matthias Brugger, AngeloGioacchino Del Regno,
Mauro Carvalho Chehab, Moudy Ho, Jason-JH . Lin,
linux-arm-kernel, linux-mediatek, dri-devel, linux-kernel,
linux-media
On Sat, Aug 10, 2024 at 09:09:17AM +0000, Chun-Kuang Hu wrote:
> Use cmdq_pkt_create() and cmdq_pkt_destroy() common function
> instead of implementing mdp3 version.
>
> Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
> ---
> .../platform/mediatek/mdp3/mtk-mdp3-cmdq.c | 45 ++-----------------
> 1 file changed, 4 insertions(+), 41 deletions(-)
>
> diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
> index 0cddafedbecc..48432d60b49a 100644
> --- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
> +++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c
[..]
> @@ -538,7 +501,7 @@ static void mdp_auto_release_work(struct work_struct *work)
> wake_up(&mdp->callback_wq);
> }
>
> - mdp_cmdq_pkt_destroy(&cmd->pkt);
> + cmdq_pkt_destroy(mdp->cmdq_clt, &cmd->pkt);
Hi,
this doesn't build:
drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c: In function ‘mdp_auto_release_work’:
drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:504:29: error: passing argument 1 of ‘cmdq_pkt_destroy’ from incompatible pointer type [-Werror=incompatible-pointer-types]
504 | cmdq_pkt_destroy(mdp->cmdq_clt, &cmd->pkt);
| ~~~^~~~~~~~~~
| |
| struct cmdq_client **
In file included from drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.h:12,
from drivers/media/platform/mediatek/mdp3/mtk-mdp3-cmdq.c:10:
./include/linux/soc/mediatek/mtk-cmdq.h:111:43: note: expected ‘struct cmdq_client *’ but argument is of type ‘struct cmdq_client **’
111 | void cmdq_pkt_destroy(struct cmdq_client *client, struct cmdq_pkt *pkt);
| ~~~~~~~~~~~~~~~~~~~~^~~~~~
Same in other instances in this patch and in other patches in the series.
Thanks,
Nícolas
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 5/5] soc: mediatek: cmdq: Remove cmdq_pkt_finalize() helper function
2024-08-10 9:09 ` [PATCH v3 5/5] soc: mediatek: cmdq: Remove cmdq_pkt_finalize() helper function Chun-Kuang Hu
@ 2024-08-30 20:32 ` Nícolas F. R. A. Prado
0 siblings, 0 replies; 8+ messages in thread
From: Nícolas F. R. A. Prado @ 2024-08-30 20:32 UTC (permalink / raw)
To: Chun-Kuang Hu
Cc: Matthias Brugger, AngeloGioacchino Del Regno,
Mauro Carvalho Chehab, Moudy Ho, Jason-JH . Lin,
linux-arm-kernel, linux-mediatek, dri-devel, linux-kernel,
linux-media
On Sat, Aug 10, 2024 at 09:09:18AM +0000, Chun-Kuang Hu wrote:
> In order to have fine-grained control, use cmdq_pkt_eoc() and
> cmdq_pkt_jump_rel() to replace cmdq_pkt_finalize().
This commit description doesn't match what you're doing. What about
Now that all occurrences of cmdq_pkt_finalize() have been switched to
cmdq_pkt_eoc() and cmdq_pkt_jump_rel() for more fine-grained control, remove
cmdq_pkt_finalize().
>
> Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Reviewed-by: Nícolas F. R. A. Prado <nfraprado@collabora.com>
Thanks,
Nícolas
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2024-08-30 20:32 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-10 9:09 [PATCH v3 0/5] Remove cl in struct cmdq_pkt Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 1/5] drm/mediatek: Use cmdq_pkt_eoc() instead of cmdq_pkt_finalize() Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 2/5] drm/mediatek: Use cmdq_pkt_create() and cmdq_pkt_destroy() Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 3/5] media: platform: mtk-mdp3: Get fine-grain control of cmdq_pkt_finalize() Chun-Kuang Hu
2024-08-10 9:09 ` [PATCH v3 4/5] media: platform: mtk-mdp3: Use cmdq_pkt_create() and cmdq_pkt_destroy() Chun-Kuang Hu
2024-08-30 20:28 ` Nícolas F. R. A. Prado
2024-08-10 9:09 ` [PATCH v3 5/5] soc: mediatek: cmdq: Remove cmdq_pkt_finalize() helper function Chun-Kuang Hu
2024-08-30 20:32 ` Nícolas F. R. A. Prado
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®