diff --git a/drivers/power/supply/qcom/qpnp-smb5.c b/drivers/power/supply/qcom/qpnp-smb5.c index 321956716355..8a25745698a3 100644 --- a/drivers/power/supply/qcom/qpnp-smb5.c +++ b/drivers/power/supply/qcom/qpnp-smb5.c @@ -218,7 +218,6 @@ struct smb_dt_props { int term_current_src; int term_current_thresh_hi_ma; int term_current_thresh_lo_ma; - int disable_suspend_on_collapse; }; struct smb5 { @@ -556,7 +555,7 @@ static int smb5_parse_dt_misc(struct smb5 *chip, struct device_node *node) of_property_read_u32(node, "qcom,connector-internal-pull-kohm", &chg->connector_pull_up); - chip->dt.disable_suspend_on_collapse = of_property_read_bool(node, + chg->disable_suspend_on_collapse = of_property_read_bool(node, "qcom,disable-suspend-on-collapse"); chg->smb_pull_up = -EINVAL; of_property_read_u32(node, "qcom,smb-internal-pull-kohm", @@ -2148,7 +2147,7 @@ static int smb5_init_hw(struct smb5 *chip) mask = USBIN_AICL_PERIODIC_RERUN_EN_BIT | USBIN_AICL_ADC_EN_BIT | USBIN_AICL_EN_BIT | SUSPEND_ON_COLLAPSE_USBIN_BIT; val = USBIN_AICL_PERIODIC_RERUN_EN_BIT | USBIN_AICL_EN_BIT; - if (!chip->dt.disable_suspend_on_collapse) + if (!chg->disable_suspend_on_collapse) val |= SUSPEND_ON_COLLAPSE_USBIN_BIT; if (chip->dt.adc_based_aicl) val |= USBIN_AICL_ADC_EN_BIT; diff --git a/drivers/power/supply/qcom/smb5-lib.c b/drivers/power/supply/qcom/smb5-lib.c index 461fdf2d061a..ce4ba0aaffab 100644 --- a/drivers/power/supply/qcom/smb5-lib.c +++ b/drivers/power/supply/qcom/smb5-lib.c @@ -1354,12 +1354,15 @@ static void smblib_uusb_removal(struct smb_charger *chg) smblib_err(chg, "Couldn't restore max pulses rc=%d\n", rc); - rc = smblib_masked_write(chg, USBIN_AICL_OPTIONS_CFG_REG, - SUSPEND_ON_COLLAPSE_USBIN_BIT, - SUSPEND_ON_COLLAPSE_USBIN_BIT); - if (rc < 0) - smblib_err(chg, "Couldn't turn on SUSPEND_ON_COLLAPSE_USBIN_BIT rc=%d\n", + if (!chg->disable_suspend_on_collapse) { + rc = smblib_masked_write(chg, USBIN_AICL_OPTIONS_CFG_REG, + SUSPEND_ON_COLLAPSE_USBIN_BIT, + SUSPEND_ON_COLLAPSE_USBIN_BIT); + if (rc < 0) + smblib_err(chg, + "Couldn't turn on SUSPEND_ON_COLLAPSE_USBIN_BIT rc=%d\n", rc); + } chg->qc2_unsupported_voltage = QC2_COMPLIANT; } @@ -6458,12 +6461,15 @@ static void typec_src_removal(struct smb_charger *chg) smblib_err(chg, "Couldn't restore max pulses rc=%d\n", rc); - rc = smblib_masked_write(chg, USBIN_AICL_OPTIONS_CFG_REG, - SUSPEND_ON_COLLAPSE_USBIN_BIT, - SUSPEND_ON_COLLAPSE_USBIN_BIT); - if (rc < 0) - smblib_err(chg, "Couldn't turn on SUSPEND_ON_COLLAPSE_USBIN_BIT rc=%d\n", + if (!chg->disable_suspend_on_collapse) { + rc = smblib_masked_write(chg, USBIN_AICL_OPTIONS_CFG_REG, + SUSPEND_ON_COLLAPSE_USBIN_BIT, + SUSPEND_ON_COLLAPSE_USBIN_BIT); + if (rc < 0) + smblib_err(chg, + "Couldn't turn on SUSPEND_ON_COLLAPSE_USBIN_BIT rc=%d\n", rc); + } chg->qc2_unsupported_voltage = QC2_COMPLIANT; } diff --git a/drivers/power/supply/qcom/smb5-lib.h b/drivers/power/supply/qcom/smb5-lib.h index bb8f34401a92..f3c38894650a 100644 --- a/drivers/power/supply/qcom/smb5-lib.h +++ b/drivers/power/supply/qcom/smb5-lib.h @@ -594,6 +594,7 @@ struct smb_charger { bool apsd_ext_timeout; bool qc3p5_detected; int qc3p5_detected_mw; + bool disable_suspend_on_collapse; /* workaround flag */ int real_charger_type;