From 42fd35b4860e99ed9bef664544a307557dd5a833 Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Tue, 24 Dec 2024 18:02:06 +0000 Subject: [PATCH] ec/google/chromeec: Add API to check if charger is present MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch introduces a new API, `google_chromeec_is_charger_present()`, to determine if a charger is connected. The API leverages the existing `ec_cmd_battery_get_dynamic()` command to retrieve battery flags and checks the `EC_BATT_FLAG_AC_PRESENT` flag to ascertain charger presence. Other components can leverage this API to query the charger status, which is particularly useful for distinguishing between barrel chargers and USB-C chargers after relying on the `google_chromeec_is_usb_pd_attached()` API. BUG=b:377798581 TEST=Able to read the charger status (w/ barrel and/or w/ USB-PD) correctly while booting google/fatcat. Change-Id: Iadf81400f71a51c093f71fe995cacc107c50c7af Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/c/coreboot/+/85758 Reviewed-by: Jérémy Compostella Reviewed-by: Kapil Porwal Tested-by: build bot (Jenkins) --- src/ec/google/chromeec/ec.c | 17 +++++++++++++++++ src/ec/google/chromeec/ec.h | 8 ++++++++ 2 files changed, 25 insertions(+) diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c index 4c1bbe7ed7..8c80a3f0dc 100644 --- a/src/ec/google/chromeec/ec.c +++ b/src/ec/google/chromeec/ec.c @@ -985,6 +985,23 @@ bool google_chromeec_is_usb_pd_attached(void) return resp.type == USB_CHG_TYPE_PD; } +/* This API checks if charger is present. */ +bool google_chromeec_is_charger_present(void) +{ + struct ec_params_battery_dynamic_info params = { + .index = 0, + }; + struct ec_response_battery_dynamic_info resp; + + if (ec_cmd_battery_get_dynamic(PLAT_EC, ¶ms, &resp) == 0) { + /* Check if AC charger is present */ + if (resp.flags & EC_BATT_FLAG_AC_PRESENT) + return true; + } + + return false; +} + int google_chromeec_override_dedicated_charger_limit(uint16_t current_lim, uint16_t voltage_lim) { diff --git a/src/ec/google/chromeec/ec.h b/src/ec/google/chromeec/ec.h index cdea70f0b9..afb1485f14 100644 --- a/src/ec/google/chromeec/ec.h +++ b/src/ec/google/chromeec/ec.h @@ -140,6 +140,14 @@ int google_chromeec_get_usb_pd_power_info(enum usb_chg_type *type, /* Check if a USB Power Delivery (PD) charger is attached */ bool google_chromeec_is_usb_pd_attached(void); +/** + * Check if charger is present. + * + * @return true: if the charger is present + * false: if the charger is not present + */ +bool google_chromeec_is_charger_present(void); + /* * Set max current and voltage of a dedicated charger. *