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

Commit 2ac9699b authored by Siddharth Zaveri's avatar Siddharth Zaveri
Browse files

msm: mdss: Fix multiple bridge chip usecase



To allow multiple instances of ADV7533 bridge chips, we need to set
different instance ids for each bridge chip instead of hardcoding.
Also, intialise switch dev only if the panel is pluggable.

Change-Id: I1f4ae6a84c869da9ae551ed54dc3b4f22293c94a
Signed-off-by: default avatarSiddharth Zaveri <szaveri@codeaurora.org>
parent ac263d37
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
/* Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -652,13 +652,6 @@ void *mdss_dba_utils_init(struct mdss_dba_utils_init_data *uid)
	udata->kobj = uid->kobj;
	udata->pinfo = uid->pinfo;

	/* register display and audio switch devices */
	ret = mdss_dba_utils_init_switch_dev(udata, uid->fb_node);
	if (ret) {
		pr_err("switch dev registration failed\n");
		goto error;
	}

	/* Initialize EDID feature */
	edid_init_data.kobj = uid->kobj;
	edid_init_data.ds_data.ds_registered = true;
@@ -718,6 +711,14 @@ void *mdss_dba_utils_init(struct mdss_dba_utils_init_data *uid)
				udata->ops.power_on(udata->dba_data, true, 0);
			if (udata->ops.check_hpd)
				udata->ops.check_hpd(udata->dba_data, 0);
		} else {
			/* register display and audio switch devices */
			ret = mdss_dba_utils_init_switch_dev(udata,
				uid->fb_node);
			if (ret) {
				pr_err("switch dev registration failed\n");
				goto error;
			}
		}
	}

+1 −1
Original line number Diff line number Diff line
@@ -2265,7 +2265,7 @@ static void mdss_dsi_dba_work(struct work_struct *work)

	utils_init_data.chip_name = "adv7533";
	utils_init_data.client_name = "dsi";
	utils_init_data.instance_id = 0;
	utils_init_data.instance_id = pinfo->pdest;
	utils_init_data.fb_node = ctrl_pdata->fb_node;
	utils_init_data.kobj = ctrl_pdata->kobj;
	utils_init_data.pinfo = pinfo;
+1 −1
Original line number Diff line number Diff line
@@ -696,7 +696,7 @@ static int mdss_dsi_panel_on(struct mdss_panel_data *pdata)
	if (pinfo->compression_mode == COMPRESSION_DSC)
		mdss_dsi_panel_dsc_pps_send(ctrl, pinfo);

	if (ctrl->ds_registered && pinfo->is_pluggable)
	if (ctrl->ds_registered)
		mdss_dba_utils_video_on(pinfo->dba_data, pinfo);
end:
	pr_debug("%s:-\n", __func__);
+0 −2
Original line number Diff line number Diff line
@@ -1888,8 +1888,6 @@ static int adv7533_register_dba(struct adv7533 *pdata)
	strlcpy(pdata->dev_info.chip_name, "adv7533",
		sizeof(pdata->dev_info.chip_name));

	pdata->dev_info.instance_id = 0;

	mutex_init(&pdata->dev_info.dev_mutex);

	INIT_LIST_HEAD(&pdata->dev_info.client_list);