* [PATCH] power: supply: sbs-battery: chromebook workaround for PEC
@ 2020-10-04 22:46 Sebastian Reichel
2020-10-05 17:53 ` Vicente Bergas
2020-10-08 19:07 ` Milan P. Stanić
0 siblings, 2 replies; 6+ messages in thread
From: Sebastian Reichel @ 2020-10-04 22:46 UTC (permalink / raw)
To: Sebastian Reichel
Cc: linux-pm, kernel, Sebastian Reichel, Milan P. Stanić,
Vicente Bergas, Enric Balletbo i Serra
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.
Reported-by: "Milan P. Stanić" <mps@arvanta.net>
Reported-by: Vicente Bergas <vicencb@gmail.com>
CC: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Fixes: 7222bd603dd2 ("power: supply: sbs-battery: add PEC support")
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
---
Hi,
This is compile-tested only, since I do not have a chromebook at
hand. Please test if this fixes your issue.
-- Sebastian
---
drivers/power/supply/sbs-battery.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
index 13192cbcce71..b6a538ebb378 100644
--- a/drivers/power/supply/sbs-battery.c
+++ b/drivers/power/supply/sbs-battery.c
@@ -279,6 +279,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");
--
2.28.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH] power: supply: sbs-battery: chromebook workaround for PEC
2020-10-04 22:46 [PATCH] power: supply: sbs-battery: chromebook workaround for PEC Sebastian Reichel
@ 2020-10-05 17:53 ` Vicente Bergas
2020-10-05 18:47 ` Milan P. Stanić
2020-10-08 19:07 ` Milan P. Stanić
1 sibling, 1 reply; 6+ messages in thread
From: Vicente Bergas @ 2020-10-05 17:53 UTC (permalink / raw)
To: Sebastian Reichel
Cc: Sebastian Reichel, linux-pm, kernel, Milan P. Stanić,
Enric Balletbo i Serra
On Monday, October 5, 2020 12:46:01 AM CEST, Sebastian Reichel wrote:
> 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.
>
> Reported-by: "Milan P. Stanić" <mps@arvanta.net>
> Reported-by: Vicente Bergas <vicencb@gmail.com>
> CC: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> Fixes: 7222bd603dd2 ("power: supply: sbs-battery: add PEC support")
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> ---
> Hi,
>
> This is compile-tested only, since I do not have a chromebook at
> hand. Please test if this fixes your issue.
Hi Sebastian,
tested on rk3399-gru-kevin with 5.9.0-rc8 and now the CPU usage is 0 when
idling.
dmesg reports:
[ 1.370249] sbs-battery 9-000b: Disabling PEC because of broken Cros-EC
implementation
So,
Tested-by: Vicente Bergas <vicencb@gmail.com>
Thanks,
Vicente.
> -- Sebastian
> ---
> drivers/power/supply/sbs-battery.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/power/supply/sbs-battery.c
> b/drivers/power/supply/sbs-battery.c
> index 13192cbcce71..b6a538ebb378 100644
> --- a/drivers/power/supply/sbs-battery.c
> +++ b/drivers/power/supply/sbs-battery.c
> @@ -279,6 +279,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");
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] power: supply: sbs-battery: chromebook workaround for PEC
2020-10-05 17:53 ` Vicente Bergas
@ 2020-10-05 18:47 ` Milan P. Stanić
2020-10-05 20:33 ` Milan P. Stanić
0 siblings, 1 reply; 6+ messages in thread
From: Milan P. Stanić @ 2020-10-05 18:47 UTC (permalink / raw)
To: Vicente Bergas
Cc: Sebastian Reichel, Sebastian Reichel, linux-pm, kernel,
Enric Balletbo i Serra
Hi all,
On Mon, 2020-10-05 at 19:53, Vicente Bergas wrote:
> On Monday, October 5, 2020 12:46:01 AM CEST, Sebastian Reichel wrote:
> > 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.
> >
> > Reported-by: "Milan P. Stanić" <mps@arvanta.net>
> > Reported-by: Vicente Bergas <vicencb@gmail.com>
> > CC: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> > Fixes: 7222bd603dd2 ("power: supply: sbs-battery: add PEC support")
> > Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> > ---
> > Hi,
> >
> > This is compile-tested only, since I do not have a chromebook at
> > hand. Please test if this fixes your issue.
>
> Hi Sebastian,
> tested on rk3399-gru-kevin with 5.9.0-rc8 and now the CPU usage is 0 when
> idling.
> dmesg reports:
> [ 1.370249] sbs-battery 9-000b: Disabling PEC because of broken Cros-EC
> implementation
Also I tested on same board and same kernel version and can confirm
this.
> So,
> Tested-by: Vicente Bergas <vicencb@gmail.com>
>
> Thanks,
> Vicente.
>
> > -- Sebastian
> > ---
> > drivers/power/supply/sbs-battery.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/power/supply/sbs-battery.c
> > b/drivers/power/supply/sbs-battery.c
> > index 13192cbcce71..b6a538ebb378 100644
> > --- a/drivers/power/supply/sbs-battery.c
> > +++ b/drivers/power/supply/sbs-battery.c
> > @@ -279,6 +279,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");
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] power: supply: sbs-battery: chromebook workaround for PEC
2020-10-05 18:47 ` Milan P. Stanić
@ 2020-10-05 20:33 ` Milan P. Stanić
0 siblings, 0 replies; 6+ messages in thread
From: Milan P. Stanić @ 2020-10-05 20:33 UTC (permalink / raw)
To: Vicente Bergas
Cc: Sebastian Reichel, Sebastian Reichel, linux-pm, kernel,
Enric Balletbo i Serra
On Mon, 2020-10-05 at 20:48, Milan P. Stanić wrote:
> Hi all,
>
> On Mon, 2020-10-05 at 19:53, Vicente Bergas wrote:
> > On Monday, October 5, 2020 12:46:01 AM CEST, Sebastian Reichel wrote:
> > > 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.
> > >
> > > Reported-by: "Milan P. Stanić" <mps@arvanta.net>
> > > Reported-by: Vicente Bergas <vicencb@gmail.com>
> > > CC: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> > > Fixes: 7222bd603dd2 ("power: supply: sbs-battery: add PEC support")
> > > Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> > > ---
> > > Hi,
> > >
> > > This is compile-tested only, since I do not have a chromebook at
> > > hand. Please test if this fixes your issue.
> >
> > Hi Sebastian,
> > tested on rk3399-gru-kevin with 5.9.0-rc8 and now the CPU usage is 0 when
> > idling.
> > dmesg reports:
> > [ 1.370249] sbs-battery 9-000b: Disabling PEC because of broken Cros-EC
> > implementation
>
> Also I tested on same board and same kernel version and can confirm
> this.
And I forgot to mention that I opened bug report. sorry.
https://bugzilla.kernel.org/show_bug.cgi?id=209409
> > So,
> > Tested-by: Vicente Bergas <vicencb@gmail.com>
> >
> > Thanks,
> > Vicente.
> >
> > > -- Sebastian
> > > ---
> > > drivers/power/supply/sbs-battery.c | 6 ++++++
> > > 1 file changed, 6 insertions(+)
> > >
> > > diff --git a/drivers/power/supply/sbs-battery.c
> > > b/drivers/power/supply/sbs-battery.c
> > > index 13192cbcce71..b6a538ebb378 100644
> > > --- a/drivers/power/supply/sbs-battery.c
> > > +++ b/drivers/power/supply/sbs-battery.c
> > > @@ -279,6 +279,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");
> >
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] power: supply: sbs-battery: chromebook workaround for PEC
2020-10-04 22:46 [PATCH] power: supply: sbs-battery: chromebook workaround for PEC Sebastian Reichel
2020-10-05 17:53 ` Vicente Bergas
@ 2020-10-08 19:07 ` Milan P. Stanić
2020-10-10 11:09 ` Sebastian Reichel
1 sibling, 1 reply; 6+ messages in thread
From: Milan P. Stanić @ 2020-10-08 19:07 UTC (permalink / raw)
To: Sebastian Reichel
Cc: Sebastian Reichel, linux-pm, kernel, Vicente Bergas,
Enric Balletbo i Serra
Hi,
On Mon, 2020-10-05 at 00:46, Sebastian Reichel wrote:
> 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.
>
> Reported-by: "Milan P. Stanić" <mps@arvanta.net>
> Reported-by: Vicente Bergas <vicencb@gmail.com>
> CC: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> Fixes: 7222bd603dd2 ("power: supply: sbs-battery: add PEC support")
> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> ---
> Hi,
>
> This is compile-tested only, since I do not have a chromebook at
> hand. Please test if this fixes your issue.
>
> -- Sebastian
> ---
> drivers/power/supply/sbs-battery.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
> index 13192cbcce71..b6a538ebb378 100644
> --- a/drivers/power/supply/sbs-battery.c
> +++ b/drivers/power/supply/sbs-battery.c
> @@ -279,6 +279,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");
Just for info, yesterday I built kernel 5.9-rc8 from:
https://gitlab.collabora.com/eballetbo/linux/-/commits/topic/chromeos/somewhat-stable-next
for Acer R13 chromebook (Mediatek mt8173, Machine model: Google Elm)
without above patch, and on it sbs-battery works without any problem.
Maybe problem is only on rk3399 (just guessing)
--
regards
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] power: supply: sbs-battery: chromebook workaround for PEC
2020-10-08 19:07 ` Milan P. Stanić
@ 2020-10-10 11:09 ` Sebastian Reichel
0 siblings, 0 replies; 6+ messages in thread
From: Sebastian Reichel @ 2020-10-10 11:09 UTC (permalink / raw)
To: Milan P. Stanić
Cc: linux-pm, kernel, Vicente Bergas, Enric Balletbo i Serra
[-- Attachment #1: Type: text/plain, Size: 2560 bytes --]
Hi,
On Thu, Oct 08, 2020 at 09:07:01PM +0200, Milan P. Stanić wrote:
> On Mon, 2020-10-05 at 00:46, Sebastian Reichel wrote:
> > 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.
> >
> > Reported-by: "Milan P. Stanić" <mps@arvanta.net>
> > Reported-by: Vicente Bergas <vicencb@gmail.com>
> > CC: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> > Fixes: 7222bd603dd2 ("power: supply: sbs-battery: add PEC support")
> > Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
> > ---
> > Hi,
> >
> > This is compile-tested only, since I do not have a chromebook at
> > hand. Please test if this fixes your issue.
> >
> > -- Sebastian
> > ---
> > drivers/power/supply/sbs-battery.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> > diff --git a/drivers/power/supply/sbs-battery.c b/drivers/power/supply/sbs-battery.c
> > index 13192cbcce71..b6a538ebb378 100644
> > --- a/drivers/power/supply/sbs-battery.c
> > +++ b/drivers/power/supply/sbs-battery.c
> > @@ -279,6 +279,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");
>
> Just for info, yesterday I built kernel 5.9-rc8 from:
> https://gitlab.collabora.com/eballetbo/linux/-/commits/topic/chromeos/somewhat-stable-next
> for Acer R13 chromebook (Mediatek mt8173, Machine model: Google Elm)
> without above patch, and on it sbs-battery works without any problem.
Thanks for the info. I updated the commit message stating that not
all Chromebooks are affected.
> Maybe problem is only on rk3399 (just guessing)
Maybe. I did not take a close look how the cros-ec-i2c-tunnel is
implemented in hardware. It might also be completly unrelated to the
cros-ec-i2c-tunnel and a defect battery controller instead.
For now I sent above fix to Linus, so that the final 5.9 release
works on all Chromebooks. It's better to do further investigation
with a workaround in place :)
-- Sebastian
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-10-10 22:57 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-04 22:46 [PATCH] power: supply: sbs-battery: chromebook workaround for PEC Sebastian Reichel
2020-10-05 17:53 ` Vicente Bergas
2020-10-05 18:47 ` Milan P. Stanić
2020-10-05 20:33 ` Milan P. Stanić
2020-10-08 19:07 ` Milan P. Stanić
2020-10-10 11:09 ` Sebastian Reichel
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.