regulator: qpnp-labibb-regulator: Program LAB_PRECHARGE_CTL unconditionally

Currently, LAB_PRECHARGE_CTL register is programmed if LAB is not
ready to be enabled by IBB. LAB_PRECHARGE_CTL needs to be configured
by the LAB/IBB driver irrespective of its previous setting.

CRs-Fixed: 877370
Change-Id: Idb473ba0b063f010e89b669b79f79349ebfd0d59
Signed-off-by: Ravindranath Thiyagarajan <rthiyaga@codeaurora.org>
This commit is contained in:
Ravindranath Thiyagarajan 2015-07-27 12:46:53 +05:30 committed by Gerrit - the friendly Code Review server
parent 2013c04c33
commit f343400c2b
1 changed files with 30 additions and 29 deletions

View File

@ -687,35 +687,6 @@ static int qpnp_lab_dt_init(struct qpnp_labibb *labibb,
return rc;
}
rc = of_property_read_u32(of_node, "qcom,qpnp-lab-max-precharge-time",
&tmp);
if (rc) {
pr_err("get qcom,qpnp-lab-max-precharge-time failed, rc = %d\n",
rc);
return rc;
}
for (val = 0; val < ARRAY_SIZE(lab_max_precharge_plan); val++)
if (lab_max_precharge_plan[val] == tmp)
break;
if (val == ARRAY_SIZE(lab_max_precharge_plan)) {
pr_err("Invalid property in qcom,qpnp-lab-max-precharge-time\n");
return -EINVAL;
}
if (of_property_read_bool(of_node,
"qcom,qpnp-lab-max-precharge-enable"))
val |= LAB_PRECHARGE_CTL_EN;
rc = qpnp_labibb_write(labibb, labibb->lab_base +
REG_LAB_PRECHARGE_CTL, &val, 1);
if (rc) {
pr_err("qpnp_lab_dt_init write register %x failed rc = %d\n",
REG_LAB_PRECHARGE_CTL, rc);
return rc;
}
rc = of_property_read_u32(of_node, "qcom,qpnp-lab-init-voltage",
&(labibb->lab_vreg.curr_volt));
if (rc) {
@ -1033,6 +1004,7 @@ static int register_qpnp_lab_regulator(struct qpnp_labibb *labibb,
struct regulator_desc *rdesc;
struct regulator_config cfg = {};
u8 ibb_en_rdy_val, val;
u32 tmp;
if (!of_node) {
dev_err(labibb->dev, "qpnp lab regulator device tree node is missing\n");
@ -1102,6 +1074,35 @@ static int register_qpnp_lab_regulator(struct qpnp_labibb *labibb,
return rc;
}
rc = of_property_read_u32(of_node, "qcom,qpnp-lab-max-precharge-time",
&tmp);
if (rc) {
pr_err("get qcom,qpnp-lab-max-precharge-time failed, rc = %d\n",
rc);
return rc;
}
for (val = 0; val < ARRAY_SIZE(lab_max_precharge_plan); val++)
if (lab_max_precharge_plan[val] == tmp)
break;
if (val == ARRAY_SIZE(lab_max_precharge_plan)) {
pr_err("Invalid property in qcom,qpnp-lab-max-precharge-time\n");
return -EINVAL;
}
if (of_property_read_bool(of_node,
"qcom,qpnp-lab-max-precharge-enable"))
val |= LAB_PRECHARGE_CTL_EN;
rc = qpnp_labibb_write(labibb, labibb->lab_base +
REG_LAB_PRECHARGE_CTL, &val, 1);
if (rc) {
pr_err("qpnp_lab_dt_init write register %x failed rc = %d\n",
REG_LAB_PRECHARGE_CTL, rc);
return rc;
}
if (ibb_en_rdy_val == LAB_IBB_EN_RDY_EN) {
rc = qpnp_labibb_read(labibb, &val,
labibb->lab_base + REG_LAB_LCD_AMOLED_SEL, 1);