summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorJeremy Bettis <jbettis@google.com>2021-04-06 15:02:55 -0600
committerCommit Bot <commit-bot@chromium.org>2021-04-13 01:36:59 +0000
commit33d4fba9daf641d8f52171bc1a1de823a1afb650 (patch)
tree0f815ed6c8e4fe2e614e1c9bd30fe6a25fe52108 /common
parent882d9d5f607437f8be042df43730c5bdc8c7931e (diff)
downloadchrome-ec-33d4fba9daf641d8f52171bc1a1de823a1afb650.tar.gz
ec: Filter non-FIXED PDOs in servo_v4{p1}
Add a new config CONFIG_USB_PD_ONLY_FIXED_PDOS. If that config is enabled, ignore non-FIXED PDOs in both the console command `ada_srccaps` and also when selecting the preferred PDO for a voltage. Enable CONFIG_USB_PD_ONLY_FIXED_PDOS for servo_v4 and servo_v4p1, since they don't expose non-fixed PDO in their srccaps. Without this change, there is a risk that the "best" PDO for a given voltage will be non-FIXED and then that voltage just won't be supported at all. BRANCH=none BUG=b:178484932 TEST=added Change-Id: I0d1187ca372120c7fe21d627e1b82b59f6334add Signed-off-by: Jeremy Bettis <jbettis@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2809353 Tested-by: Jeremy Bettis <jbettis@chromium.org> Commit-Queue: Keith Short <keithshort@chromium.org> Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/usb_pd_dual_role.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/common/usb_pd_dual_role.c b/common/usb_pd_dual_role.c
index 2ad0b99125..3c6aff6adf 100644
--- a/common/usb_pd_dual_role.c
+++ b/common/usb_pd_dual_role.c
@@ -61,6 +61,9 @@ int pd_find_pdo_index(uint32_t src_cap_cnt, const uint32_t * const src_caps,
/* Get max power that is under our max voltage input */
for (i = 0; i < src_cap_cnt; i++) {
+ if (IS_ENABLED(CONFIG_USB_PD_ONLY_FIXED_PDOS) &&
+ (src_caps[i] & PDO_TYPE_MASK) != PDO_TYPE_FIXED)
+ continue;
/* its an unsupported Augmented PDO (PD3.0) */
if ((src_caps[i] & PDO_TYPE_MASK) == PDO_TYPE_AUGMENTED)
continue;