Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Revert "drm/mediatek: Use mailbox rx_callback instead of cmdq_task_cb"

This reverts commit c1ec54b7b5af25c779192253f5a9f05e95cb43d7.

Commit c1ec54b7b5af
("drm/mediatek: Use mailbox rx_callback instead of cmdq_task_cb")
would cause numerous mtk cmdq mailbox driver warning:

WARNING: CPU: 0 PID: 0 at drivers/mailbox/mtk-cmdq-mailbox.c:198
cmdq_task_exec_done+0xb8/0xe0

So revert that patch.

Reported-by: Enric Balletbo Serra <eballetbo@gmail.com>
Tested-by: Enric Balletbo Serra <eballetbo@gmail.com>
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>

+3 -13
+3 -13
drivers/gpu/drm/mediatek/mtk_drm_crtc.c
··· 4 4 */ 5 5 6 6 #include <linux/clk.h> 7 - #include <linux/dma-mapping.h> 8 - #include <linux/mailbox_controller.h> 9 7 #include <linux/pm_runtime.h> 10 8 #include <linux/soc/mediatek/mtk-cmdq.h> 11 9 #include <linux/soc/mediatek/mtk-mmsys.h> ··· 222 224 } 223 225 224 226 #if IS_REACHABLE(CONFIG_MTK_CMDQ) 225 - static void ddp_cmdq_cb(struct mbox_client *cl, void *mssg) 227 + static void ddp_cmdq_cb(struct cmdq_cb_data data) 226 228 { 227 - struct cmdq_cb_data *data = mssg; 228 - 229 - cmdq_pkt_destroy(data->pkt); 229 + cmdq_pkt_destroy(data.data); 230 230 } 231 231 #endif 232 232 ··· 475 479 cmdq_pkt_wfe(cmdq_handle, mtk_crtc->cmdq_event, false); 476 480 mtk_crtc_ddp_config(crtc, cmdq_handle); 477 481 cmdq_pkt_finalize(cmdq_handle); 478 - dma_sync_single_for_device(mtk_crtc->cmdq_client->chan->mbox->dev, 479 - cmdq_handle->pa_base, 480 - cmdq_handle->cmd_buf_size, 481 - DMA_TO_DEVICE); 482 - mbox_send_message(mtk_crtc->cmdq_client->chan, cmdq_handle); 483 - mbox_client_txdone(mtk_crtc->cmdq_client->chan, 0); 482 + cmdq_pkt_flush_async(cmdq_handle, ddp_cmdq_cb, cmdq_handle); 484 483 } 485 484 #endif 486 485 mtk_crtc->config_updating = false; ··· 839 848 } 840 849 841 850 if (mtk_crtc->cmdq_client) { 842 - mtk_crtc->cmdq_client->client.rx_callback = ddp_cmdq_cb; 843 851 ret = of_property_read_u32_index(priv->mutex_node, 844 852 "mediatek,gce-events", 845 853 drm_crtc_index(&mtk_crtc->base),