Commit e3f2396b authored by Sebastian Reichel's avatar Sebastian Reichel Committed by Sebastian Reichel
Browse files

power: supply: sbs-battery: chromebook workaround for PEC



Looks like the I2C tunnel implementation from Chromebook's
embedded controller does not handle PEC correctly. Fix this
by disabling PEC for batteries behind those I2C tunnels as
a workaround.

Note, that some Chromebooks actually have been reported to
have working PEC support (with I2C tunnel). Since the problem
has not yet been fully understood this simply reverts all
Chromebooks to not use PEC for now.

Reported-by: default avatar"Milan P. Stanić" <mps@arvanta.net>
Reported-by: default avatarVicente Bergas <vicencb@gmail.com>
CC: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Fixes: 7222bd60 ("power: supply: sbs-battery: add PEC support")
Tested-by: default avatarVicente Bergas <vicencb@gmail.com>
Tested-by: default avatar"Milan P. Stanić" <mps@arvanta.net>
Signed-off-by: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent 9123e3a7
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -280,6 +280,12 @@ static int sbs_update_presence(struct sbs_info *chip, bool is_present)
	else
		client->flags &= ~I2C_CLIENT_PEC;

	if (of_device_is_compatible(client->dev.parent->of_node, "google,cros-ec-i2c-tunnel")
	    && client->flags & I2C_CLIENT_PEC) {
		dev_info(&client->dev, "Disabling PEC because of broken Cros-EC implementation\n");
		client->flags &= ~I2C_CLIENT_PEC;
	}

	dev_dbg(&client->dev, "PEC: %s\n", (client->flags & I2C_CLIENT_PEC) ?
		"enabled" : "disabled");