summaryrefslogtreecommitdiff
path: root/drivers/power/supply/qcom_battmgr.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2024-08-12 10:17:57 +0300
committerTakashi Iwai <tiwai@suse.de>2024-08-12 10:17:57 +0300
commiteb75d05d96b824e14efa4de6c30692d300a9ce67 (patch)
treec45c9eeba78667c800c16e2c9d37a73a6b7bbacc /drivers/power/supply/qcom_battmgr.c
parentef9718b3d54e822de294351251f3a574f8a082ce (diff)
parent03c5c350e38d9346b69357d0e52c3c40495c14a0 (diff)
downloadlinux-eb75d05d96b824e14efa4de6c30692d300a9ce67.tar.xz
Merge branch 'topic/cirrus-hp-g12' into for-linus
Pull Cirrus HD-audio quirks for HP G12 laptops. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'drivers/power/supply/qcom_battmgr.c')
-rw-r--r--drivers/power/supply/qcom_battmgr.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/power/supply/qcom_battmgr.c b/drivers/power/supply/qcom_battmgr.c
index 46f36dcb185c..49bef4a5ac3f 100644
--- a/drivers/power/supply/qcom_battmgr.c
+++ b/drivers/power/supply/qcom_battmgr.c
@@ -486,7 +486,7 @@ static int qcom_battmgr_bat_get_property(struct power_supply *psy,
int ret;
if (!battmgr->service_up)
- return -ENODEV;
+ return -EAGAIN;
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
@@ -683,7 +683,7 @@ static int qcom_battmgr_ac_get_property(struct power_supply *psy,
int ret;
if (!battmgr->service_up)
- return -ENODEV;
+ return -EAGAIN;
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
if (ret)
@@ -748,7 +748,7 @@ static int qcom_battmgr_usb_get_property(struct power_supply *psy,
int ret;
if (!battmgr->service_up)
- return -ENODEV;
+ return -EAGAIN;
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
@@ -867,7 +867,7 @@ static int qcom_battmgr_wls_get_property(struct power_supply *psy,
int ret;
if (!battmgr->service_up)
- return -ENODEV;
+ return -EAGAIN;
if (battmgr->variant == QCOM_BATTMGR_SC8280XP)
ret = qcom_battmgr_bat_sc8280xp_update(battmgr, psp);
@@ -1007,7 +1007,9 @@ static void qcom_battmgr_sc8280xp_callback(struct qcom_battmgr *battmgr,
battmgr->error = 0;
break;
case BATTMGR_BAT_INFO:
- if (payload_len != sizeof(resp->info)) {
+ /* some firmware versions report an extra __le32 at the end of the payload */
+ if (payload_len != sizeof(resp->info) &&
+ payload_len != (sizeof(resp->info) + sizeof(__le32))) {
dev_warn(battmgr->dev,
"invalid payload length for battery information request: %zd\n",
payload_len);