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

Commit 6fc16dff authored by Padmanabhan Komanduru's avatar Padmanabhan Komanduru
Browse files

msm: mdss: Add support for sending panel off commands in LP mode



Add support to send panel Off commands for video mode during LP
mode. This is needed to support few video mode panels which have
BLLP power mode set to HS and it is not possible to send Off
commands when pixel data is active. Hence, make changes to send
panel Off commands for such panels in LP mode after TG is
turned off.

Change-Id: I1c9f3fd1e9e052b5254cfdcf58cd974dfbe3dc8e
Signed-off-by: default avatarPadmanabhan Komanduru <pkomandu@codeaurora.org>
parent 1ab4f819
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
@@ -763,6 +763,12 @@ static int mdss_dsi_blank(struct mdss_panel_data *pdata)
		}
	}

	if (pdata->panel_info.type == MIPI_VIDEO_PANEL &&
			ctrl_pdata->off_cmds.link_state == DSI_LP_MODE) {
		mdss_dsi_sw_reset(pdata);
		mdss_dsi_host_init(pdata);
	}

	mdss_dsi_op_mode_config(DSI_CMD_MODE, pdata);

	if (pdata->panel_info.type == MIPI_CMD_PANEL) {
@@ -814,15 +820,6 @@ int mdss_dsi_cont_splash_on(struct mdss_panel_data *pdata)
	mdss_dsi_sw_reset(pdata);
	mdss_dsi_host_init(pdata);
	mdss_dsi_op_mode_config(mipi->mode, pdata);

	if (ctrl_pdata->on_cmds.link_state == DSI_LP_MODE) {
		ret = mdss_dsi_unblank(pdata);
		if (ret) {
			pr_err("%s: unblank failed\n", __func__);
			return ret;
		}
	}

	pr_debug("%s-:End\n", __func__);
	return ret;
}
@@ -986,15 +983,10 @@ static int mdss_dsi_event_handler(struct mdss_panel_data *pdata,
		rc = mdss_dsi_off(pdata);
		break;
	case MDSS_EVENT_CONT_SPLASH_FINISH:
		if (ctrl_pdata->off_cmds.link_state == DSI_LP_MODE)
			rc = mdss_dsi_blank(pdata);
		ctrl_pdata->ctrl_state &= ~CTRL_STATE_MDP_ACTIVE;
		if (ctrl_pdata->on_cmds.link_state == DSI_LP_MODE) {
		rc = mdss_dsi_cont_splash_on(pdata);
		} else {
			pr_debug("%s:event=%d, Dsi On not called: ctrl_state: %d\n",
				 __func__, event,
				 ctrl_pdata->on_cmds.link_state);
			rc = -EINVAL;
		}
		break;
	case MDSS_EVENT_PANEL_CLK_CTRL:
		mdss_dsi_clk_req(ctrl_pdata, (int) (unsigned long) arg);
+1 −1
Original line number Diff line number Diff line
@@ -337,7 +337,7 @@ struct mdss_dsi_ctrl_pdata *mdss_dsi_ctrl_slave(
irqreturn_t mdss_dsi_isr(int irq, void *ptr);
void mdss_dsi_irq_handler_config(struct mdss_dsi_ctrl_pdata *ctrl_pdata);

void mipi_set_tx_power_mode(int mode, struct mdss_panel_data *pdata);
void mdss_dsi_set_tx_power_mode(int mode, struct mdss_panel_data *pdata);
int mdss_dsi_clk_div_config(struct mdss_panel_info *panel_info,
			    int frame_rate);
int mdss_dsi_clk_init(struct platform_device *pdev,
+1 −1
Original line number Diff line number Diff line
@@ -392,7 +392,7 @@ void mdss_dsi_host_init(struct mdss_panel_data *pdata)
	wmb();
}

void mdss_set_tx_power_mode(int mode, struct mdss_panel_data *pdata)
void mdss_dsi_set_tx_power_mode(int mode, struct mdss_panel_data *pdata)
{
	struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL;
	u32 data;