From: Sebastian Krzyszkowiak <email@example.com> To: Sebastian Reichel <firstname.lastname@example.org>, email@example.com, Krzysztof Kozlowski <firstname.lastname@example.org> Cc: email@example.com, Anton Vorontsov <firstname.lastname@example.org>, Ramakrishna Pallala <email@example.com>, Dirk Brandewie <firstname.lastname@example.org>, email@example.com, firstname.lastname@example.org Subject: Re: [PATCH 1/2] power: supply: max17042_battery: Clear status bits in interrupt handler Date: Mon, 13 Sep 2021 20:32:52 +0200 [thread overview] Message-ID: <5702731.UytLkSCjyO@pliszka> (raw) In-Reply-To: <email@example.com> [-- Attachment #1: Type: text/plain, Size: 3286 bytes --] On poniedziałek, 13 września 2021 15:02:34 CEST Krzysztof Kozlowski wrote: > On 12/09/2021 22:54, Sebastian Krzyszkowiak wrote: > > The gauge requires us to clear the status bits manually for some alerts > > to be properly dismissed. Previously the IRQ was configured to react only > > on falling edge, which wasn't technically correct (the ALRT line is active > > low), but it had a happy side-effect of preventing interrupt storms > > on uncleared alerts from happening. > > > > Fixes: 7fbf6b731bca ("power: supply: max17042: Do not enforce (incorrect) > > interrupt trigger type") Cc: <firstname.lastname@example.org> > > Signed-off-by: Sebastian Krzyszkowiak <email@example.com> > > --- > > > > drivers/power/supply/max17042_battery.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/drivers/power/supply/max17042_battery.c > > b/drivers/power/supply/max17042_battery.c index > > 8dffae76b6a3..c53980c8432a 100644 > > --- a/drivers/power/supply/max17042_battery.c > > +++ b/drivers/power/supply/max17042_battery.c > > @@ -876,6 +876,9 @@ static irqreturn_t max17042_thread_handler(int id, > > void *dev)> > > max17042_set_soc_threshold(chip, 1); > > > > } > > > > + regmap_clear_bits(chip->regmap, MAX17042_STATUS, > > + 0xFFFF & ~(STATUS_POR_BIT | STATUS_BST_BIT)); > > + > > Are you sure that this was the reason of interrupt storm? Not incorrect > SoC value (read from register for ModelGauge m3 while not configuring > fuel gauge model). Yes, I am sure. I have observed this on a fully configured max17055 with ModelGauge m5. It also makes sense to me based on what I read in the code and datasheets. There were two kinds of storms - the short ones happening on each SOC change caused by SOC threshold alerts set by max17042_set_soc_threshold which eventually got cleared by reconfiguring the thresholds; and a huge one happening when SOC got down to 0% that did not get away until the battery got charged to at least 1% at which point the thresholds got reconfigured again (which is how I noticed the underflow fixed by the second patch). Besides, I also have patches for configuring m5 gauge via DT that I'll send once I clean them up. > You should only clear bits which you are awaken for... Have in mind that > in DT-configuration the fuel gauge is most likely broken by missing > configuration. With alert enabled, several other config fields should be > cleared. I have checked all the bits in the Status register and aside of Bst, POR and bunch of "don't-care" bits they're all alert indicators that we either handle explicitly in the interrupt handler (Smn/Smx) or implicitly via power_supply_changed (Imn/Imx, Vmn/Vmx, Tmn/Tmx, dSOCi, Bi/Br). The driver unconditionally enables alerts for SOC thresholds and all the rest stays effectively disabled at POR; however, a bootloader or firmware may configure it differently, which may be wanted for things like resuming from suspend when a bad condition happens. Therefore we need to clear all the bits anyway and I'm not sure whether iterating through them in a "if set then clear" loop gains us anything aside of additional lines of code. > Best regards, > Krzysztof Cheers, Sebastian [-- Attachment #2: This is a digitally signed message part. --] [-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2021-09-13 18:33 UTC|newest] Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-12 20:54 Sebastian Krzyszkowiak 2021-09-12 20:54 ` [PATCH 2/2] power: supply: max17042_battery: Prevent int underflow in set_soc_threshold Sebastian Krzyszkowiak 2021-09-13 5:43 ` Greg KH 2021-09-13 13:05 ` Krzysztof Kozlowski 2021-09-13 13:02 ` [PATCH 1/2] power: supply: max17042_battery: Clear status bits in interrupt handler Krzysztof Kozlowski 2021-09-13 18:32 ` Sebastian Krzyszkowiak [this message] 2021-09-14 7:21 ` Krzysztof Kozlowski
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=5702731.UytLkSCjyO@pliszka \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: [PATCH 1/2] power: supply: max17042_battery: Clear status bits in interrupt handler' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).