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

Commit 4fa67d87 authored by Padmanabhan Komanduru's avatar Padmanabhan Komanduru
Browse files

msm: mdss: fix the sequence for pinctrl_set_state and panel reset



Pinctrl needs to be set to active state before we do the panel
reset during panel ON sequence. Similarly, it needs to be set to
suspend state after the GPIO IN_OUT registers are set to zero.
This change takes care of fixing this sequence.

Change-Id: I666068f88d4489acb0da261efb01e26929e42483
Signed-off-by: default avatarPadmanabhan Komanduru <pkomandu@codeaurora.org>
parent 77ea4f2d
Loading
Loading
Loading
Loading
+13 −5
Original line number Diff line number Diff line
@@ -27,6 +27,9 @@
#include "mdss_dsi.h"
#include "mdss_debug.h"

static int mdss_dsi_pinctrl_set_state(struct mdss_dsi_ctrl_pdata *ctrl_pdata,
					bool active);

static int mdss_dsi_regulator_init(struct platform_device *pdev)
{
	struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL;
@@ -73,6 +76,9 @@ static int mdss_dsi_panel_power_on(struct mdss_panel_data *pdata, int enable)
		}

		if (!pdata->panel_info.mipi.lp11_init) {
			if (mdss_dsi_pinctrl_set_state(ctrl_pdata, true))
				pr_debug("reset enable: pinctrl not enabled\n");

			ret = mdss_dsi_panel_reset(pdata, 1);
			if (ret) {
				pr_err("%s: Panel reset failed. rc=%d\n",
@@ -91,6 +97,9 @@ static int mdss_dsi_panel_power_on(struct mdss_panel_data *pdata, int enable)
					__func__, ret);
			goto error;
		}
		if (mdss_dsi_pinctrl_set_state(ctrl_pdata, false))
			pr_debug("reset disable: pinctrl not enabled\n");

		ret = msm_dss_enable_vreg(
			ctrl_pdata->power_data.vreg_config,
			ctrl_pdata->power_data.num_vreg, 0);
@@ -684,8 +693,11 @@ int mdss_dsi_on(struct mdss_panel_data *pdata)
	 * Issue hardware reset line after enabling the DSI clocks and data
	 * data lanes for LP11 init
	 */
	if (mipi->lp11_init)
	if (mipi->lp11_init) {
		if (mdss_dsi_pinctrl_set_state(ctrl_pdata, true))
			pr_debug("reset enable: pinctrl not enabled\n");
		mdss_dsi_panel_reset(pdata, 1);
	}

	if (mipi->init_delay)
		usleep(mipi->init_delay);
@@ -775,8 +787,6 @@ static int mdss_dsi_unblank(struct mdss_panel_data *pdata)
	ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata,
				panel_data);
	mipi  = &pdata->panel_info.mipi;
	if (mdss_dsi_pinctrl_set_state(ctrl_pdata, true))
		pr_debug("dsi unblank: pinctrl not enabled\n");

	if (!(ctrl_pdata->ctrl_state & CTRL_STATE_PANEL_INIT)) {
		ret = ctrl_pdata->on(pdata);
@@ -851,8 +861,6 @@ static int mdss_dsi_blank(struct mdss_panel_data *pdata)
		}
		ctrl_pdata->ctrl_state &= ~CTRL_STATE_PANEL_INIT;
	}
	if (mdss_dsi_pinctrl_set_state(ctrl_pdata, false))
		pr_debug("dsi blank: pinctrl not enabled\n");

	pr_debug("%s-:End\n", __func__);
	return ret;