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

Commit e8093d4e authored by Sandeep Panda's avatar Sandeep Panda Committed by Vinu Deokaran
Browse files

msm: mdss: set proper primary panel flag for dual DSI case



In case of dual DSI configuration if any of the DSI
controller is using bridge chip(HDMI) then consider that
as secondary display or else consider DSI1 controller as
secondary always. This change takes care of this assumption.

Change-Id: Ia24c45de2af41144e76b102232b7481ca5c5acf2
Signed-off-by: default avatarSandeep Panda <spanda@codeaurora.org>
Signed-off-by: default avatarVinu Deokaran <vinud@codeaurora.org>
parent 2b7c4eae
Loading
Loading
Loading
Loading
+26 −1
Original line number Diff line number Diff line
@@ -548,7 +548,6 @@ static int mdss_dsi_get_panel_cfg(char *panel_cfg,

	pr_debug("%s:%d: cfg:[%s]\n", __func__, __LINE__,
		 pan_cfg->arg_cfg);
	ctrl->panel_data.panel_info.is_prim_panel = true;
	rc = strlcpy(panel_cfg, pan_cfg->arg_cfg,
		     sizeof(pan_cfg->arg_cfg));
	return rc;
@@ -3610,6 +3609,31 @@ static int mdss_dsi_parse_gpio_params(struct platform_device *ctrl_pdev,
	return 0;
}

static void mdss_dsi_set_prim_panel(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
{
	struct mdss_dsi_ctrl_pdata *octrl = NULL;
	struct mdss_panel_info *pinfo;

	pinfo = &ctrl_pdata->panel_data.panel_info;

	/*
	 * for Split and Single DSI case default is always primary
	 * and for Dual dsi case below assumptions are made.
	 *	1. DSI controller with bridge chip is always secondary
	 *	2. When there is no brigde chip, DSI1 is secondary
	 */
	pinfo->is_prim_panel = true;
	if (mdss_dsi_is_hw_config_dual(ctrl_pdata->shared_data)) {
		if (mdss_dsi_is_right_ctrl(ctrl_pdata)) {
			octrl = mdss_dsi_get_other_ctrl(ctrl_pdata);
			if (octrl && octrl->panel_data.panel_info.is_prim_panel)
				pinfo->is_prim_panel = false;
			else
				pinfo->is_prim_panel = true;
		}
	}
}

int dsi_panel_device_register(struct platform_device *ctrl_pdev,
	struct device_node *pan_node, struct mdss_dsi_ctrl_pdata *ctrl_pdata)
{
@@ -3697,6 +3721,7 @@ int dsi_panel_device_register(struct platform_device *ctrl_pdev,
		mdss_dsi_panel_pwm_cfg(ctrl_pdata);

	mdss_dsi_ctrl_init(&ctrl_pdev->dev, ctrl_pdata);
	mdss_dsi_set_prim_panel(ctrl_pdata);

	ctrl_pdata->dsi_irq_line = of_property_read_bool(
				ctrl_pdev->dev.of_node, "qcom,dsi-irq-line");
+1 −1
Original line number Diff line number Diff line
@@ -751,7 +751,7 @@ static inline const char *mdss_dsi_get_fb_name(struct mdss_dsi_ctrl_pdata *ctrl)
	struct mdss_panel_info *pinfo = &(ctrl->panel_data.panel_info);

	if (mdss_dsi_is_hw_config_dual(ctrl->shared_data)) {
		if (pinfo->pdest == DISPLAY_1)
		if (pinfo->is_prim_panel)
			return "qcom,mdss-fb-map-prim";
		else
			return "qcom,mdss-fb-map-sec";