Merge "ARM: dts: msm: Add PBS trigger support for OLEDB for PM660A"
This commit is contained in:
commit
5342b7ef09
4 changed files with 26 additions and 19 deletions
|
@ -62,13 +62,6 @@ Required Node Structure
|
|||
rail. This property is applicable only if qcom,ext-pin-ctl
|
||||
property is specified and it is specific to PM660A.
|
||||
|
||||
- qcom,force-pd-control
|
||||
Usage: optional
|
||||
Value type: <bool>
|
||||
Definition: Used to enable the pull down control forcibly via SPMI by
|
||||
disabling the pull down configuration done by hardware
|
||||
automatically through SWIRE pulses.
|
||||
|
||||
- qcom,pbs-client
|
||||
Usage: optional
|
||||
Value type: <phandle>
|
||||
|
|
|
@ -417,6 +417,7 @@
|
|||
#size-cells = <1>;
|
||||
qcom,pmic-revid = <&pm660l_revid>;
|
||||
reg = <0xe000 0x100>;
|
||||
qcom,pbs-client = <&pm660l_pbs>;
|
||||
|
||||
label = "oledb";
|
||||
regulator-name = "regulator-oledb";
|
||||
|
@ -464,6 +465,8 @@
|
|||
qcom,qpnp-lab-slew-rate = <5000>;
|
||||
qcom,qpnp-lab-init-voltage = <4600000>;
|
||||
qcom,qpnp-lab-init-amoled-voltage = <4600000>;
|
||||
|
||||
qcom,notify-lab-vreg-ok-sts;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -377,12 +377,19 @@ static int qpnp_oledb_regulator_disable(struct regulator_dev *rdev)
|
|||
}
|
||||
|
||||
if (val & OLEDB_FORCE_PD_CTL_SPARE_BIT) {
|
||||
rc = qpnp_pbs_trigger_event(oledb->pbs_dev_node,
|
||||
trigger_bitmap);
|
||||
rc = qpnp_oledb_sec_masked_write(oledb, oledb->base +
|
||||
OLEDB_SPARE_CTL,
|
||||
OLEDB_FORCE_PD_CTL_SPARE_BIT, 0);
|
||||
if (rc < 0) {
|
||||
pr_err("Failed to trigger the PBS sequence\n");
|
||||
pr_err("Failed to write SPARE_CTL rc=%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = qpnp_pbs_trigger_event(oledb->pbs_dev_node,
|
||||
trigger_bitmap);
|
||||
if (rc < 0)
|
||||
pr_err("Failed to trigger the PBS sequence\n");
|
||||
|
||||
pr_debug("PBS event triggered\n");
|
||||
} else {
|
||||
pr_debug("OLEDB_SPARE_CTL register bit not set\n");
|
||||
|
@ -1123,8 +1130,14 @@ static int qpnp_oledb_parse_dt(struct qpnp_oledb *oledb)
|
|||
oledb->pbs_control =
|
||||
of_property_read_bool(of_node, "qcom,pbs-control");
|
||||
|
||||
oledb->force_pd_control =
|
||||
of_property_read_bool(of_node, "qcom,force-pd-control");
|
||||
/* Use the force_pd_control only for PM660A versions <= v2.0 */
|
||||
if (oledb->pmic_rev_id->pmic_subtype == PM660L_SUBTYPE &&
|
||||
oledb->pmic_rev_id->rev4 <= PM660L_V2P0_REV4) {
|
||||
if (!(oledb->pmic_rev_id->rev4 == PM660L_V2P0_REV4 &&
|
||||
oledb->pmic_rev_id->rev2 > PM660L_V2P0_REV2)) {
|
||||
oledb->force_pd_control = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (oledb->force_pd_control) {
|
||||
oledb->pbs_dev_node = of_parse_phandle(of_node,
|
||||
|
@ -1222,13 +1235,6 @@ static int qpnp_oledb_force_pulldown_config(struct qpnp_oledb *oledb)
|
|||
int rc = 0;
|
||||
u8 val;
|
||||
|
||||
rc = qpnp_oledb_sec_masked_write(oledb, oledb->base +
|
||||
OLEDB_SPARE_CTL, OLEDB_FORCE_PD_CTL_SPARE_BIT, 0);
|
||||
if (rc < 0) {
|
||||
pr_err("Failed to write SPARE_CTL rc=%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
val = 1;
|
||||
rc = qpnp_oledb_write(oledb, oledb->base + OLEDB_PD_CTL,
|
||||
&val, 1);
|
||||
|
|
|
@ -214,6 +214,11 @@
|
|||
#define PM660L_V1P1_REV3 0x01
|
||||
#define PM660L_V1P1_REV4 0x01
|
||||
|
||||
#define PM660L_V2P0_REV1 0x00
|
||||
#define PM660L_V2P0_REV2 0x00
|
||||
#define PM660L_V2P0_REV3 0x00
|
||||
#define PM660L_V2P0_REV4 0x02
|
||||
|
||||
/* PMI8998 FAB_ID */
|
||||
#define PMI8998_FAB_ID_SMIC 0x11
|
||||
#define PMI8998_FAB_ID_GF 0x30
|
||||
|
|
Loading…
Add table
Reference in a new issue