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-post-on-sleep: time to sleep (ms) after turning on
|
||||||
-- qcom,supply-pre-off-sleep: time to sleep (ms) before turning off
|
-- 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-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
|
- pll-src-config Specified the source PLL for the DSI
|
||||||
link clocks:
|
link clocks:
|
||||||
"PLL0" - Clocks sourced out of DSI PLL0
|
"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;
|
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__,
|
__func__,
|
||||||
mp->vreg_config[i].vreg_name,
|
mp->vreg_config[i].vreg_name,
|
||||||
mp->vreg_config[i].min_voltage,
|
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].pre_on_sleep,
|
||||||
mp->vreg_config[i].post_on_sleep,
|
mp->vreg_config[i].post_on_sleep,
|
||||||
mp->vreg_config[i].pre_off_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;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2615,9 +2615,16 @@ int mdss_dsi_post_clkoff_cb(void *priv,
|
||||||
pdata = &ctrl->panel_data;
|
pdata = &ctrl->panel_data;
|
||||||
|
|
||||||
for (i = DSI_MAX_PM - 1; i >= DSI_CORE_PM; i--) {
|
for (i = DSI_MAX_PM - 1; i >= DSI_CORE_PM; i--) {
|
||||||
if ((ctrl->ctrl_state & CTRL_STATE_DSI_ACTIVE) &&
|
/**
|
||||||
(i != DSI_CORE_PM))
|
* 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;
|
continue;
|
||||||
|
|
||||||
rc = msm_dss_enable_vreg(
|
rc = msm_dss_enable_vreg(
|
||||||
sdata->power_data[i].vreg_config,
|
sdata->power_data[i].vreg_config,
|
||||||
sdata->power_data[i].num_vreg, 0);
|
sdata->power_data[i].num_vreg, 0);
|
||||||
|
@ -2627,6 +2634,12 @@ int mdss_dsi_post_clkoff_cb(void *priv,
|
||||||
__mdss_dsi_pm_name(i));
|
__mdss_dsi_pm_name(i));
|
||||||
rc = 0;
|
rc = 0;
|
||||||
} else {
|
} 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;
|
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++) {
|
for (i = DSI_CORE_PM; i < DSI_MAX_PM; i++) {
|
||||||
if ((ctrl->ctrl_state & CTRL_STATE_DSI_ACTIVE) &&
|
if ((ctrl->ctrl_state & CTRL_STATE_DSI_ACTIVE) &&
|
||||||
(!pdata->panel_info.cont_splash_enabled) &&
|
(!pdata->panel_info.cont_splash_enabled) &&
|
||||||
(i != DSI_CORE_PM))
|
(!sdata->power_data[i].vreg_config->disabled))
|
||||||
continue;
|
continue;
|
||||||
rc = msm_dss_enable_vreg(
|
rc = msm_dss_enable_vreg(
|
||||||
sdata->power_data[i].vreg_config,
|
sdata->power_data[i].vreg_config,
|
||||||
|
@ -2676,6 +2689,11 @@ int mdss_dsi_pre_clkon_cb(void *priv,
|
||||||
__func__,
|
__func__,
|
||||||
__mdss_dsi_pm_name(i));
|
__mdss_dsi_pm_name(i));
|
||||||
} else {
|
} 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;
|
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
|
* 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
|
* 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 post_on_sleep;
|
||||||
int pre_off_sleep;
|
int pre_off_sleep;
|
||||||
int post_off_sleep;
|
int post_off_sleep;
|
||||||
|
bool lp_disable_allowed;
|
||||||
|
bool disabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct dss_gpio {
|
struct dss_gpio {
|
||||||
|
|
Loading…
Add table
Reference in a new issue