diff --git a/src/ec/google/chromeec/ec.c b/src/ec/google/chromeec/ec.c index af5c235309..4c1bbe7ed7 100644 --- a/src/ec/google/chromeec/ec.c +++ b/src/ec/google/chromeec/ec.c @@ -966,6 +966,25 @@ int google_chromeec_get_usb_pd_power_info(enum usb_chg_type *type, return 0; } +/* + * This API checks the current status of the USB-C port and returns + * whether a USB Power Delivery (PD) charger is currently connected. + */ +bool google_chromeec_is_usb_pd_attached(void) +{ + const struct ec_params_usb_pd_power_info params = { + .port = PD_POWER_CHARGING_PORT, + }; + struct ec_response_usb_pd_power_info resp = {}; + int rv; + + rv = ec_cmd_usb_pd_power_info(PLAT_EC, ¶ms, &resp); + if (rv != 0) + return false; + + return resp.type == USB_CHG_TYPE_PD; +} + 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 31c76714b9..cdea70f0b9 100644 --- a/src/ec/google/chromeec/ec.h +++ b/src/ec/google/chromeec/ec.h @@ -137,6 +137,9 @@ int google_chromeec_set_usb_pd_role(uint8_t port, enum usb_pd_control_role role) int google_chromeec_get_usb_pd_power_info(enum usb_chg_type *type, uint16_t *current_max, uint16_t *voltage_max); +/* Check if a USB Power Delivery (PD) charger is attached */ +bool google_chromeec_is_usb_pd_attached(void); + /* * Set max current and voltage of a dedicated charger. *