diff options
author | Eric Yilun Lin <yllin@chromium.org> | 2020-10-13 17:23:59 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-10-14 06:10:47 +0000 |
commit | 11053f40043229b98ab7cb6be0325ab483a5d9e5 (patch) | |
tree | 03a3dbe9982bc5469764eaaa75e63da24565ebe7 /board/servo_v4 | |
parent | d92edbd59772384512a7b4f5b513339880cd36b6 (diff) | |
download | chrome-ec-11053f40043229b98ab7cb6be0325ab483a5d9e5.tar.gz |
servo_v4,servo_v4p1: control acceptance of power and data swap
enable this command for more FAFT test coverage
BUG=b:139065787
TEST=on servo_v4, test that usbc_action prswap|drswap works as
expected
BRANCH=servo
Change-Id: I1b88d5c0ed00997e78d129633faf435e3cee61ac
Signed-off-by: Eric Yilun Lin <yllin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2467599
Reviewed-by: Wai-Hong Tam <waihong@google.com>
Diffstat (limited to 'board/servo_v4')
-rw-r--r-- | board/servo_v4/usb_pd_policy.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/board/servo_v4/usb_pd_policy.c b/board/servo_v4/usb_pd_policy.c index b87130fbc8..80cc154f2a 100644 --- a/board/servo_v4/usb_pd_policy.c +++ b/board/servo_v4/usb_pd_policy.c @@ -160,6 +160,9 @@ static int cc_pull_stored = TYPEC_CC_RD; static int user_limited_max_mv = 20000; +static uint8_t allow_pr_swap = 1; +static uint8_t allow_dr_swap = 1; + static uint32_t max_supported_voltage(void) { int board_max_mv = board_get_version() >= BOARD_VERSION_BLACK ? @@ -708,7 +711,7 @@ __override int pd_check_power_swap(int port) return 0; if (pd_snk_is_vbus_provided(CHG)) - return 1; + return allow_pr_swap; return 0; } @@ -723,7 +726,7 @@ __override int pd_check_data_swap(int port, if (port == CHG) return 0; - return 1; + return allow_dr_swap; } __override void pd_execute_data_swap(int port, @@ -1375,6 +1378,27 @@ static int cmd_usbc_action(int argc, char *argv[]) * Drop this message if when we phase out the usbc_role control. */ ccprintf("CHG SRC %dmV\n", user_limited_max_mv); + } else if (!strcasecmp(argv[1], "drswap")) { + if (argc == 2) { + CPRINTF("allow_dr_swap = %d\n", allow_dr_swap); + return EC_SUCCESS; + } + + if (argc != 3) + return EC_ERROR_PARAM2; + + allow_dr_swap = !!atoi(argv[2]); + + } else if (!strcasecmp(argv[1], "prswap")) { + if (argc == 2) { + CPRINTF("allow_pr_swap = %d\n", allow_pr_swap); + return EC_SUCCESS; + } + + if (argc != 3) + return EC_ERROR_PARAM2; + + allow_pr_swap = !!atoi(argv[2]); } else { return EC_ERROR_PARAM1; } @@ -1382,5 +1406,6 @@ static int cmd_usbc_action(int argc, char *argv[]) return EC_SUCCESS; } DECLARE_CONSOLE_COMMAND(usbc_action, cmd_usbc_action, - "5v|12v|20v|dev|pol0|pol1|drp|dp|chg x(x=voltage)", + "5v|12v|20v|dev|pol0|pol1|drp|dp|chg x(x=voltage)|" + "drswap [1|0]|prswap [1|0]", "Set Servo v4 type-C port state"); |