aboutsummaryrefslogtreecommitdiff
path: root/drivers/platform/surface/surface3_power.c
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2022-03-17 11:03:28 +0100
committerThomas Zimmermann <tzimmermann@suse.de>2022-03-17 11:03:28 +0100
commita8253684eb4b30abd3faf055bc475c23da748dc6 (patch)
tree17ddd1543b1f08186b90cd1cf274d969a88ed1f5 /drivers/platform/surface/surface3_power.c
parentfc1b6ef7bfb3d1d4df868b1c3e0480cacda6cd81 (diff)
parent09688c0166e76ce2fb85e86b9d99be8b0084cdf9 (diff)
Merge drm/drm-fixes into drm-misc-fixes
Backmerging drm/drm-fixes for commit 3755d35ee1d2 ("drm/panel: Select DRM_DP_HELPER for DRM_PANEL_EDP"). Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Diffstat (limited to 'drivers/platform/surface/surface3_power.c')
-rw-r--r--drivers/platform/surface/surface3_power.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/platform/surface/surface3_power.c b/drivers/platform/surface/surface3_power.c
index abac3eec565e..444ec81ba02d 100644
--- a/drivers/platform/surface/surface3_power.c
+++ b/drivers/platform/surface/surface3_power.c
@@ -232,14 +232,21 @@ static int mshw0011_bix(struct mshw0011_data *cdata, struct bix *bix)
}
bix->last_full_charg_capacity = ret;
- /* get serial number */
+ /*
+ * Get serial number, on some devices (with unofficial replacement
+ * battery?) reading any of the serial number range addresses gets
+ * nacked in this case just leave the serial number empty.
+ */
ret = i2c_smbus_read_i2c_block_data(client, MSHW0011_BAT0_REG_SERIAL_NO,
sizeof(buf), buf);
- if (ret != sizeof(buf)) {
+ if (ret == -EREMOTEIO) {
+ /* no serial number available */
+ } else if (ret != sizeof(buf)) {
dev_err(&client->dev, "Error reading serial no: %d\n", ret);
return ret;
+ } else {
+ snprintf(bix->serial, ARRAY_SIZE(bix->serial), "%3pE%6pE", buf + 7, buf);
}
- snprintf(bix->serial, ARRAY_SIZE(bix->serial), "%3pE%6pE", buf + 7, buf);
/* get cycle count */
ret = i2c_smbus_read_word_data(client, MSHW0011_BAT0_REG_CYCLE_CNT);