Message ID | 20201202235856.7652-1-chunkuang.hu@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | soc: mediatek: cmdq: Remove cmdq_pkt_flush() | expand |
Hi, Matthias: Chun-Kuang Hu <chunkuang.hu@kernel.org> 於 2020年12月3日 週四 上午7:59寫道: > > rx_callback is a standard mailbox callback mechanism and could > cover the function of proprietary cmdq_task_cb, so it is better > to use the standard one instead of the proprietary one. But > register rx_callback should before mbox_request_channel(), > so remove cmdq_pkt_flush() and let client driver implement > its own synchronous flush. How do you think about this patch? This patch is derived from [1] according to Jassi's suggestion [2]. [1] https://patchwork.kernel.org/project/linux-mediatek/patch/20200927230422.11610-3-chunkuang.hu@kernel.org/ [2] https://patchwork.kernel.org/project/linux-mediatek/cover/20200927230422.11610-1-chunkuang.hu@kernel.org/ Regards, Chun-Kuang. > > Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> > --- > drivers/soc/mediatek/mtk-cmdq-helper.c | 32 -------------------------- > include/linux/soc/mediatek/mtk-cmdq.h | 12 ---------- > 2 files changed, 44 deletions(-) > > diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c > index 505651b0d715..fd3bc39538a1 100644 > --- a/drivers/soc/mediatek/mtk-cmdq-helper.c > +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c > @@ -502,36 +502,4 @@ int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb cb, > } > EXPORT_SYMBOL(cmdq_pkt_flush_async); > > -struct cmdq_flush_completion { > - struct completion cmplt; > - bool err; > -}; > - > -static void cmdq_pkt_flush_cb(struct cmdq_cb_data data) > -{ > - struct cmdq_flush_completion *cmplt; > - > - cmplt = (struct cmdq_flush_completion *)data.data; > - if (data.sta != CMDQ_CB_NORMAL) > - cmplt->err = true; > - else > - cmplt->err = false; > - complete(&cmplt->cmplt); > -} > - > -int cmdq_pkt_flush(struct cmdq_pkt *pkt) > -{ > - struct cmdq_flush_completion cmplt; > - int err; > - > - init_completion(&cmplt.cmplt); > - err = cmdq_pkt_flush_async(pkt, cmdq_pkt_flush_cb, &cmplt); > - if (err < 0) > - return err; > - wait_for_completion(&cmplt.cmplt); > - > - return cmplt.err ? -EFAULT : 0; > -} > -EXPORT_SYMBOL(cmdq_pkt_flush); > - > MODULE_LICENSE("GPL v2"); > diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h > index 960704d75994..2c6aa84c0e80 100644 > --- a/include/linux/soc/mediatek/mtk-cmdq.h > +++ b/include/linux/soc/mediatek/mtk-cmdq.h > @@ -288,16 +288,4 @@ int cmdq_pkt_finalize(struct cmdq_pkt *pkt); > int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb cb, > void *data); > > -/** > - * cmdq_pkt_flush() - trigger CMDQ to execute the CMDQ packet > - * @pkt: the CMDQ packet > - * > - * Return: 0 for success; else the error code is returned > - * > - * Trigger CMDQ to execute the CMDQ packet. Note that this is a > - * synchronous flush function. When the function returned, the recorded > - * commands have been done. > - */ > -int cmdq_pkt_flush(struct cmdq_pkt *pkt); > - > #endif /* __MTK_CMDQ_H__ */ > -- > 2.17.1 >
Hi, Matthias: Chun-Kuang Hu <chunkuang.hu@kernel.org> 於 2021年1月10日 週日 上午6:59寫道: > > Hi, Matthias: > > Chun-Kuang Hu <chunkuang.hu@kernel.org> 於 2020年12月3日 週四 上午7:59寫道: > > > > rx_callback is a standard mailbox callback mechanism and could > > cover the function of proprietary cmdq_task_cb, so it is better > > to use the standard one instead of the proprietary one. But > > register rx_callback should before mbox_request_channel(), > > so remove cmdq_pkt_flush() and let client driver implement > > its own synchronous flush. > > How do you think about this patch? This patch is derived from [1] > according to Jassi's suggestion [2]. > > [1] https://patchwork.kernel.org/project/linux-mediatek/patch/20200927230422.11610-3-chunkuang.hu@kernel.org/ > [2] https://patchwork.kernel.org/project/linux-mediatek/cover/20200927230422.11610-1-chunkuang.hu@kernel.org/ Just a ping. Regards, Chun-Kuang. > > Regards, > Chun-Kuang. > > > > > Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> > > --- > > drivers/soc/mediatek/mtk-cmdq-helper.c | 32 -------------------------- > > include/linux/soc/mediatek/mtk-cmdq.h | 12 ---------- > > 2 files changed, 44 deletions(-) > > > > diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c > > index 505651b0d715..fd3bc39538a1 100644 > > --- a/drivers/soc/mediatek/mtk-cmdq-helper.c > > +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c > > @@ -502,36 +502,4 @@ int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb cb, > > } > > EXPORT_SYMBOL(cmdq_pkt_flush_async); > > > > -struct cmdq_flush_completion { > > - struct completion cmplt; > > - bool err; > > -}; > > - > > -static void cmdq_pkt_flush_cb(struct cmdq_cb_data data) > > -{ > > - struct cmdq_flush_completion *cmplt; > > - > > - cmplt = (struct cmdq_flush_completion *)data.data; > > - if (data.sta != CMDQ_CB_NORMAL) > > - cmplt->err = true; > > - else > > - cmplt->err = false; > > - complete(&cmplt->cmplt); > > -} > > - > > -int cmdq_pkt_flush(struct cmdq_pkt *pkt) > > -{ > > - struct cmdq_flush_completion cmplt; > > - int err; > > - > > - init_completion(&cmplt.cmplt); > > - err = cmdq_pkt_flush_async(pkt, cmdq_pkt_flush_cb, &cmplt); > > - if (err < 0) > > - return err; > > - wait_for_completion(&cmplt.cmplt); > > - > > - return cmplt.err ? -EFAULT : 0; > > -} > > -EXPORT_SYMBOL(cmdq_pkt_flush); > > - > > MODULE_LICENSE("GPL v2"); > > diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h > > index 960704d75994..2c6aa84c0e80 100644 > > --- a/include/linux/soc/mediatek/mtk-cmdq.h > > +++ b/include/linux/soc/mediatek/mtk-cmdq.h > > @@ -288,16 +288,4 @@ int cmdq_pkt_finalize(struct cmdq_pkt *pkt); > > int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb cb, > > void *data); > > > > -/** > > - * cmdq_pkt_flush() - trigger CMDQ to execute the CMDQ packet > > - * @pkt: the CMDQ packet > > - * > > - * Return: 0 for success; else the error code is returned > > - * > > - * Trigger CMDQ to execute the CMDQ packet. Note that this is a > > - * synchronous flush function. When the function returned, the recorded > > - * commands have been done. > > - */ > > -int cmdq_pkt_flush(struct cmdq_pkt *pkt); > > - > > #endif /* __MTK_CMDQ_H__ */ > > -- > > 2.17.1 > >
diff --git a/drivers/soc/mediatek/mtk-cmdq-helper.c b/drivers/soc/mediatek/mtk-cmdq-helper.c index 505651b0d715..fd3bc39538a1 100644 --- a/drivers/soc/mediatek/mtk-cmdq-helper.c +++ b/drivers/soc/mediatek/mtk-cmdq-helper.c @@ -502,36 +502,4 @@ int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb cb, } EXPORT_SYMBOL(cmdq_pkt_flush_async); -struct cmdq_flush_completion { - struct completion cmplt; - bool err; -}; - -static void cmdq_pkt_flush_cb(struct cmdq_cb_data data) -{ - struct cmdq_flush_completion *cmplt; - - cmplt = (struct cmdq_flush_completion *)data.data; - if (data.sta != CMDQ_CB_NORMAL) - cmplt->err = true; - else - cmplt->err = false; - complete(&cmplt->cmplt); -} - -int cmdq_pkt_flush(struct cmdq_pkt *pkt) -{ - struct cmdq_flush_completion cmplt; - int err; - - init_completion(&cmplt.cmplt); - err = cmdq_pkt_flush_async(pkt, cmdq_pkt_flush_cb, &cmplt); - if (err < 0) - return err; - wait_for_completion(&cmplt.cmplt); - - return cmplt.err ? -EFAULT : 0; -} -EXPORT_SYMBOL(cmdq_pkt_flush); - MODULE_LICENSE("GPL v2"); diff --git a/include/linux/soc/mediatek/mtk-cmdq.h b/include/linux/soc/mediatek/mtk-cmdq.h index 960704d75994..2c6aa84c0e80 100644 --- a/include/linux/soc/mediatek/mtk-cmdq.h +++ b/include/linux/soc/mediatek/mtk-cmdq.h @@ -288,16 +288,4 @@ int cmdq_pkt_finalize(struct cmdq_pkt *pkt); int cmdq_pkt_flush_async(struct cmdq_pkt *pkt, cmdq_async_flush_cb cb, void *data); -/** - * cmdq_pkt_flush() - trigger CMDQ to execute the CMDQ packet - * @pkt: the CMDQ packet - * - * Return: 0 for success; else the error code is returned - * - * Trigger CMDQ to execute the CMDQ packet. Note that this is a - * synchronous flush function. When the function returned, the recorded - * commands have been done. - */ -int cmdq_pkt_flush(struct cmdq_pkt *pkt); - #endif /* __MTK_CMDQ_H__ */
rx_callback is a standard mailbox callback mechanism and could cover the function of proprietary cmdq_task_cb, so it is better to use the standard one instead of the proprietary one. But register rx_callback should before mbox_request_channel(), so remove cmdq_pkt_flush() and let client driver implement its own synchronous flush. Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org> --- drivers/soc/mediatek/mtk-cmdq-helper.c | 32 -------------------------- include/linux/soc/mediatek/mtk-cmdq.h | 12 ---------- 2 files changed, 44 deletions(-)