ec/google/chromeec: Add function to detect barrel charger
This commit introduces a new function, google_chromeec_is_barrel_charger_present(), which checks if a barrel charger is present. The function uses the following logic to determine if a barrel charger is present: - If both a barrel charger and USB-C PD are present, then the barrel charger takes precedence over USB-C PD. As a result, google_chromeec_is_usb_pd_attached() will return false. This logic can be used to deterministically say if a barrel charger is present even when both a barrel charger and USB-C PD are attached. - If an AC charger is detected and USB-C PD is not present, then a barrel charger must be present. This change allows the EC to accurately detect the presence of a barrel charger, even when a USB-C PD charger is also attached. BUG=b:377798581 TEST=Able to read the charger status correctly while booting google/fatcat. Experiment #1: - USB-C PD Attached = yes - Barrel Attached = No - Charger Detected = Yes ``` fatcat-rev257 ~ # cbmem -c | grep -5 "ac_charger_present" [INFO ] ac_charger_present: yes [INFO ] usb_pd_present: yes [INFO ] baseboard_devtree_update: Barrel Absent ``` Experiment #2: - USB-C PD Attached = No - Barrel Attached = Yes - Charger Detected = Yes ``` [INFO ] ac_charger_present: yes [INFO ] usb_pd_present: no [INFO ] baseboard_devtree_update: Barrel Present ``` Experiment #3: - USB-C PD Attached = Yes - Barrel Attached = Yes - Charger Detected = Yes ``` [INFO ] ac_charger_present: yes [INFO ] usb_pd_present: no [INFO ] baseboard_devtree_update: Barrel Present ``` Experiment #4: - USB-C PD Attached = No - Barrel Attached = No - Charger Detected = No ``` [INFO ] ac_charger_present: no [INFO ] usb_pd_present: no [INFO ] baseboard_devtree_update: Barrel Absent ``` Change-Id: I9644f0dec057f95bb0a22cdc18edc1a0234ee3a9 Signed-off-by: Subrata Banik <subratabanik@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/85765 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Jérémy Compostella <jeremy.compostella@intel.com>
This commit is contained in:
parent
5ef70e5f22
commit
5213646241
2 changed files with 32 additions and 0 deletions
|
|
@ -1002,6 +1002,30 @@ bool google_chromeec_is_charger_present(void)
|
|||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Using below scenarios to conclude if device has a barrel charger attached.
|
||||
* +-----------+-----------------+------------------+---------------------------------+
|
||||
* | Scenarios | Charger Present | USB-C PD Present | Conclusion: Barrel Present ? |
|
||||
* +-----------+-----------------+------------------+---------------------------------+
|
||||
* | #1 | Yes | Yes | Non Conclusive (comments below) |
|
||||
* | #2 | No | Yes | Not possible |
|
||||
* | #3 | Yes | No | Must be barrel charger |
|
||||
* | #4 | No | No | Barrel not present |
|
||||
* +-----------+-----------------+------------------+---------------------------------+
|
||||
*/
|
||||
bool google_chromeec_is_barrel_charger_present(void)
|
||||
{
|
||||
/*
|
||||
* If both the barrel charger and USB-C PD are connected, the barrel charger takes
|
||||
* precedence over USB-C PD. This means google_chromeec_is_usb_pd_attached()
|
||||
* will return false in such a scenario.
|
||||
*
|
||||
* This behavior allows us to reliably detect the presence of a barrel
|
||||
* charger, even when a USB-C PD charger is also connected.
|
||||
*/
|
||||
return google_chromeec_is_charger_present() && !google_chromeec_is_usb_pd_attached();
|
||||
}
|
||||
|
||||
int google_chromeec_override_dedicated_charger_limit(uint16_t current_lim,
|
||||
uint16_t voltage_lim)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -148,6 +148,14 @@ bool google_chromeec_is_usb_pd_attached(void);
|
|||
*/
|
||||
bool google_chromeec_is_charger_present(void);
|
||||
|
||||
/**
|
||||
* Check if barrel charger is present.
|
||||
*
|
||||
* @return true: if the barrel charger is present
|
||||
* false: if the barrel charger is not present
|
||||
*/
|
||||
bool google_chromeec_is_barrel_charger_present(void);
|
||||
|
||||
/*
|
||||
* Set max current and voltage of a dedicated charger.
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue