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

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

Merge "Revert "msm: mdss: fix boot-up issues with splash thread enabled""

parents 84012243 78130405
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -174,9 +174,6 @@ static int mdss_mdp_parse_dt_misc(struct platform_device *pdev);
static int mdss_mdp_parse_dt_ad_cfg(struct platform_device *pdev);
static int mdss_mdp_parse_dt_bus_scale(struct platform_device *pdev);
static int mdss_mdp_parse_dt_ppb_off(struct platform_device *pdev);
static int mdss_iommu_attach(struct mdss_data_type *mdata);
static int mdss_iommu_dettach(struct mdss_data_type *mdata);

/**
 * mdss_mdp_vbif_axi_halt() - Halt MDSS AXI ports
 * @mdata: pointer to the global mdss data structure.
@@ -683,7 +680,11 @@ int mdss_iommu_ctrl(int enable)
		__builtin_return_address(0), enable, mdata->iommu_ref_cnt);

	if (enable) {
		if (mdata->iommu_ref_cnt == 0) {
		/*
		 * delay iommu attach until continous splash screen has
		 * finished handoff, as it may still be working with phys addr
		 */
		if (!mdata->iommu_attached && !mdata->handoff_pending) {
			if (mdata->needs_iommu_bw_vote)
				mdss_bus_scale_set_quota(MDSS_HW_IOMMU,
					SZ_1M, SZ_1M);
@@ -984,7 +985,7 @@ static int mdss_mdp_irq_clk_setup(struct mdss_data_type *mdata)
	return 0;
}

static int mdss_iommu_attach(struct mdss_data_type *mdata)
int mdss_iommu_attach(struct mdss_data_type *mdata)
{
	struct iommu_domain *domain;
	struct mdss_iommu_map_type *iomap;
@@ -1025,7 +1026,7 @@ end:
	return rc;
}

static int mdss_iommu_dettach(struct mdss_data_type *mdata)
int mdss_iommu_dettach(struct mdss_data_type *mdata)
{
	struct iommu_domain *domain;
	struct mdss_iommu_map_type *iomap;
@@ -1057,7 +1058,7 @@ end:
	return 0;
}

static int mdss_iommu_init(struct mdss_data_type *mdata)
int mdss_iommu_init(struct mdss_data_type *mdata)
{
	struct msm_iova_layout layout;
	struct iommu_domain *domain;
+2 −0
Original line number Diff line number Diff line
@@ -816,6 +816,8 @@ static inline u32 left_lm_w_from_mfd(struct msm_fb_data_type *mfd)
}

irqreturn_t mdss_mdp_isr(int irq, void *ptr);
int mdss_iommu_attach(struct mdss_data_type *mdata);
int mdss_iommu_dettach(struct mdss_data_type *mdata);
void mdss_mdp_irq_clear(struct mdss_data_type *mdata,
		u32 intr_type, u32 intf_num);
int mdss_mdp_irq_enable(u32 intr_type, u32 intf_num);
+10 −14
Original line number Diff line number Diff line
@@ -1301,12 +1301,10 @@ int mdss_mdp_overlay_start(struct msm_fb_data_type *mfd)
	struct mdss_data_type *mdata = mdss_mdp_get_mdata();
	struct mdss_mdp_ctl *ctl = mdp5_data->ctl;

	pr_debug("starting fb%d overlay called from %pS\n", mfd->index,
		__builtin_return_address(0));

	if (mdss_mdp_ctl_is_power_on(ctl)) {
		if (!mdp5_data->mdata->batfet)
			mdss_mdp_batfet_ctrl(mdp5_data->mdata, true);
		mdss_mdp_release_splash_pipe(mfd);
		return 0;
	} else if (mfd->panel_info->cont_splash_enabled) {
		mutex_lock(&mdp5_data->list_lock);
@@ -1704,18 +1702,19 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd,
	ret = mdss_mdp_overlay_start(mfd);
	if (ret) {
		pr_err("unable to start overlay %d (%d)\n", mfd->index, ret);
		goto unlock_exit;
	}

	if (!mdss_mdp_ctl_is_power_on(ctl)) {
		pr_debug("ctl is not powerd on. skip kickoff\n");
		goto unlock_exit;
		mutex_unlock(&mdp5_data->ov_lock);
		if (ctl->shared_lock)
			mutex_unlock(ctl->shared_lock);
		return ret;
	}

	ret = mdss_iommu_ctrl(1);
	if (IS_ERR_VALUE(ret)) {
		pr_err("iommu attach failed rc=%d\n", ret);
		goto unlock_exit;
		mutex_unlock(&mdp5_data->ov_lock);
		if (ctl->shared_lock)
			mutex_unlock(ctl->shared_lock);
		return ret;
	}
	mutex_lock(&mdp5_data->list_lock);

@@ -1880,11 +1879,10 @@ commit_fail:
	if (!mdp5_data->kickoff_released)
		mdss_mdp_ctl_notify(ctl, MDP_NOTIFY_FRAME_CTX_DONE);

	mdss_iommu_ctrl(0);
unlock_exit:
	mutex_unlock(&mdp5_data->ov_lock);
	if (ctl->shared_lock)
		mutex_unlock(ctl->shared_lock);
	mdss_iommu_ctrl(0);
	ATRACE_END(__func__);

	return ret;
@@ -2122,8 +2120,6 @@ static int mdss_mdp_overlay_play(struct msm_fb_data_type *mfd,
		goto done;
	}

	mdss_mdp_release_splash_pipe(mfd);

	if (req->id & MDSS_MDP_ROT_SESSION_MASK) {
		ret = mdss_mdp_rotator_play(mfd, req);
	} else if (req->id == BORDERFILL_NDX) {