dsi_pwr: Keep one regulator always on

Some panels must let ldo always on.
We must add "qcom,supply-always-on" in "qcom,panel-supply-entry".

Change-Id: I81669aa225df0abde26e407c391c56412ee7a109
Signed-off-by: houdz1 <houdz1@motorola.com>
Reviewed-on: https://gerrit.mot.com/1822732
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Reviewed-by: Yeqing Wang <wangyq13@motorola.com>
Reviewed-by: Huosheng Liao <liaohs@motorola.com>
Reviewed-by: Shanshan Dai <daiss1@motorola.com>
Tested-by: Jira Key
Submit-Approved: Jira Key
This commit is contained in:
houdz1 2020-12-09 10:54:22 +08:00 • committed by tongkun1
commit 02cf7cde50
2 changed files with 16 additions and 0 deletions

View file

@ -22,6 +22,7 @@ static int dsi_pwr_parse_supply_node(struct dsi_parser_utils *utils,
int i = 0;
u32 tmp = 0;
struct device_node *node = NULL;
bool is_always_on = FALSE;
dsi_for_each_child_node(root, node) {
const char *st = NULL;
@ -112,6 +113,14 @@ static int dsi_pwr_parse_supply_node(struct dsi_parser_utils *utils,
regs->vregs[i].post_off_sleep = tmp;
}
is_always_on = utils->read_bool(node, "qcom,supply-always-on");
if (!is_always_on) {
DSI_DEBUG("qcom,supply-always-on not specified\n");
} else {
regs->vregs[i].is_always_on = is_always_on;
DSI_INFO("%s: always-on is specified\n", regs->vregs[i].vreg_name);
}
DSI_DEBUG("[%s] minv=%d maxv=%d, en_load=%d, dis_load=%d\n",
regs->vregs[i].vreg_name,
regs->vregs[i].min_voltage,
@ -206,6 +215,12 @@ static int dsi_pwr_enable_vregs(struct dsi_regulator_info *regs, bool enable)
pre_off_ms = vreg->pre_off_sleep;
post_off_ms = vreg->post_off_sleep;
if (vreg->is_always_on)
{
DSI_INFO("%s is always on\n", vreg->vreg_name);
continue;
}
if (pre_off_ms)
usleep_range((pre_off_ms * 1000),
(pre_off_ms * 1000) + 10);

View file

@ -41,6 +41,7 @@ struct dsi_vreg {
u32 post_on_sleep;
u32 pre_off_sleep;
u32 post_off_sleep;
bool is_always_on;
};
/**