[PATCH v3 0/5] ChromeOS Embedded Controller charge control driver

From: Thomas Weißschuh
Date: Mon Jun 10 2024 - 11:52:22 EST


Note:
To be useful, this series depends on
commit 08dbad2c7c32 ("mfd: cros_ec: Register charge control subdevice")
from the MFD tree [0].

Add a power supply driver that supports charge thresholds and behaviour
configuration.

This is a complete rework of
"platform/chrome: cros_ec_framework_laptop: new driver" [1], which used
Framework specific EC commands.

The driver propsed in this series only uses upstream CrOS functionality.

Tested on a Framework 13 AMD, Firmware 3.05.

This driver should go through the chrome-platform tree.
Otherwise "platform/chrome: cros_ec_proto: Introduce cros_ec_cmd_versions()"
will conflict with
commit a14a569a9918 ("platform/chrome: cros_ec_proto: Introduce cros_ec_cmd_readmem()")
from chrome-platform/for-next.

The patch
"platform/chrome: cros_ec_proto: Introduce cros_ec_cmd_versions()"
is also part of my series
"hwmon: (cros_ec): fan target, fan pwm control and temperature thresholds"[2].

Based on chrome-platform/for-next.

[0] https://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git/commit/?h=for-mfd-next&id=08dbad2c7c3275e0e79190dca139bc65ce775a92
[1] https://lore.kernel.org/lkml/20240505-cros_ec-framework-v1-0-402662d6276b@xxxxxxxxxxxxxx/
[2] https://lore.kernel.org/lkml/20240608-cros_ec-hwmon-pwm-v1-0-d29dfc26fbc3@xxxxxxxxxxxxxx/

Changes in v3:
- Drop MFD patch that was already applied
(therefore drop Lee from series recipients)
- Introduce and use devm_battery_hook_register()
- Note that the driver should go through the chrome-platform tree
- Introduce and use cros_ec_cmd_versions()
- Drop logging about impossible charge behaviours
- Use sysfs_attr_init()
- Disable probing on incompatible Framework devices by default
- Link to v2: https://lore.kernel.org/r/20240528-cros_ec-charge-control-v2-0-81fb27e1cff4@xxxxxxxxxxxxxx

Changes in v2:
- Accept "0" as charge_start_threshold
- Don't include linux/kernel.h
- Only bind to the first found battery
- Import EC_CMD_CHARGE_CONTROL v3 headers
- Add support for v1 and v3 commands
- Sort mfd cell entry alphabetically
- Link to v1: https://lore.kernel.org/r/20240519-cros_ec-charge-control-v1-0-baf305dc79b8@xxxxxxxxxxxxxx

---
Thomas Weißschuh (5):
ACPI: battery: add devm_battery_hook_register()
platform/chrome: Update binary interface for EC-based charge control
platform/chrome: cros_ec_proto: Introduce cros_ec_cmd_versions()
power: supply: add ChromeOS EC based charge control driver
power: supply: cros_charge-control: don't probe if Framework control is present

MAINTAINERS | 6 +
drivers/acpi/battery.c | 15 ++
drivers/platform/chrome/cros_ec_proto.c | 26 ++
drivers/power/supply/Kconfig | 12 +
drivers/power/supply/Makefile | 1 +
drivers/power/supply/cros_charge-control.c | 359 +++++++++++++++++++++++++
include/acpi/battery.h | 2 +
include/linux/platform_data/cros_ec_commands.h | 49 +++-
include/linux/platform_data/cros_ec_proto.h | 2 +
9 files changed, 470 insertions(+), 2 deletions(-)
---
base-commit: c8a4bdca928debacf49524d1b09dbf27e88e1f18
change-id: 20240506-cros_ec-charge-control-685617e8ed87

Best regards,
--
Thomas Weißschuh <linux@xxxxxxxxxxxxxx>