diff --git a/drivers/power/supply/qcom/qg-core.h b/drivers/power/supply/qcom/qg-core.h index 2796e16c2a11..28bf72d26c27 100644 --- a/drivers/power/supply/qcom/qg-core.h +++ b/drivers/power/supply/qcom/qg-core.h @@ -21,6 +21,7 @@ struct qg_batt_props { int vbatt_full_mv; int fastchg_curr_ma; int qg_profile_version; + u32 sdam_magic_number; }; struct qg_irq_info { diff --git a/drivers/power/supply/qcom/qpnp-qg.c b/drivers/power/supply/qcom/qpnp-qg.c index 4c8839273140..5f9983845054 100644 --- a/drivers/power/supply/qcom/qpnp-qg.c +++ b/drivers/power/supply/qcom/qpnp-qg.c @@ -3037,6 +3037,7 @@ static int get_batt_id_ohm(struct qpnp_qg *chip, u32 *batt_id_ohm) return 0; } +#define SDAM_MAGIC_NUMBER 0x12345678 static int qg_load_battery_profile(struct qpnp_qg *chip) { struct device_node *node = chip->dev->of_node; @@ -3106,6 +3107,13 @@ static int qg_load_battery_profile(struct qpnp_qg *chip) chip->bp.fastchg_curr_ma = -EINVAL; } + rc = of_property_read_u32(profile_node, "qcom,sdam-magic-number", + &chip->bp.sdam_magic_number); + if (rc < 0) { + pr_err("Failed to read sdam magic number rc:%d\n", rc); + chip->bp.sdam_magic_number = SDAM_MAGIC_NUMBER; + } + /* * Update the max fcc values based on QG subtype including * error margins. @@ -3458,7 +3466,6 @@ static int qg_set_wa_flags(struct qpnp_qg *chip) return 0; } -#define SDAM_MAGIC_NUMBER 0x12345678 static int qg_sanitize_sdam(struct qpnp_qg *chip) { int rc = 0; @@ -3470,10 +3477,10 @@ static int qg_sanitize_sdam(struct qpnp_qg *chip) return rc; } - if (data == SDAM_MAGIC_NUMBER) { + if (data == chip->bp.sdam_magic_number) { qg_dbg(chip, QG_DEBUG_PON, "SDAM valid\n"); } else if (data == 0) { - rc = qg_sdam_write(SDAM_MAGIC, SDAM_MAGIC_NUMBER); + rc = qg_sdam_write(SDAM_MAGIC, chip->bp.sdam_magic_number); if (!rc) qg_dbg(chip, QG_DEBUG_PON, "First boot. SDAM initilized\n"); chip->first_profile_load = true; @@ -3482,7 +3489,7 @@ static int qg_sanitize_sdam(struct qpnp_qg *chip) rc = qg_sdam_clear(); if (!rc) { pr_err("SDAM uninitialized, SDAM reset\n"); - rc = qg_sdam_write(SDAM_MAGIC, SDAM_MAGIC_NUMBER); + rc = qg_sdam_write(SDAM_MAGIC, chip->bp.sdam_magic_number); } chip->first_profile_load = true; }