public inbox for linux-acpi@vger.kernel.org
 help / color / mirror / Atom feed
From: Alexey Starikovskiy <astarikovskiy@suse.de>
To: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
	Henrique de Moraes Holschuh <hmh@hmh.eng.br>,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] battery: Fix charge_now returned by broken batteries
Date: Mon, 05 Oct 2009 02:38:44 +0400	[thread overview]
Message-ID: <4AC923F4.9050100@suse.de> (raw)
In-Reply-To: <ca2dc2820910041455h18ece909rc2280a40f1899c0a@mail.gmail.com>

Miguel Ojeda пишет:
> On Sun, Oct 4, 2009 at 11:36 PM, Alexey Starikovskiy
> <astarikovskiy@suse.de> wrote:
>> Hi Rafael,
>>
>> This is not my rule, it was/is the rule of power device class. If you do not
>> agree to it, please change
>> appropriate documentation.
> 
> Oh, I did not know that. Thank you for pointing it out. I think you
> are refering to:
> 
>  158Q: Suppose, my battery monitoring chip/firmware does not provides capacity
>  159   in percents, but provides charge_{now,full,empty}. Should I calculate
>  160   percentage capacity manually, inside the driver, and register CAPACITY
>  161   attribute? The same question about time_to_empty/time_to_full.
>  162A: Most likely, no. This class is designed to export properties which are
>  163   directly measurable by the specific hardware available.
>  164
>  165   Inferring not available properties using some heuristics or mathematical
>  166   model is not subject of work for a battery driver. Such functionality
>  167   should be factored out, and in fact, apm_power, the driver to serve
>  168   legacy APM API on top of power supply class, uses a simple heuristic of
>  169   approximating remaining battery capacity based on its charge, current,
>  170   voltage and so on. But full-fledged battery model is likely not subject
>  171   for kernel at all, as it would require floating point calculation to deal
>  172   with things like differential equations and Kalman filters. This is
>  173   better be handled by batteryd/libbattery, yet to be written.
> 
> We are not calculating anything new just by the pleasure of doing it,
> we are correcting a wrong value provided by the hardware.

You are guessing that normal battery can not jump charge value, and on this assumption you
cap charge_now with last full_charge. Immediate problem is that full_charge is not fixed value,
this is why it is separated from design_full_charge.
During battery life full_charge may go down and up, depending on outside temperature, battery discharge (full or partial).
I've seen batteries on some new machines reporting full charge of more than design charge.
Obviously, your patch will fail in some of the above situations.
Currently, reading from the driver is "last resort" to get un-interpreted value, if you have any doubts on it. With
your patch, this is gone, and user space will have to interpret results of kernel interpreter.

Return to the "bug still exists". We are referring to the value, which can not be measured directly with any known device.
Thus, it may be completely sane that battery manufacturer provides you with some charge curve, but knows only two values on it
which he may trust -- point where he can not get any power out of it (complete discharge) and point where he can not put any additional charge into the battery (due to various stop conditions (battery temperature being one)). In such a case manufacturer may choose to adjust charge curve to end up always at design_full_charge point, no matter how much of adjustment this requires.

Do you have the same jump from >100% to 99% on discharge?

Regards,
Alex.
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2009-10-04 22:39 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1254669853.26496.0.camel@carter>
2009-10-04 16:45 ` [PATCH] battery: Fix charge_now returned by broken batteries Henrique de Moraes Holschuh
2009-10-04 17:46   ` Miguel Ojeda
2009-10-04 18:57     ` Alexey Starikovskiy
2009-10-04 20:46       ` Rafael J. Wysocki
2009-10-04 21:36         ` Alexey Starikovskiy
2009-10-04 21:55           ` Miguel Ojeda
2009-10-04 22:38             ` Alexey Starikovskiy [this message]
2009-10-04 23:53               ` Miguel Ojeda
2009-10-05  0:18                 ` Alexey Starikovskiy
2009-10-06 17:05                   ` Miguel Ojeda
2009-10-10 12:04                     ` Pavel Machek
2009-10-10 20:53                       ` Miguel Ojeda
2009-10-10 21:25                         ` Pavel Machek
2009-10-10 21:44                           ` Miguel Ojeda
2009-10-10 22:49                             ` Pavel Machek
2009-10-10 21:52                           ` Henrique de Moraes Holschuh
2009-10-04 22:43           ` Rafael J. Wysocki
2009-10-04 22:56             ` Alexey Starikovskiy
2009-10-04 23:58               ` Miguel Ojeda
2009-10-04 21:42       ` Miguel Ojeda

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=4AC923F4.9050100@suse.de \
    --to=astarikovskiy@suse.de \
    --cc=hmh@hmh.eng.br \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miguel.ojeda.sandonis@gmail.com \
    --cc=rjw@sisk.pl \
    /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