linux-samsung-soc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Henrik Grimler <henrik@grimler.se>
To: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Cc: sre@kernel.org, linux-pm@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org,
	~postmarketos/upstreaming@lists.sr.ht, wolfgit@wiedmeyer.de,
	Sebastian Krzyszkowiak <sebastian.krzyszkowiak@puri.sm>,
	Hans de Goede <hdegoede@redhat.com>,
	Nikita Travkin <nikita@trvn.ru>
Subject: Re: [PATCH 1/1] power: supply: max17042_battery: use VFSOC for capacity when no rsns
Date: Tue, 28 Sep 2021 20:32:03 +0200	[thread overview]
Message-ID: <YVNfo75ALWWGLZeA@grimlerstat.localdomain> (raw)
In-Reply-To: <6b77953f-cbad-5688-7364-667975309f8f@canonical.com>

On Tue, Sep 28, 2021 at 11:18:27AM +0200, Krzysztof Kozlowski wrote:
> On 27/09/2021 21:05, Henrik Grimler wrote:
> > On Fri, Sep 24, 2021 at 01:45:29PM +0200, Krzysztof Kozlowski wrote:
> >> If you switch to VSSoc, I think you need to modify the SOC Alert Config
> >> in MiscCFG register (bits 0:1 to 0x1). Otherwise the alerts will be
> >> generated on different value.
> > 
> > So, 0x1 should correspond to AvSOC (i.e. non-filtered RepSOC), while
> > right now we write 0x3 (VFSOC) to MiscCFG for devices without current
> > sense [1]. Could you elaborate on why AvSOC should be used for alert
> > if we use VFSOC to get PROP_CAPACITY?
> 
> I meant that same measurement should be used for both: for PROP_CAPACITY
> and for alerts.
> 
> I double checked the driver and your change is actually aligned with it.
> If !enable_current_sense, the driver will set MiscCFG to 0x3 to use
> VFSOC for alerts. I think you can ignore that part of my comment before.

Makes sense, thanks!

> However still remaining issue is that switching to VFSoc should happen
> not only if !enable_current_sense but also if ModelGauge m3 is not
> configured.

If I manage to get ModelGauge working on this device in the future I
can address this.

> > On this particular device it does not seem to make a difference what I
> > use for the SOC alert, the alert triggers all the time in any case
> > since RepSOC does not give an accurate value. Supposedly this happens
> > because ModelGauge configuration is incomplete, as you said. Looking
> > at the registers used by the ModelGauge it seems that only the
> > "characterization table" at 0x80 - 0xAF is missing. The rest (FullCap,
> > DesignCap, ICHGTerm, ..) are set to the same values as with vendor
> > kernel.
> 
> Are you sure? I could not find setting of these (e.g.
> MAX17042_FullCAP/config->fullcap) for a DT platform.

Actually, it seems that the registers are set to the default Power-On
Reset (POR) values in both mainline and vendor kernel.  Printing all
the Cell Characterization Information Registers (given in Table 1 in
the MAX17047 datasheet) with something like:

    u32 tmp;
    regmap_read(chip->regmap, MAX17042_FullCAP, &tmp);
    dev_err(&chip->client->dev, "Fullcap %04x\n", tmp);

in both vendor kernel and mainline gives the same values:

    Fullcap    07d0
    DesignCap  07d0
    ICHGTerm   03c0
    FullCapNom 0667
    RCOMP0     0065
    Iavg_empty 0780
    TempCo     0930
    QRes 00    1e2f
    QRes 10    1e00
    QRes 20    1306
    QRes 30    0c00

and these are the POR values (seen in Table 5 of the datasheet).  Only
difference between vendor and mainline is that MAX17042_MODELChrTbl is
all zeros on mainline, while with vendor kernel I get something like:

    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
    00 50 05 c0 a0 85 a9 f1 e0 5d 84 f1 01 00 00 00

and the values here change over time as well, as the algorithm learns
about the battery(?).

Maybe this means that the ModelGauge algorithm is not configured with
vendor kernel either, and that a full battery characterization
(described in [1]) is needed if we are to use ModelGauge.  ModelGauge
is also not mentioned in the vendor kernel driver for max17047 [2],
but it is mentioned in the very similar max17042 [3] and max17050
drivers in the same kernel.

> Best regards,
> Krzysztof

[1] https://pdfserv.maximintegrated.com/en/an/AN4799.pdf
[2] https://github.com/LineageOS/android_kernel_samsung_smdk4412/blob/2489007e7d74/drivers/battery/max17047_fuelgauge.c
[3] https://github.com/LineageOS/android_kernel_samsung_smdk4412/blob/2489007e7d74/drivers/battery/max17042_fuelgauge.c

Best regards,
Henrik Grimler

  reply	other threads:[~2021-09-28 18:32 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-19 20:07 [PATCH 0/1] power: supply: max17042_battery: use VFSOC for capacity when no rsns Henrik Grimler
2021-09-19 20:07 ` [PATCH 1/1] " Henrik Grimler
2021-09-24 11:45   ` Krzysztof Kozlowski
2021-09-27 19:05     ` Henrik Grimler
2021-09-28  9:18       ` Krzysztof Kozlowski
2021-09-28 18:32         ` Henrik Grimler [this message]
2021-09-28  9:22   ` Krzysztof Kozlowski
2021-09-28 19:18     ` Henrik Grimler

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=YVNfo75ALWWGLZeA@grimlerstat.localdomain \
    --to=henrik@grimler.se \
    --cc=hdegoede@redhat.com \
    --cc=krzysztof.kozlowski@canonical.com \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=nikita@trvn.ru \
    --cc=sebastian.krzyszkowiak@puri.sm \
    --cc=sre@kernel.org \
    --cc=wolfgit@wiedmeyer.de \
    --cc=~postmarketos/upstreaming@lists.sr.ht \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).