ec/google/chromeec: Add function to detect barrel charger
commit52136462413ff5bfb7b699fa8a820f5fcc804adc
authorSubrata Banik <subratabanik@google.com>
Wed, 25 Dec 2024 06:02:59 +0000 (25 11:32 +0530)
committerSubrata Banik <subratabanik@google.com>
Mon, 30 Dec 2024 04:09:23 +0000 (30 04:09 +0000)
tree9faafba96852983d34ff51afd8b45de5201be48d
parent5ef70e5f2233be3dfc14de9775d719c15d53aa35
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>
src/ec/google/chromeec/ec.c
src/ec/google/chromeec/ec.h