diff options
author | Scott Collyer <scollyer@google.com> | 2021-06-22 12:33:32 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-07-08 21:39:39 +0000 |
commit | 42f5279c008f451db480716162d8cc5a657bc93a (patch) | |
tree | db7a6b7502afc22ad13868ad0a44fb10296c42e2 /common/usbc/usb_pd_dpm.c | |
parent | 77efdefdc384225861a83c3b1539339c103cd3b9 (diff) | |
download | chrome-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.c | 9 |
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; |