public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
* [RFC] HP laptop charge mode control via POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR
@ 2026-04-27 14:08 Navon John Lukose
  2026-04-27 15:45 ` Hans de Goede
  0 siblings, 1 reply; 3+ messages in thread
From: Navon John Lukose @ 2026-04-27 14:08 UTC (permalink / raw)
  To: Hans de Goede, Ilpo Jarvinen, Sebastian Reichel
  Cc: platform-driver-x86, linux-pm, linux-kernel, Jorge Lopez

Hi,

I have been looking at battery charge control on an HP laptop, and I would like
to check the right upstream direction before preparing a patch.

This is not a new userspace ABI. The kernel already has
POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR, and some existing drivers expose charge
modes without exposing charge thresholds. I am trying to confirm whether that is
the right interface for this HP firmware interface, and where the implementation
should live.

On this machine, Linux currently exposes no native battery charge thresholds:

  - no charge_control_start_threshold
  - no charge_control_end_threshold

The existing HP kernel drivers also do not expose this feature here:

  - hp-wmi does not expose battery charge mode control
  - hp-bioscfg is present, but does not expose Battery Health Manager or related
    battery threshold attributes on this machine

However, the firmware exposes working ACPI methods for charge mode control:

  - \SBCC 0x0000 -> normal charging / auto
  - \SBCO 0x0500 -> inhibit charge
  - \SBCO 0x0200 -> force discharge while on AC

These mappings have been tested from Linux by observing battery and adapter
state transitions:

  - auto allows normal charging
  - inhibit-charge leaves AC online and reports Not charging / zero current
  - force-discharge makes the battery path discharge while AC is connected

My current thinking is:

  - expose only POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR
  - support AUTO, INHIBIT_CHARGE, and FORCE_DISCHARGE
  - do not synthesize charge_control_*_threshold properties in the kernel
  - leave policies such as "resume below 75%, stop above 80%" to userspace

For driver placement, this seems HP-specific rather than generic power-supply
logic, so I think it should probably live under drivers/platform/x86/hp/ and
register a power_supply extension on the battery, similar to other platform
drivers that use power_supply_register_extension() from a battery hook.

Does that sound like the right direction?

In particular:

  1. Is POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR the right ABI for an HP platform that
     appears to expose only mode-based charging control?

  2. Should this be implemented as part of an existing HP driver such as hp-wmi,
     or as a small new HP-specific driver under drivers/platform/x86/hp/?

  3. What should the driver gate support on? For example, should this be gated
     by DMI quirks, HP WMI/BIOS GUID presence, ACPI method presence, or some
     combination of those?

Thanks,
Navon John Lukose

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

end of thread, other threads:[~2026-04-28 14:19 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-27 14:08 [RFC] HP laptop charge mode control via POWER_SUPPLY_PROP_CHARGE_BEHAVIOUR Navon John Lukose
2026-04-27 15:45 ` Hans de Goede
2026-04-28 14:18   ` Navon John Lukose

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox