[RESEND PATCH] soc: mediatek: cmdq: Use mailbox rx_callback instead of cmdq_task_cb
Jason-JH Lin
jason-jh.lin at mediatek.com
Wed Apr 20 01:02:23 PDT 2022
Hi Chun-Kuang,
Reviewed-by: jason-jh.lin <jason-jh.lin at mediatek.com>
and
Tested-by: jason-jh.lin <jason-jh.lin at mediatek.com>
Hi Roy, Moudy,
Please aware of this modification for MDP on-going patch.
You can refer to this patch on DRM:
https://patchwork.kernel.org/project/linux-mediatek/patch/20211028101912.4624-2-jason-jh.lin@mediatek.com/
Thanks.
Regard,
Jason-JH.Lin
On Sat, 2022-04-16 at 17:54 +0800, Chun-Kuang Hu wrote:
> rx_callback is a standard mailbox callback mechanism and could cover
> the
> function of proprietary cmdq_task_cb, so use the standard one instead
> of
> the proprietary one. Client has changed to use the standard callback
> machanism and sync dma buffer in client driver, so remove the
> proprietary
> callback in cmdq helper.
>
> Signed-off-by: Chun-Kuang Hu <chunkuang.hu at kernel.org>
> ---
> drivers/soc/mediatek/mtk-cmdq-helper.c | 25 +-----------------------
> -
> include/linux/soc/mediatek/mtk-cmdq.h | 5 +----
> 2 files changed, 2 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c
> b/drivers/soc/mediatek/mtk-cmdq-helper.c
> index 3c8e421..c1837a4 100644
> --- a/drivers/soc/mediatek/mtk-cmdq-helper.c
> +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c
> @@ -425,34 +425,11 @@ int cmdq_pkt_finalize(struct cmdq_pkt *pkt)
> }
> EXPORT_SYMBOL(cmdq_pkt_finalize);
>
> -static void cmdq_pkt_flush_async_cb(struct cmdq_cb_data data)
> -{
> - struct cmdq_pkt *pkt = (struct cmdq_pkt *)data.data;
> - struct cmdq_task_cb *cb = &pkt->cb;
> - struct cmdq_client *client = (struct cmdq_client *)pkt->cl;
> -
> - dma_sync_single_for_cpu(client->chan->mbox->dev, pkt->pa_base,
> - pkt->cmd_buf_size, DMA_TO_DEVICE);
> - if (cb->cb) {
> - data.data = cb->data;
> - cb->cb(data);
> - }
> -}
> -
> -int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb
> cb,
> - void *data)
> +int cmdq_pkt_flush_async(struct cmdq_pkt *pkt)
> {
> int err;
> struct cmdq_client *client = (struct cmdq_client *)pkt->cl;
>
> - pkt->cb.cb = cb;
> - pkt->cb.data = data;
> - pkt->async_cb.cb = cmdq_pkt_flush_async_cb;
> - pkt->async_cb.data = pkt;
> -
> - dma_sync_single_for_device(client->chan->mbox->dev, pkt-
> >pa_base,
> - pkt->cmd_buf_size, DMA_TO_DEVICE);
> -
> err = mbox_send_message(client->chan, pkt);
> if (err < 0)
> return err;
> diff --git a/include/linux/soc/mediatek/mtk-cmdq.h
> b/include/linux/soc/mediatek/mtk-cmdq.h
> index ac6b5f3..2b498f4 100644
> --- a/include/linux/soc/mediatek/mtk-cmdq.h
> +++ b/include/linux/soc/mediatek/mtk-cmdq.h
> @@ -268,8 +268,6 @@ int cmdq_pkt_finalize(struct cmdq_pkt *pkt);
> * cmdq_pkt_flush_async() - trigger CMDQ to asynchronously execute
> the CMDQ
> * packet and call back at the end of done
> packet
> * @pkt: the CMDQ packet
> - * @cb: called at the end of done packet
> - * @data: this data will pass back to cb
> *
> * Return: 0 for success; else the error code is returned
> *
> @@ -277,7 +275,6 @@ int cmdq_pkt_finalize(struct cmdq_pkt *pkt);
> * at the end of done packet. Note that this is an ASYNC function.
> When the
> * function returned, it may or may not be finished.
> */
> -int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb
> cb,
> - void *data);
> +int cmdq_pkt_flush_async(struct cmdq_pkt *pkt);
>
> #endif /* __MTK_CMDQ_H__ */
--
Jason-JH Lin <jason-jh.lin at mediatek.com>
More information about the Linux-mediatek
mailing list