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

Commit 2af0da17 authored by Dhaval Patel's avatar Dhaval Patel
Browse files

mdss: share fb device's primary vs secondary selection info



FrameBuffer device clients assume that first FB device (fb0)
is primary and rest are secondary/external. This binds the
fb devices to fix probe order. For Example: Assumption breaks
when DSI probes first but selected as secondary interface and
HDMI probes later but selected as primary interface. Ideally,
MDSS driver should share each device's primary vs secondary
interface selection with client. This change fixes it.

Change-Id: I17ae8fef9604edf60ddbe22f8413d6764a5a1be4
Signed-off-by: default avatarDhaval Patel <pdhaval@codeaurora.org>
parent 2d3171d7
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -442,6 +442,7 @@ 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;
+1 −0
Original line number Diff line number Diff line
@@ -1121,6 +1121,7 @@ static int mdss_edp_probe(struct platform_device *pdev)
		pr_err("Failed to get mdss utility functions\n");
		return -ENODEV;
	}
	edp_drv->panel_data.panel_info.is_prim_panel = true;

	mdss_edp_hw.irq_info = mdss_intr_line();
	if (mdss_edp_hw.irq_info == NULL) {
+3 −2
Original line number Diff line number Diff line
@@ -483,13 +483,14 @@ static ssize_t mdss_fb_get_panel_info(struct device *dev,
	ret = scnprintf(buf, PAGE_SIZE,
			"pu_en=%d\nxstart=%d\nwalign=%d\nystart=%d\nhalign=%d\n"
			"min_w=%d\nmin_h=%d\nroi_merge=%d\ndyn_fps_en=%d\n"
			"min_fps=%d\nmax_fps=%d\npanel_name=%s\n",
			"min_fps=%d\nmax_fps=%d\npanel_name=%s\n"
			"primary_panel=%d\n",
			pinfo->partial_update_enabled, pinfo->xstart_pix_align,
			pinfo->width_pix_align, pinfo->ystart_pix_align,
			pinfo->height_pix_align, pinfo->min_width,
			pinfo->min_height, pinfo->partial_update_roi_merge,
			pinfo->dynamic_fps, pinfo->min_fps, pinfo->max_fps,
			pinfo->panel_name);
			pinfo->panel_name, pinfo->is_prim_panel);

	return ret;
}
+1 −0
Original line number Diff line number Diff line
@@ -4164,6 +4164,7 @@ static int hdmi_tx_probe(struct platform_device *pdev)
			vic = DEFAULT_HDMI_PRIMARY_RESOLUTION;

		hdmi_ctrl->pdata.primary = true;
		hdmi_ctrl->panel_data.panel_info.is_prim_panel = true;
		hdmi_ctrl->video_resolution = vic;
	}

+2 −0
Original line number Diff line number Diff line
@@ -396,6 +396,8 @@ struct mdss_panel_info {
	bool is_lpm_mode;
	bool is_split_display;

	bool is_prim_panel;

	char panel_name[MDSS_MAX_PANEL_LEN];
	struct mdss_mdp_pp_tear_check te;