Commit bdefc6b2 authored by Chun-Kuang Hu's avatar Chun-Kuang Hu
Browse files

Revert "drm/mediatek: Clear pending flag when cmdq packet is done"



This reverts commit 9efb16c2.

Commit c1ec54b7
("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: default avatarEnric Balletbo Serra <eballetbo@gmail.com>
Tested-by: default avatarEnric Balletbo Serra <eballetbo@gmail.com>
Signed-off-by: default avatarChun-Kuang Hu <chunkuang.hu@kernel.org>
parent 6880fa6c
Loading
Loading
Loading
Loading
+5 −42
Original line number Diff line number Diff line
@@ -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,7 +423,6 @@ static void mtk_crtc_ddp_config(struct drm_crtc *crtc,
				    state->pending_vrefresh, 0,
				    cmdq_handle);

		if (!cmdq_handle)
		state->pending_config = false;
	}

@@ -474,11 +443,8 @@ 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;
		}

		if (!cmdq_handle)
		mtk_crtc->pending_planes = false;
	}

@@ -499,11 +465,8 @@ 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;
		}

		if (!cmdq_handle)
		mtk_crtc->pending_async_planes = false;
	}
}