summaryrefslogtreecommitdiff
path: root/common/usbc/usb_pd_dpm.c
diff options
context:
space:
mode:
authorScott Collyer <scollyer@google.com>2021-06-22 12:33:32 -0700
committerCommit Bot <commit-bot@chromium.org>2021-07-08 21:39:39 +0000
commit42f5279c008f451db480716162d8cc5a657bc93a (patch)
treedb7a6b7502afc22ad13868ad0a44fb10296c42e2 /common/usbc/usb_pd_dpm.c
parent77efdefdc384225861a83c3b1539339c103cd3b9 (diff)
downloadchrome-ec-42f5279c008f451db480716162d8cc5a657bc93a.tar.gz
TCPMv2: Add new override function for getting default Rp
This CL addes a new overridable function typec_get_default_current_limit_rp() which is used in place of CONFIG_USB_PD_PULLUP to retrieve the correct Rp value to reflect the current limit. This functionality is required for boards which are not per port symmetric. Unless this function if overridden in a board/basebard specific file, there is no change in functionality from present design. BUG=b:191793195 BRANCH=quiche TEST=verfied on Gingerbread that Rp = 3.0A is selected for C0 and Rp = 1.5A is selected for port C1. Signed-off-by: Scott Collyer <scollyer@google.com> Change-Id: I9ec9daa563f6b4f551b4890ae7a56767f7c26764 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2980435 Commit-Queue: Scott Collyer <scollyer@chromium.org> Tested-by: Scott Collyer <scollyer@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org> Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
Diffstat (limited to 'common/usbc/usb_pd_dpm.c')
-rw-r--r--common/usbc/usb_pd_dpm.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/common/usbc/usb_pd_dpm.c b/common/usbc/usb_pd_dpm.c
index c630d543da..734ad4e95d 100644
--- a/common/usbc/usb_pd_dpm.c
+++ b/common/usbc/usb_pd_dpm.c
@@ -498,7 +498,7 @@ static void balance_source_ports(void)
int rem_non_pd = LOWEST_PORT(non_pd_sink_max_requested &
max_current_claimed);
typec_select_src_current_limit_rp(rem_non_pd,
- CONFIG_USB_PD_PULLUP);
+ typec_get_default_current_limit_rp(rem_non_pd));
max_current_claimed &= ~BIT(rem_non_pd);
/* Wait tSinkAdj before using current */
@@ -539,7 +539,7 @@ static void balance_source_ports(void)
int rem_non_pd = LOWEST_PORT(non_pd_sink_max_requested &
max_current_claimed);
typec_select_src_current_limit_rp(rem_non_pd,
- CONFIG_USB_PD_PULLUP);
+ typec_get_default_current_limit_rp(rem_non_pd));
max_current_claimed &= ~BIT(rem_non_pd);
/* Wait tSinkAdj before using current */
@@ -647,7 +647,8 @@ void dpm_remove_sink(int port)
atomic_clear_bits(&non_pd_sink_max_requested, BIT(port));
/* Restore selected default Rp on the port */
- typec_select_src_current_limit_rp(port, CONFIG_USB_PD_PULLUP);
+ typec_select_src_current_limit_rp(port,
+ typec_get_default_current_limit_rp(port));
balance_source_ports();
}
@@ -694,7 +695,7 @@ int dpm_get_source_current(const int port)
if (max_current_claimed & BIT(port))
return 3000;
- else if (CONFIG_USB_PD_PULLUP == TYPEC_RP_1A5)
+ else if (typec_get_default_current_limit_rp(port) == TYPEC_RP_1A5)
return 1500;
else
return 500;