summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/power/qcom-charger/smb-lib.h1
-rw-r--r--drivers/power/qcom-charger/smb-reg.h2
-rw-r--r--drivers/power/qcom-charger/smb138x-charger.c11
3 files changed, 14 insertions, 0 deletions
diff --git a/drivers/power/qcom-charger/smb-lib.h b/drivers/power/qcom-charger/smb-lib.h
index f167a9881ecc..b6913fa12f1a 100644
--- a/drivers/power/qcom-charger/smb-lib.h
+++ b/drivers/power/qcom-charger/smb-lib.h
@@ -97,6 +97,7 @@ struct smb_params {
struct smb_chg_param step_soc_threshold[4];
struct smb_chg_param step_soc;
struct smb_chg_param step_cc_delta[5];
+ struct smb_chg_param freq_buck;
};
struct parallel_params {
diff --git a/drivers/power/qcom-charger/smb-reg.h b/drivers/power/qcom-charger/smb-reg.h
index c567ec2752c1..c2941f61f4a2 100644
--- a/drivers/power/qcom-charger/smb-reg.h
+++ b/drivers/power/qcom-charger/smb-reg.h
@@ -995,4 +995,6 @@ enum {
#define SYSOK_POL_BIT BIT(3)
#define SYSOK_OPTIONS_MASK GENMASK(2, 0)
+#define CFG_BUCKBOOST_FREQ_SELECT_BUCK_REG (MISC_BASE + 0xA0)
+
#endif /* __SMB2_CHARGER_REG_H */
diff --git a/drivers/power/qcom-charger/smb138x-charger.c b/drivers/power/qcom-charger/smb138x-charger.c
index 816ac0713c66..3db295b3e6e8 100644
--- a/drivers/power/qcom-charger/smb138x-charger.c
+++ b/drivers/power/qcom-charger/smb138x-charger.c
@@ -72,6 +72,13 @@ static struct smb_params v1_params = {
.max_u = 6000000,
.step_u = 25000,
},
+ .freq_buck = {
+ .name = "buck switching frequency",
+ .reg = CFG_BUCKBOOST_FREQ_SELECT_BUCK_REG,
+ .min_u = 500,
+ .max_u = 2000,
+ .step_u = 100,
+ },
};
struct smb_dt_props {
@@ -471,6 +478,10 @@ static int smb138x_parallel_set_prop(struct power_supply *psy,
case POWER_SUPPLY_PROP_CURRENT_MAX:
rc = smblib_set_charge_param(chg, &chg->param.fcc, val->intval);
break;
+ case POWER_SUPPLY_PROP_BUCK_FREQ:
+ rc = smblib_set_charge_param(chg, &chg->param.freq_buck,
+ val->intval);
+ break;
default:
pr_err("parallel power supply set prop %d not supported\n",
prop);