From 3d5412f8d4ad2cd3c873a46d8f6fb6a20c5f9ad6 Mon Sep 17 00:00:00 2001
From: Subrata Banik <subratabanik@google.com>
Date: Fri, 13 Sep 2024 21:01:30 +0530
Subject: 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>
---
 src/ec/google/chromeec/Kconfig          | 15 +++++++++++++++
 src/ec/google/chromeec/acpi/battery.asl |  5 ++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

(limited to 'src')

diff --git a/src/ec/google/chromeec/Kconfig b/src/ec/google/chromeec/Kconfig
index 7a8777fbdb..f0418ff16e 100644
--- a/src/ec/google/chromeec/Kconfig
+++ b/src/ec/google/chromeec/Kconfig
@@ -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"
diff --git a/src/ec/google/chromeec/acpi/battery.asl b/src/ec/google/chromeec/acpi/battery.asl
index f5047cbfd7..30fe0fce62 100644
--- a/src/ec/google/chromeec/acpi/battery.asl
+++ b/src/ec/google/chromeec/acpi/battery.asl
@@ -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
 //
-- 
cgit v1.2.3