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

Commit a0510cda 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: fix split_lm flag setting for HDMI usecases"

parents ad4a5d07 975d1668
Loading
Loading
Loading
Loading
+3 −10
Original line number Diff line number Diff line
@@ -4004,22 +4004,15 @@ int mdss_mdp_async_ctl_flush(struct msm_fb_data_type *mfd,
{
	struct mdss_overlay_private *mdp5_data = mfd_to_mdp5_data(mfd);
	struct mdss_mdp_ctl *ctl = mdp5_data->ctl;
	struct mdss_mdp_ctl *sctl = NULL;
	struct mdss_mdp_ctl *sctl = mdss_mdp_get_split_ctl(ctl);
	int ret = 0;

	mutex_lock(&ctl->flush_lock);

	mdss_mdp_ctl_write(ctl, MDSS_MDP_REG_CTL_FLUSH, flush_bits);
	if ((!ctl->split_flush_en) && is_split_lm(mfd)) {
		sctl = mdss_mdp_get_split_ctl(ctl);
		if (!sctl) {
			pr_err("not able to get the other ctl\n");
			ret = -EINVAL;
			goto end;
		}
	if ((!ctl->split_flush_en) && sctl)
		mdss_mdp_ctl_write(sctl, MDSS_MDP_REG_CTL_FLUSH, flush_bits);
	}
end:

	mutex_unlock(&ctl->flush_lock);
	return ret;
}
+29 −0
Original line number Diff line number Diff line
@@ -4368,6 +4368,33 @@ error:
		return ctl;
}

static void mdss_mdp_set_lm_flag(struct msm_fb_data_type *mfd)
{
	u32 width;
	struct mdss_data_type *mdata;

	/* if lm_widths are set, the split_mode would have been set */
	if (mfd->panel_info->lm_widths[0] && mfd->panel_info->lm_widths[1])
		return;

	mdata = mdss_mdp_get_mdata();
	width = mfd->fbi->var.xres;

	/* setting the appropriate split_mode for HDMI usecases */
	if (mfd->split_mode == MDP_SPLIT_MODE_NONE &&
			width > mdata->max_mixer_width) {
		width /= 2;
		mfd->split_mode = MDP_DUAL_LM_SINGLE_DISPLAY;
		mfd->split_fb_left = width;
		mfd->split_fb_right = width;
	} else if (mfd->split_mode == MDP_DUAL_LM_SINGLE_DISPLAY &&
			width <= mdata->max_mixer_width) {
		mfd->split_mode = MDP_SPLIT_MODE_NONE;
		mfd->split_fb_left = 0;
		mfd->split_fb_right = 0;
	}
}

static int mdss_mdp_overlay_on(struct msm_fb_data_type *mfd)
{
	int rc;
@@ -4384,6 +4411,8 @@ static int mdss_mdp_overlay_on(struct msm_fb_data_type *mfd)
	if (!mdp5_data)
		return -EINVAL;

	mdss_mdp_set_lm_flag(mfd);

	if (!mdp5_data->ctl) {
		ctl = __mdss_mdp_overlay_ctl_init(mfd);
		if (IS_ERR_OR_NULL(ctl))