summaryrefslogtreecommitdiff
path: root/board/servo_v4
diff options
context:
space:
mode:
authorEric Yilun Lin <yllin@chromium.org>2020-10-13 17:23:59 +0800
committerCommit Bot <commit-bot@chromium.org>2020-10-14 06:10:47 +0000
commit11053f40043229b98ab7cb6be0325ab483a5d9e5 (patch)
tree03a3dbe9982bc5469764eaaa75e63da24565ebe7 /board/servo_v4
parentd92edbd59772384512a7b4f5b513339880cd36b6 (diff)
downloadchrome-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.c31
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");