From: Hans de Goede <hdegoede@redhat.com>
To: Antheas Kapenekakis <lkml@antheas.dev>
Cc: platform-driver-x86@vger.kernel.org, linux-hwmon@vger.kernel.org,
linux-doc@vger.kernel.org, linux-pm@vger.kernel.org,
Guenter Roeck <linux@roeck-us.net>,
Jean Delvare <jdelvare@suse.com>,
Jonathan Corbet <corbet@lwn.net>,
Joaquin Ignacio Aramendia <samsagax@gmail.com>,
Derek J Clark <derekjohn.clark@gmail.com>,
Kevin Greenberg <kdgreenberg234@protonmail.com>,
Joshua Tam <csinaction@pm.me>,
Parth Menon <parthasarathymenon@gmail.com>,
Eileen <eileen@one-netbook.com>
Subject: Re: [PATCH v4 05/13] power: supply: add inhibit-charge-s0 to charge_behaviour
Date: Mon, 17 Mar 2025 14:31:15 +0100 [thread overview]
Message-ID: <82e27f38-f951-4e6f-babd-81890d590a04@redhat.com> (raw)
In-Reply-To: <CAGwozwGESTw2DJsqr3uAhEymXxH4O5EXDw6O91i8CzCT0=yC1Q@mail.gmail.com>
Hi,
On 17-Mar-25 13:38, Antheas Kapenekakis wrote:
> On Mon, 17 Mar 2025 at 13:27, Hans de Goede <hdegoede@redhat.com> wrote:
>>
>> Hi Antheas,
>>
>> On 11-Mar-25 17:53, Antheas Kapenekakis wrote:
>>> OneXPlayer devices have a charge bypass
>>
>> The term "charge bypass" is typically used for the case where the
>> external charger gets directly connected to the battery cells,
>> bypassing the charge-IC inside the device, in making
>> the external charger directly responsible for battery/charge
>> management.
>>
>> Yet you name the feature inhibit charge, so I guess it simply
>> disables charging of the battery rather then doing an actual
>> chaerger-IC bypass ?
>>
>> Assuming I have this correct, please stop using the term
>> charge-bypass as that has a specific (different) meaning.
>
> Unfortunately, this is how the feature is called in Windows. On both
> OneXPlayer and Ayaneo. Manufacturers are centralizing around that
> term.
Ok, so I just did a quick duckduckgo for this and it looks like
you are right.
> Under the hood, it should be bypassing the charger circuitry, but it
> is not obvious during use.
Ack reading up on this it seems the idea is not to connect the external
charger directly to the battery to allow fast-charging without
the charge-IC inside the device adding heat, which is the traditional
bypass mode.
Instead the whole battery + charging-IC are cut out of the circuit
(so bypassed) and the charger is now directly powering the device
without the battery acting as a buffer if the power-draw superseeds
what the external charger can deliver.
> The user behavior mirrors `inhibit-charge`,
> as the battery just stops charging, so the endpoint is appropriate.
Hmm this new bypass mode indeed does seem to mirror inhibit charge
from a user pov, but it does more. It reminds me of the battery disconnect
option which some charge-ICs have which just puts the battery FET in
high impedance mode effectively disconnecting the battery. Now that
feature is intended for long term storage of devices with a builtin
battery and it typically also immediately powers off the device ...
Still I wonder if it would make sense to add a new "disconnect"
charge_behaviour or charge_types enum value for this ?
<snip>
>>> diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
>>> index 2a5c1a09a28f..4a187ca11f92 100644
>>> --- a/Documentation/ABI/testing/sysfs-class-power
>>> +++ b/Documentation/ABI/testing/sysfs-class-power
>>> @@ -508,11 +508,12 @@ Description:
>>> Access: Read, Write
>>>
>>> Valid values:
>>> - ================ ====================================
>>> - auto: Charge normally, respect thresholds
>>> - inhibit-charge: Do not charge while AC is attached
>>> - force-discharge: Force discharge while AC is attached
>>> - ================ ====================================
>>> + ================== =====================================
>>> + auto: Charge normally, respect thresholds
>>> + inhibit-charge: Do not charge while AC is attached
>>> + inhibit-charge-s0: same as inhibit-charge but only in S0
>>
>> Only in S0 suggests that charging gets disabled when the device is on / in-use,
>> I guess this is intended to avoid generating extra heat while the device is on?
>>
>> What about when the device is suspended, should the battery charge then ?
>>
>> On x86 we've 2 sorts of suspends S3, and the current name suggests that the
>> device will charge (no inhibit) then. But modern hw almost always uses
>> s0i3 / suspend to idle suspend and the name suggests charging would then
>> still be inhibited?
>>
>> Also s0 is an ACPI specific term, so basically 2 remarks here:
>>
>> 1. The name should probably be "inhibit-charge-when-on" since the power_supply
>> calls is platform agnositic and "S0" is not.
>
> I tried to be minimal. If we want to make the name longer, I vote for
> "inhibit-charge-awake". I can spin a v5 with that.
>
> The device does not charge while asleep. Only when it is off.
Is suspend awake though ?
>> 2. We need to clearly define what happens when the device is suspended and then
>> make sure that the driver matches this (e.g. if we want to *not* inhibit during
>> suspend we may need to turn this feature off during suspend).
>
> This is handled by the device when it comes to OneXPlayer. No driver
> changes are needed.
Well you say no charging is done when suspended, the question also is what
behavior do we want here? I'm fine with the default behaviour, but a case
could be made that charging while suspended might be desirable (dependent on
the use case) in which case we would need to disable the inhibit when
suspending to get the desired behavior.
Also what if other firmware interfaces with a bypass^W inhibit option work
differently and do charge during suspend ?
It is important that we clearly define the expected behavior now so that
future devices can be made to behave the same.
Regards,
Hans
next prev parent reply other threads:[~2025-03-17 13:31 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-11 16:53 [PATCH v4 00/13] hwmon: (oxpsensors) Add devices, features, fix ABI and move to platform/x86 Antheas Kapenekakis
2025-03-11 16:53 ` [PATCH v4 01/13] hwmon: (oxp-sensors) Distinguish the X1 variants Antheas Kapenekakis
2025-03-11 16:53 ` [PATCH v4 02/13] hwmon: (oxp-sensors) Add all OneXFly variants Antheas Kapenekakis
2025-03-11 16:53 ` [PATCH v4 03/13] platform/x86: oxpec: Move hwmon/oxp-sensors to platform/x86 Antheas Kapenekakis
2025-03-11 16:53 ` [PATCH v4 04/13] ABI: testing: add tt_toggle and tt_led entries Antheas Kapenekakis
2025-03-11 16:53 ` [PATCH v4 05/13] power: supply: add inhibit-charge-s0 to charge_behaviour Antheas Kapenekakis
2025-03-16 11:40 ` Antheas Kapenekakis
2025-03-16 13:56 ` Guenter Roeck
2025-03-16 16:46 ` Antheas Kapenekakis
[not found] ` <CAFqHKTmYE+TYT9kpJXXoG0eZ36kJqrAfwQ397_7ssaYYsgh9KA@mail.gmail.com>
2025-03-16 17:03 ` Antheas Kapenekakis
2025-03-16 22:32 ` Guenter Roeck
2025-03-17 12:17 ` Hans de Goede
2025-03-17 12:26 ` Hans de Goede
2025-03-17 12:38 ` Antheas Kapenekakis
2025-03-17 13:31 ` Hans de Goede [this message]
2025-03-17 13:50 ` Antheas Kapenekakis
2025-03-17 14:03 ` Hans de Goede
2025-03-11 16:53 ` [PATCH v4 06/13] platform/x86: oxpec: Add charge threshold and behaviour to OneXPlayer Antheas Kapenekakis
2025-03-17 12:32 ` Hans de Goede
2025-03-17 12:40 ` Antheas Kapenekakis
2025-03-11 16:53 ` [PATCH v4 07/13] platform/x86: oxpec: Rename ec group to tt_toggle Antheas Kapenekakis
2025-03-11 16:54 ` [PATCH v4 08/13] platform/x86: oxpec: Add turbo led support to X1 devices Antheas Kapenekakis
2025-03-11 16:54 ` [PATCH v4 09/13] platform/x86: oxpec: Move pwm_enable read to its own function Antheas Kapenekakis
2025-03-11 16:54 ` [PATCH v4 10/13] platform/x86: oxpec: Move pwm value read/write to separate functions Antheas Kapenekakis
2025-03-11 16:54 ` [PATCH v4 11/13] platform/x86: oxpec: Move fan speed read to separate function Antheas Kapenekakis
2025-03-11 16:54 ` [PATCH v4 12/13] platform/x86: oxpec: Adhere to sysfs-class-hwmon and enable pwm on 2 Antheas Kapenekakis
2025-03-11 16:54 ` [PATCH v4 13/13] platform/x86: oxpec: Follow reverse xmas convention for tt_toggle Antheas Kapenekakis
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=82e27f38-f951-4e6f-babd-81890d590a04@redhat.com \
--to=hdegoede@redhat.com \
--cc=corbet@lwn.net \
--cc=csinaction@pm.me \
--cc=derekjohn.clark@gmail.com \
--cc=eileen@one-netbook.com \
--cc=jdelvare@suse.com \
--cc=kdgreenberg234@protonmail.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lkml@antheas.dev \
--cc=parthasarathymenon@gmail.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=samsagax@gmail.com \
/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