ec/google/chromeec: Add option to control reading long battery strings

Older ChromeOS devices (pre-CR50) do not support reading long battery
strings. This commit adds a Kconfig option,
EC_GOOGLE_CHROMEEC_READ_BATTERY_LONG_STRING, to enable or disable this
feature.

This allows devices with TPM_GOOGLE (CR50/TI50) to read and display
long battery strings, while older devices like google/link, wolf, samus,
and chell will continue to display only the first 8 characters.

This change ensures compatibility with older devices while enabling
the display of complete battery information on newer platforms.

BUG=b:366338622
TEST=Verified on google/tivviks_ufs:
     * Long battery string is displayed when
       EC_GOOGLE_CHROMEEC_READ_BATTERY_LONG_STRING is enabled.
     * Short battery string is displayed when
       EC_GOOGLE_CHROMEEC_READ_BATTERY_LONG_STRING=n.

Change-Id: I7859809278b7e926bbe8beb1a0a9e12c7e6c220d
Signed-off-by: Subrata Banik <subratabanik@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84352
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Caveh Jalali <caveh@chromium.org>
This commit is contained in:
Subrata Banik 2024-09-13 21:01:30 +05:30
commit 3d5412f8d4
2 changed files with 19 additions and 1 deletions

View file

@ -152,6 +152,21 @@ config EC_GOOGLE_CHROMEEC_AUTO_FAN_CTRL
help
Put the fan in auto mode at boot.
config EC_GOOGLE_CHROMEEC_READ_BATTERY_LONG_STRING
depends on TPM_GOOGLE
bool
default y
help
The Chrome EC currently supports two ways to read battery strings on
ACPI platforms:
* Read up to 8 bytes from EC shared memory BMFG, BMOD, ...
* Send a EC_CMD_BATTERY_GET_STATIC host command and read longer strings as a response.
Select this config to support readout of longer battery strings.
If unsure, say N.
endif # EC_GOOGLE_CHROMEEC
source "src/ec/google/chromeec/*/Kconfig"

View file

@ -54,9 +54,12 @@ Method (BSTA, 1, Serialized)
Return (Local0)
}
#if CONFIG(EC_GOOGLE_CHROMEEC_READ_BATTERY_LONG_STRING)
// Cached flag for BSRF FIFO readout support from EC.
Name(BRSS, 0xff)
#else
Name(BRSS, 0x0)
#endif
// Read extended battery strings from the selected battery.
// Arg0 = string index
//