Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d874fe9d authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mdss: Call wait4comp after commit for wb intf"

parents 217bab71 10c3c86d
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -380,7 +380,6 @@ struct mdss_mdp_pipe {

struct mdss_mdp_writeback_arg {
	struct mdss_mdp_data *data;
	void (*callback_fnc) (void *arg);
	void *priv_data;
};

+10 −9
Original line number Diff line number Diff line
@@ -46,8 +46,6 @@ struct mdss_mdp_writeback_ctx {

	struct mdss_mdp_plane_sizes dst_planes;

	void (*callback_fnc) (void *arg);
	void *callback_arg;
	spinlock_t wb_lock;
	struct list_head vsync_handlers;
};
@@ -380,6 +378,8 @@ static int mdss_mdp_writeback_stop(struct mdss_mdp_ctl *ctl)
		mdss_mdp_set_intr_callback(ctx->intr_type, ctx->intf_num,
				NULL, NULL);

		complete_all(&ctx->wb_comp);

		ctl->priv_data = NULL;
		ctx->ref_cnt--;
	}
@@ -404,9 +404,6 @@ static void mdss_mdp_writeback_intr_done(void *arg)

	mdss_mdp_irq_disable_nosync(ctx->intr_type, ctx->intf_num);

	if (ctx->callback_fnc)
		ctx->callback_fnc(ctx->callback_arg);

	spin_lock(&ctx->wb_lock);
	list_for_each_entry(tmp, &ctx->vsync_handlers, list) {
		tmp->vsync_handler(ctl, vsync_time);
@@ -482,9 +479,6 @@ static int mdss_mdp_writeback_display(struct mdss_mdp_ctl *ctl, void *arg)
	mdss_mdp_set_intr_callback(ctx->intr_type, ctx->intf_num,
		   mdss_mdp_writeback_intr_done, ctl);

	ctx->callback_fnc = wb_args->callback_fnc;
	ctx->callback_arg = wb_args->priv_data;

	flush_bits = BIT(16); /* WB */
	mdp_wb_write(ctx, MDSS_MDP_REG_WB_DST_ADDR_SW_STATUS, ctl->is_secure);
	mdss_mdp_ctl_write(ctl, MDSS_MDP_REG_CTL_FLUSH, flush_bits);
@@ -544,6 +538,8 @@ int mdss_mdp_writeback_start(struct mdss_mdp_ctl *ctl)

int mdss_mdp_writeback_display_commit(struct mdss_mdp_ctl *ctl, void *arg)
{
	int ret = 0;

	if (ctl->shared_lock && !mutex_is_locked(ctl->shared_lock)) {
		pr_err("shared mutex is not locked before commit on ctl=%d\n",
			ctl->num);
@@ -557,5 +553,10 @@ int mdss_mdp_writeback_display_commit(struct mdss_mdp_ctl *ctl, void *arg)
			ctl->mixer_right->params_changed++;
	}

	return mdss_mdp_display_commit(ctl, arg);
	ret = mdss_mdp_display_commit(ctl, arg);

	if (!IS_ERR_VALUE(ret))
		mdss_mdp_display_wait4comp(ctl);

	return ret;
}
+0 −1
Original line number Diff line number Diff line
@@ -137,7 +137,6 @@ static int mdss_mdp_rotator_kickoff(struct mdss_mdp_ctl *ctl,
{
	int ret;
	struct mdss_mdp_writeback_arg wb_args = {
		.callback_fnc = NULL,
		.data = dst_data,
		.priv_data = rot,
	};
+1 −17
Original line number Diff line number Diff line
@@ -516,23 +516,13 @@ static int mdss_mdp_wb_dequeue(struct msm_fb_data_type *mfd,
	return ret;
}

static void mdss_mdp_wb_callback(void *arg)
{
	if (arg)
		complete((struct completion *) arg);
}

int mdss_mdp_wb_kickoff(struct msm_fb_data_type *mfd)
{
	struct mdss_mdp_wb *wb = mfd_to_wb(mfd);
	struct mdss_mdp_ctl *ctl = mfd_to_ctl(mfd);
	struct mdss_mdp_wb_data *node = NULL;
	int ret = 0;
	DECLARE_COMPLETION_ONSTACK(comp);
	struct mdss_mdp_writeback_arg wb_args = {
		.callback_fnc = mdss_mdp_wb_callback,
		.priv_data = &comp,
	};
	struct mdss_mdp_writeback_arg wb_args;

	if (!ctl->power_on)
		return 0;
@@ -574,12 +564,6 @@ int mdss_mdp_wb_kickoff(struct msm_fb_data_type *mfd)
		goto kickoff_fail;
	}

	ret = wait_for_completion_timeout(&comp, KOFF_TIMEOUT);
	if (ret == 0)
		WARN(1, "wfd kick off time out=%d ctl=%d", ret, ctl->num);
	else
		ret = 0;

	if (wb && node) {
		mutex_lock(&wb->lock);
		list_add_tail(&node->active_entry, &wb->busy_queue);