Skip to content

Commit 94a8ee1

Browse files
committed
Merge tag 'for-v6.11-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply
Pull power supply fixes from Sebastian Reichel: "rt5033: - fix driver regression causing kernel oops axp288-charger: - fix charge voltage setup qcom-battmgr: - fix thermal zone spamming errors - fix init on Qualcomm X Elite" * tag 'for-v6.11-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply: power: supply: qcom_battmgr: Ignore extra __le32 in info payload power: supply: qcom_battmgr: return EAGAIN when firmware service is not up power: supply: axp288_charger: Round constant_charge_voltage writes down power: supply: axp288_charger: Fix constant_charge_voltage writes power: supply: rt5033: Bring back i2c_set_clientdata
2 parents d456068 + d6cca76 commit 94a8ee1

File tree

3 files changed

+19
-16
lines changed

3 files changed

+19
-16
lines changed

drivers/power/supply/axp288_charger.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -178,18 +178,18 @@ static inline int axp288_charger_set_cv(struct axp288_chrg_info *info, int cv)
178178
u8 reg_val;
179179
int ret;
180180

181-
if (cv <= CV_4100MV) {
182-
reg_val = CHRG_CCCV_CV_4100MV;
183-
cv = CV_4100MV;
184-
} else if (cv <= CV_4150MV) {
185-
reg_val = CHRG_CCCV_CV_4150MV;
186-
cv = CV_4150MV;
187-
} else if (cv <= CV_4200MV) {
181+
if (cv >= CV_4350MV) {
182+
reg_val = CHRG_CCCV_CV_4350MV;
183+
cv = CV_4350MV;
184+
} else if (cv >= CV_4200MV) {
188185
reg_val = CHRG_CCCV_CV_4200MV;
189186
cv = CV_4200MV;
187+
} else if (cv >= CV_4150MV) {
188+
reg_val = CHRG_CCCV_CV_4150MV;
189+
cv = CV_4150MV;
190190
} else {
191-
reg_val = CHRG_CCCV_CV_4350MV;
192-
cv = CV_4350MV;
191+
reg_val = CHRG_CCCV_CV_4100MV;
192+
cv = CV_4100MV;
193193
}
194194

195195
reg_val = reg_val << CHRG_CCCV_CV_BIT_POS;
@@ -337,8 +337,8 @@ static int axp288_charger_usb_set_property(struct power_supply *psy,
337337
}
338338
break;
339339
case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE:
340-
scaled_val = min(val->intval, info->max_cv);
341-
scaled_val = DIV_ROUND_CLOSEST(scaled_val, 1000);
340+
scaled_val = DIV_ROUND_CLOSEST(val->intval, 1000);
341+
scaled_val = min(scaled_val, info->max_cv);
342342
ret = axp288_charger_set_cv(info, scaled_val);
343343
if (ret < 0) {
344344
dev_warn(&info->pdev->dev, "set charge voltage failed\n");

drivers/power/supply/qcom_battmgr.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ static int qcom_battmgr_bat_get_property(struct power_supply *psy,
486486
int ret;
487487

488488
if (!battmgr->service_up)
489-
return -ENODEV;
489+
return -EAGAIN;
490490

491491
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
492492
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
@@ -683,7 +683,7 @@ static int qcom_battmgr_ac_get_property(struct power_supply *psy,
683683
int ret;
684684

685685
if (!battmgr->service_up)
686-
return -ENODEV;
686+
return -EAGAIN;
687687

688688
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
689689
if (ret)
@@ -748,7 +748,7 @@ static int qcom_battmgr_usb_get_property(struct power_supply *psy,
748748
int ret;
749749

750750
if (!battmgr->service_up)
751-
return -ENODEV;
751+
return -EAGAIN;
752752

753753
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
754754
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
@@ -867,7 +867,7 @@ static int qcom_battmgr_wls_get_property(struct power_supply *psy,
867867
int ret;
868868

869869
if (!battmgr->service_up)
870-
return -ENODEV;
870+
return -EAGAIN;
871871

872872
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
873873
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
@@ -1007,7 +1007,9 @@ static void qcom_battmgr_sc8280xp_callback(struct qcom_battmgr *battmgr,
10071007
battmgr->error = 0;
10081008
break;
10091009
case BATTMGR_BAT_INFO:
1010-
if (payload_len != sizeof(resp->info)) {
1010+
/* some firmware versions report an extra __le32 at the end of the payload */
1011+
if (payload_len != sizeof(resp->info) &&
1012+
payload_len != (sizeof(resp->info) + sizeof(__le32))) {
10111013
dev_warn(battmgr->dev,
10121014
"invalid payload length for battery information request: %zd\n",
10131015
payload_len);

drivers/power/supply/rt5033_battery.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ static int rt5033_battery_probe(struct i2c_client *client)
159159
return -EINVAL;
160160
}
161161

162+
i2c_set_clientdata(client, battery);
162163
psy_cfg.of_node = client->dev.of_node;
163164
psy_cfg.drv_data = battery;
164165

0 commit comments

Comments
 (0)