Merge "msm: dsi: Turn off supplies in low power state"
This commit is contained in:
commit
f19ae4651f
4 changed files with 34 additions and 8 deletions
|
@ -50,6 +50,8 @@ Optional properties:
|
|||
-- qcom,supply-post-on-sleep: time to sleep (ms) after turning on
|
||||
-- qcom,supply-pre-off-sleep: time to sleep (ms) before turning off
|
||||
-- qcom,supply-post-off-sleep: time to sleep (ms) after turning off
|
||||
-- qcom,supply-lp-mode-disable-allowed: supply can be turned off in
|
||||
low power state.
|
||||
- pll-src-config Specified the source PLL for the DSI
|
||||
link clocks:
|
||||
"PLL0" - Clocks sourced out of DSI PLL0
|
||||
|
|
|
@ -662,7 +662,11 @@ static int mdss_dsi_get_dt_vreg_data(struct device *dev,
|
|||
mp->vreg_config[i].post_off_sleep = tmp;
|
||||
}
|
||||
|
||||
pr_debug("%s: %s min=%d, max=%d, enable=%d, disable=%d, preonsleep=%d, postonsleep=%d, preoffsleep=%d, postoffsleep=%d\n",
|
||||
mp->vreg_config[i].lp_disable_allowed =
|
||||
of_property_read_bool(supply_node,
|
||||
"qcom,supply-lp-mode-disable-allowed");
|
||||
|
||||
pr_debug("%s: %s min=%d, max=%d, enable=%d, disable=%d, preonsleep=%d, postonsleep=%d, preoffsleep=%d, postoffsleep=%d lp_disable_allowed=%d\n",
|
||||
__func__,
|
||||
mp->vreg_config[i].vreg_name,
|
||||
mp->vreg_config[i].min_voltage,
|
||||
|
@ -672,8 +676,8 @@ static int mdss_dsi_get_dt_vreg_data(struct device *dev,
|
|||
mp->vreg_config[i].pre_on_sleep,
|
||||
mp->vreg_config[i].post_on_sleep,
|
||||
mp->vreg_config[i].pre_off_sleep,
|
||||
mp->vreg_config[i].post_off_sleep
|
||||
);
|
||||
mp->vreg_config[i].post_off_sleep,
|
||||
mp->vreg_config[i].lp_disable_allowed);
|
||||
++i;
|
||||
}
|
||||
|
||||
|
|
|
@ -2615,9 +2615,16 @@ int mdss_dsi_post_clkoff_cb(void *priv,
|
|||
pdata = &ctrl->panel_data;
|
||||
|
||||
for (i = DSI_MAX_PM - 1; i >= DSI_CORE_PM; i--) {
|
||||
if ((ctrl->ctrl_state & CTRL_STATE_DSI_ACTIVE) &&
|
||||
(i != DSI_CORE_PM))
|
||||
continue;
|
||||
/**
|
||||
* If DSI_CTRL is active, proceed to turn off
|
||||
* supplies which support turning off in low power
|
||||
* state
|
||||
*/
|
||||
if (ctrl->ctrl_state & CTRL_STATE_DSI_ACTIVE)
|
||||
if (!sdata->power_data[i].vreg_config
|
||||
->lp_disable_allowed)
|
||||
continue;
|
||||
|
||||
rc = msm_dss_enable_vreg(
|
||||
sdata->power_data[i].vreg_config,
|
||||
sdata->power_data[i].num_vreg, 0);
|
||||
|
@ -2627,6 +2634,12 @@ int mdss_dsi_post_clkoff_cb(void *priv,
|
|||
__mdss_dsi_pm_name(i));
|
||||
rc = 0;
|
||||
} else {
|
||||
pr_debug("%s: disabled vreg for %s panel_state %d\n",
|
||||
__func__,
|
||||
__mdss_dsi_pm_name(i),
|
||||
pdata->panel_info.panel_power_state);
|
||||
sdata->power_data[i].vreg_config->disabled =
|
||||
true;
|
||||
ctrl->core_power = false;
|
||||
}
|
||||
}
|
||||
|
@ -2666,7 +2679,7 @@ int mdss_dsi_pre_clkon_cb(void *priv,
|
|||
for (i = DSI_CORE_PM; i < DSI_MAX_PM; i++) {
|
||||
if ((ctrl->ctrl_state & CTRL_STATE_DSI_ACTIVE) &&
|
||||
(!pdata->panel_info.cont_splash_enabled) &&
|
||||
(i != DSI_CORE_PM))
|
||||
(!sdata->power_data[i].vreg_config->disabled))
|
||||
continue;
|
||||
rc = msm_dss_enable_vreg(
|
||||
sdata->power_data[i].vreg_config,
|
||||
|
@ -2676,6 +2689,11 @@ int mdss_dsi_pre_clkon_cb(void *priv,
|
|||
__func__,
|
||||
__mdss_dsi_pm_name(i));
|
||||
} else {
|
||||
pr_debug("%s: enabled vregs for %s\n",
|
||||
__func__,
|
||||
__mdss_dsi_pm_name(i));
|
||||
sdata->power_data[i].vreg_config->disabled =
|
||||
false;
|
||||
ctrl->core_power = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* Copyright (c) 2012, 2016, The Linux Foundation. All rights reserved.
|
||||
/* Copyright (c) 2012, 2016-2017, 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
|
||||
|
@ -58,6 +58,8 @@ struct dss_vreg {
|
|||
int post_on_sleep;
|
||||
int pre_off_sleep;
|
||||
int post_off_sleep;
|
||||
bool lp_disable_allowed;
|
||||
bool disabled;
|
||||
};
|
||||
|
||||
struct dss_gpio {
|
||||
|
|
Loading…
Add table
Reference in a new issue