All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] platform/x86: Battery charge mode in toshiba_acpi
@ 2022-08-28 19:29 Arvid Norlander
  2022-08-28 19:29 ` [PATCH 1/3] platform/x86: Battery charge mode in toshiba_acpi (internals) Arvid Norlander
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Arvid Norlander @ 2022-08-28 19:29 UTC (permalink / raw)
  To: platform-driver-x86, linux-pm
  Cc: Sebastian Reichel, Hans de Goede, Azael Avalos, Arvid Norlander

This is an improved version of the battery charge control for Toshiba
Satellite Z830. The full background is available in the two emails linked
below, but a short summary will follow, including only what is relevant
for battery charge control.


Background (from link 1)
==========

The Toshiba Satellite/Portege Z830 supports not charging the battery fully
in order to prolong battery life. Unlike for example ThinkPads where this
control is granular here it is just off/on. When off it charges to 100%.
When on it charges to about 80%.

According to the Windows program used to control the feature the setting
will not take effect until the battery has been discharged to around 50%.
However, in my testing it takes effect as soon as the charge drops below
80%. On Windows Toshiba branded this feature as "Eco charging"

In the following example ACPI calls I will use the following newly defined
constants:
#define HCI_BATTERY_CHARGE_MODE 0xba
#define BATTERY_CHARGE_FULL 0
#define BATTERY_CHARGE_80_PERCENT 1

To set the feature:
  {HCI_SET, HCI_BATTERY_CHARGE_MODE, charge_mode, 0, 0, 0}
To query for the existence of the feature:
  {HCI_GET, HCI_BATTERY_CHARGE_MODE, 0, 0, 0, 0}
To read the feature:
  {HCI_GET, HCI_BATTERY_CHARGE_MODE, 0, 0, 0, 1}

The read may need to be retried if TOS_DATA_NOT_AVAILABLE is returned as
the status code. This rarely happens (I have never observed it on Linux),
but I have seen it happen under Windows once, and the software did retry
it.


Improvements
============

As discussed in link 2 & 3 below, the original approach was suboptimal.

This patch series instead consists of two patches.

The first patch implements detecting the feature as well as internal
getter/setter methods.

The second patch adds battery hooks (heavily based on the code for this in
thinkpad_acpi) which creates the standard charge_control_end_threshold file
under /sys/class/power_supply/BAT1.

Side note: There is no BAT0 on this Toshiba, I'm not sure why the numbering
ends up starting from 1 instead of 0 here. This differs from my Thinkpads,
where the numbering starts from 0, with BAT1 being the second battery.
However, I haven't spent much effort investigating this, as it did not seem
important.

Patch 3 updates the ABI test documentation as suggested by Hans de Goede.
Note that only the charge_control_end_threshold is updated, as this is the
only limit supported by the Toshiba Z830. Possibly
charge_control_start_threshold should also be updated similarly, or would
it be better to wait for an actual example of this in the wild first?

Link (1): https://www.spinics.net/lists/platform-driver-x86/msg34314.html
Link (2): https://www.spinics.net/lists/platform-driver-x86/msg34354.html
Link (3): https://www.spinics.net/lists/platform-driver-x86/msg34320.html

Arvid Norlander (3):
  platform/x86: Battery charge mode in toshiba_acpi (internals)
  platform/x86: Battery charge mode in toshiba_acpi (sysfs)
  docs: ABI: charge_control_end_threshold may not support all values

 Documentation/ABI/testing/sysfs-class-power |   5 +-
 drivers/platform/x86/toshiba_acpi.c         | 162 ++++++++++++++++++++
 2 files changed, 166 insertions(+), 1 deletion(-)


base-commit: 1c23f9e627a7b412978b4e852793c5e3c3efc555
-- 
2.37.2


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2022-09-01 21:14 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-28 19:29 [PATCH 0/3] platform/x86: Battery charge mode in toshiba_acpi Arvid Norlander
2022-08-28 19:29 ` [PATCH 1/3] platform/x86: Battery charge mode in toshiba_acpi (internals) Arvid Norlander
2022-08-28 19:29 ` [PATCH 2/3] platform/x86: Battery charge mode in toshiba_acpi (sysfs) Arvid Norlander
2022-08-28 22:15   ` kernel test robot
2022-08-28 22:44     ` Arvid Norlander
2022-08-28 22:44       ` Arvid Norlander
2022-08-29  8:16       ` Miguel Ojeda
2022-08-29  8:16         ` Miguel Ojeda
2022-08-29 16:59     ` Nick Desaulniers
2022-08-29 16:59       ` Nick Desaulniers
2022-08-28 22:36   ` kernel test robot
2022-08-28 19:29 ` [PATCH 3/3] docs: ABI: charge_control_end_threshold may not support all values Arvid Norlander
2022-09-01 21:14   ` Sebastian Reichel
2022-09-01 15:27 ` [PATCH 0/3] platform/x86: Battery charge mode in toshiba_acpi Hans de Goede

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.