Revert "drm/mediatek: Clear pending flag when cmdq packet is done"
authorChun-Kuang Hu <chunkuang.hu@kernel.org>
Thu, 7 Oct 2021 23:11:20 +0000 (07:11 +0800)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Tue, 12 Oct 2021 00:00:47 +0000 (08:00 +0800)
This reverts commit 9efb16c2fdd647d3888fd8dae84509f485cd554e.

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 and all the patches depend on 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>
drivers/gpu/drm/mediatek/mtk_drm_crtc.c

index 5f81489..9840b8d 100644 (file)
@@ -267,36 +267,6 @@ static void ddp_cmdq_cb(struct mbox_client *cl, void *mssg)
 {
        struct mtk_drm_crtc *mtk_crtc = container_of(cl, struct mtk_drm_crtc, cmdq_cl);
        struct cmdq_cb_data *data = mssg;
-       struct mtk_crtc_state *state;
-       unsigned int i;
-
-       state = to_mtk_crtc_state(mtk_crtc->base.state);
-
-       state->pending_config = false;
-
-       if (mtk_crtc->pending_planes) {
-               for (i = 0; i < mtk_crtc->layer_nr; i++) {
-                       struct drm_plane *plane = &mtk_crtc->planes[i];
-                       struct mtk_plane_state *plane_state;
-
-                       plane_state = to_mtk_plane_state(plane->state);
-
-                       plane_state->pending.config = false;
-               }
-               mtk_crtc->pending_planes = false;
-       }
-
-       if (mtk_crtc->pending_async_planes) {
-               for (i = 0; i < mtk_crtc->layer_nr; i++) {
-                       struct drm_plane *plane = &mtk_crtc->planes[i];
-                       struct mtk_plane_state *plane_state;
-
-                       plane_state = to_mtk_plane_state(plane->state);
-
-                       plane_state->pending.async_config = false;
-               }
-               mtk_crtc->pending_async_planes = false;
-       }
 
        mtk_crtc->cmdq_vblank_cnt = 0;
        mtk_drm_cmdq_pkt_destroy(mtk_crtc->cmdq_chan, data->pkt);
@@ -453,8 +423,7 @@ static void mtk_crtc_ddp_config(struct drm_crtc *crtc,
                                    state->pending_vrefresh, 0,
                                    cmdq_handle);
 
-               if (!cmdq_handle)
-                       state->pending_config = false;
+               state->pending_config = false;
        }
 
        if (mtk_crtc->pending_planes) {
@@ -474,12 +443,9 @@ static void mtk_crtc_ddp_config(struct drm_crtc *crtc,
                                mtk_ddp_comp_layer_config(comp, local_layer,
                                                          plane_state,
                                                          cmdq_handle);
-                       if (!cmdq_handle)
-                               plane_state->pending.config = false;
+                       plane_state->pending.config = false;
                }
-
-               if (!cmdq_handle)
-                       mtk_crtc->pending_planes = false;
+               mtk_crtc->pending_planes = false;
        }
 
        if (mtk_crtc->pending_async_planes) {
@@ -499,12 +465,9 @@ static void mtk_crtc_ddp_config(struct drm_crtc *crtc,
                                mtk_ddp_comp_layer_config(comp, local_layer,
                                                          plane_state,
                                                          cmdq_handle);
-                       if (!cmdq_handle)
-                               plane_state->pending.async_config = false;
+                       plane_state->pending.async_config = false;
                }
-
-               if (!cmdq_handle)
-                       mtk_crtc->pending_async_planes = false;
+               mtk_crtc->pending_async_planes = false;
        }
 }