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

Commit 84fab0d2 authored by Sachin Bhayare's avatar Sachin Bhayare
Browse files

msm: mdss: use platform-enable-gpio on msm8909w BG



Use platform-enable-gpio to control buffer connected
on panel reset gpio.
This helps in avoiding panel reset during TWM entry.

Change-Id: I6a0706c593202ab62acf332690d3255acbfd49f8
Signed-off-by: default avatarSachin Bhayare <sachin.bhayare@codeaurora.org>
parent 3d800556
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -1122,12 +1122,27 @@ static int mdp3_ctrl_off(struct msm_fb_data_type *mfd)
	}

	if (panel->event_handler) {
		if (mdp3_is_twm_en())
			pr_info("TWM Enabled skip MDSS_EVENT_PANEL_OFF\n");
		else
		if (mdp3_is_twm_en()) {
			pr_info("TWM active skip panel off, disable disp_en\n");
			if (gpio_is_valid(panel->panel_en_gpio)) {
				rc = gpio_direction_output(
					panel->panel_en_gpio, 1);
				if (rc) {
					pr_err("%s:set dir for gpio(%d) FAIL\n",
						__func__, panel->panel_en_gpio);
				} else {
					gpio_set_value((panel->panel_en_gpio),
							0);
					usleep_range(100, 110);
					pr_debug("%s:set disp_en_gpio_%d Low\n",
						__func__, panel->panel_en_gpio);
				}
			}
		} else {
			rc = panel->event_handler(panel, MDSS_EVENT_PANEL_OFF,
				(void *) (long int)mfd->panel_power_state);
		}
	}
	if (rc)
		pr_err("EVENT_PANEL_OFF error (%d)\n", rc);

+1 −1
Original line number Diff line number Diff line
@@ -315,7 +315,6 @@ static int mdss_dsi_panel_power_on(struct mdss_panel_data *pdata)
		pr_err("%s: Invalid input data\n", __func__);
		return -EINVAL;
	}

	ctrl_pdata = container_of(pdata, struct mdss_dsi_ctrl_pdata,
				panel_data);

@@ -4098,6 +4097,7 @@ static int mdss_dsi_parse_gpio_params(struct platform_device *ctrl_pdev,
		if (!gpio_is_valid(ctrl_pdata->disp_en_gpio))
			pr_debug("%s:%d, Disp_en gpio not specified\n",
					__func__, __LINE__);
		pdata->panel_en_gpio = ctrl_pdata->disp_en_gpio;
	}

	ctrl_pdata->disp_te_gpio = of_get_named_gpio(ctrl_pdev->dev.of_node,
+5 −1
Original line number Diff line number Diff line
/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2018, 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
@@ -308,6 +308,7 @@ static int mdss_dsi_request_gpios(struct mdss_dsi_ctrl_pdata *ctrl_pdata)
			rc);
		goto rst_gpio_err;
	}

	if (gpio_is_valid(ctrl_pdata->bklt_en_gpio)) {
		rc = gpio_request(ctrl_pdata->bklt_en_gpio,
						"bklt_enable");
@@ -420,6 +421,8 @@ int mdss_dsi_panel_reset(struct mdss_panel_data *pdata, int enable)
						__func__);
					goto exit;
				}
				gpio_set_value((ctrl_pdata->disp_en_gpio), 1);
				usleep_range(100, 110);
			}

			if (pdata->panel_info.rst_seq_len) {
@@ -478,6 +481,7 @@ int mdss_dsi_panel_reset(struct mdss_panel_data *pdata, int enable)
		}
		if (gpio_is_valid(ctrl_pdata->disp_en_gpio)) {
			gpio_set_value((ctrl_pdata->disp_en_gpio), 0);
			usleep_range(100, 110);
			gpio_free(ctrl_pdata->disp_en_gpio);
		}
		gpio_set_value((ctrl_pdata->rst_gpio), 0);
+1 −0
Original line number Diff line number Diff line
@@ -834,6 +834,7 @@ struct mdss_panel_data {
	struct mdss_panel_data *next;

	int panel_te_gpio;
	int panel_en_gpio;
	struct completion te_done;
};