ec/google/chromeec: Add Kconfig to enable battery full workaround

Commit 55a972236e ("chromeec: Disable battery remaining capacity
workaround") disabled the workaround for all ChromeEC devices, since
newer EC firmware applies compensation via battery_compensate_params.
Older boards use EC branches that lack this logic; without it, users can
see 93–100% charge–discharge cycling and stale full-capacity reporting.

Add a Kconfig to configure the workaround, and select it for older
boards whose EC firmware lacks battery_compensate_params logic.
EC firmware branches were inspected to determine which ones lack this
logic.


TEST=build/boot google/lulu, verify battery full indication works
     correctly with the Kconfig selected.

Change-Id: I096e0cf402e07f846b961319e01fb8f2c2dde7fc
Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/90960
Reviewed-by: Caveh Jalali <caveh@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Subrata Banik <subratabanik@google.com>
This commit is contained in:
Matt DeVillier 2026-01-27 18:15:22 -06:00
commit e464a02635
11 changed files with 26 additions and 4 deletions

View file

@ -220,6 +220,17 @@ config EC_GOOGLE_CHROMEEC_READ_BATTERY_LONG_STRING
If unsure, say N.
config EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
bool
help
Enable the ACPI "full battery" workaround (BFWK) for remaining capacity.
When enabled, remaining charge near full is reported as full capacity to
hide 93-100% charge-discharge cycles and to handle batteries that don't report
full capacity timely.
Select this for older boards whose EC firmware lacks battery_compensate_params
logic.
If unsure, say N.
config EC_GOOGLE_CHROMEEC_LPC_GENERIC_MEMORY_RANGE
def_bool n
help

View file

@ -414,8 +414,9 @@ Device (BAT0)
})
Name (BSTP, 0)
// Workaround for full battery status, disabled by default
Name (BFWK, 0)
// Workaround for full battery status, disabled by default,
// enabled via Kconfig for older boards lacking EC compensation.
Name (BFWK, CONFIG(EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND))
// Method to enable full battery workaround
Method (BFWE)
@ -504,8 +505,9 @@ Device (BAT1)
})
Name (BSTP, 0)
// Workaround for full battery status, disabled by default
Name (BFWK, 0)
// Workaround for full battery status, disabled by default,
// enabled via Kconfig for older boards lacking EC compensation.
Name (BFWK, CONFIG(EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND))
// Method to enable full battery workaround
Method (BFWE)

View file

@ -9,6 +9,7 @@ config BOARD_GOOGLE_BASEBOARD_AURON
select DRIVERS_OPTION_CFR_ENABLED if PAYLOAD_EDK2 && SMMSTORE
select EC_GOOGLE_CHROMEEC
select EC_GOOGLE_CHROMEEC_LPC
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES
select HAVE_OPTION_TABLE

View file

@ -8,6 +8,7 @@ config BOARD_GOOGLE_BASEBOARD_CYAN
select EC_GOOGLE_CHROMEEC_BOARDID
select EC_GOOGLE_CHROMEEC_LPC
select EC_GOOGLE_CHROMEEC_MEC
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES
select HAVE_OPTION_TABLE

View file

@ -15,6 +15,7 @@ config BOARD_SPECIFIC_OPTIONS
select EC_GOOGLE_CHROMEEC
select EC_GOOGLE_CHROMEEC_BOARDID
select EC_GOOGLE_CHROMEEC_ESPI
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES
select I2C_TPM

View file

@ -10,6 +10,7 @@ config BOARD_GOOGLE_BASEBOARD_GLADOS
select EC_GOOGLE_CHROMEEC_BOARDID
select EC_GOOGLE_CHROMEEC_LPC
select EC_GOOGLE_CHROMEEC_MEC
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select EC_GOOGLE_CHROMEEC_PD
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES

View file

@ -10,6 +10,7 @@ config BOARD_SPECIFIC_OPTIONS
select DRIVERS_OPTION_CFR_ENABLED if PAYLOAD_EDK2 && SMMSTORE
select EC_GOOGLE_CHROMEEC
select EC_GOOGLE_CHROMEEC_AUTO_FAN_CTRL
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select EC_GOOGLE_CHROMEEC_LPC
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES

View file

@ -73,6 +73,7 @@ config BOARD_GOOGLE_NOCTURNE
select DRIVERS_I2C_SX9310
select DRIVERS_SPI_ACPI
select DRIVERS_USB_ACPI
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select EXCLUDE_NATIVE_SD_INTERFACE
select GEO_SAR_ENABLE if CHROMEOS_WIFI_SAR
select INTEL_GMA_HAVE_VBT

View file

@ -6,6 +6,7 @@ config BOARD_GOOGLE_BASEBOARD_RAMBI
select BOARD_ROMSIZE_KB_8192
select EC_GOOGLE_CHROMEEC
select EC_GOOGLE_CHROMEEC_LPC
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select ENABLE_BUILTIN_COM1 if CONSOLE_SERIAL
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES

View file

@ -10,6 +10,7 @@ config BOARD_GOOGLE_BASEBOARD_REEF
select DRIVERS_OPTION_CFR_ENABLED if PAYLOAD_EDK2 && SMMSTORE
select EC_GOOGLE_CHROMEEC
select EC_GOOGLE_CHROMEEC_BOARDID
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select EC_GOOGLE_CHROMEEC_LPC
select GOOGLE_SMBIOS_MAINBOARD_VERSION
select HAVE_ACPI_RESUME

View file

@ -8,6 +8,7 @@ config BOARD_GOOGLE_BASEBOARD_SLIPPY
select DRIVERS_OPTION_CFR_ENABLED if PAYLOAD_EDK2 && SMMSTORE
select EC_GOOGLE_CHROMEEC
select EC_GOOGLE_CHROMEEC_LPC
select EC_GOOGLE_CHROMEEC_NEEDS_BATTERY_WORKAROUND
select HAVE_ACPI_RESUME
select HAVE_ACPI_TABLES
select HAVE_OPTION_TABLE