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

Commit 929a747d authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: mdss: Disable idle pc during unblank"

parents 65bd9934 91a9bdee
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <linux/clk.h>
#include <linux/uaccess.h>
#include <linux/msm-bus.h>
#include <linux/pm_qos.h>

#include "mdss.h"
#include "mdss_panel.h"
@@ -38,6 +39,30 @@
/* Master structure to hold all the information about the DSI/panel */
static struct mdss_dsi_data *mdss_dsi_res;

#define DSI_DISABLE_PC_LATENCY 100
#define DSI_ENABLE_PC_LATENCY PM_QOS_DEFAULT_VALUE

static struct pm_qos_request mdss_dsi_pm_qos_request;

static void mdss_dsi_pm_qos_add_request(void)
{
	pr_debug("%s: add request", __func__);
	pm_qos_add_request(&mdss_dsi_pm_qos_request, PM_QOS_CPU_DMA_LATENCY,
			PM_QOS_DEFAULT_VALUE);
}

static void mdss_dsi_pm_qos_remove_request(void)
{
	pr_debug("%s: remove request", __func__);
	pm_qos_remove_request(&mdss_dsi_pm_qos_request);
}

static void mdss_dsi_pm_qos_update_request(int val)
{
	pr_debug("%s: update request %d", __func__, val);
	pm_qos_update_request(&mdss_dsi_pm_qos_request, val);
}

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

@@ -1412,6 +1437,8 @@ static int mdss_dsi_unblank(struct mdss_panel_data *pdata)
			__func__, ctrl_pdata, ctrl_pdata->ndx,
		pdata->panel_info.panel_power_state, ctrl_pdata->ctrl_state);

	mdss_dsi_pm_qos_update_request(DSI_DISABLE_PC_LATENCY);

	if (mdss_dsi_is_ctrl_clk_master(ctrl_pdata))
		sctrl = mdss_dsi_get_ctrl_clk_slave();

@@ -1453,6 +1480,9 @@ error:
	if (sctrl)
		mdss_dsi_clk_ctrl(sctrl, sctrl->dsi_clk_handle,
				  MDSS_DSI_ALL_CLKS, MDSS_DSI_CLK_OFF);

	mdss_dsi_pm_qos_update_request(DSI_ENABLE_PC_LATENCY);

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

	return ret;
@@ -2884,6 +2914,8 @@ static int mdss_dsi_ctrl_probe(struct platform_device *pdev)
	else
		ctrl_pdata->shared_data->dsi1_active = true;

	mdss_dsi_pm_qos_add_request();

	return 0;

error_shadow_clk_deinit:
@@ -3340,6 +3372,8 @@ static int mdss_dsi_ctrl_remove(struct platform_device *pdev)
		return -ENODEV;
	}

	mdss_dsi_pm_qos_remove_request();

	if (msm_dss_config_vreg(&pdev->dev,
			ctrl_pdata->panel_power_data.vreg_config,
			ctrl_pdata->panel_power_data.num_vreg, 1) < 0)