diff options
author | Jan Dabros <jsd@semihalf.com> | 2021-08-13 13:41:50 +0200 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-08-25 17:45:25 +0000 |
commit | 533ecaa1932a70f1ad0e54fe7f9691532ba75e8e (patch) | |
tree | cd8ea6846e76a6183a985a5cb0ff005981fc9092 | |
parent | 1fb7fe34512bb4f0b5f1187a234bb64183deac20 (diff) | |
download | chrome-ec-533ecaa1932a70f1ad0e54fe7f9691532ba75e8e.tar.gz |
servo_v4p1: Initial support for FASTBOOT handling
Hardware support for FASTBOOT is in place, however servo_v4p1 is
currently not exposing an API for servod. Along with improvement for
correct DATA_ROLE handling on servo_v4p1 (in consecutive patch), add
a knob for enabling FASTBOOT.
It is necessary to add complete sequence when enabling FASTBOOT - that
is changing servo DATA_ROLE to DFP. This work will be done in the
future.
BUG=b:137887386
BRANCH=main
TEST=Conduct test from consecutive patch
Signed-off-by: Jan Dabros <jsd@semihalf.com>
Change-Id: I6cb53ebc9b412002db750b58d04170060478ebd4
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3094248
Reviewed-by: Wai-Hong Tam <waihong@google.com>
Commit-Queue: Wai-Hong Tam <waihong@google.com>
-rw-r--r-- | board/servo_v4p1/usb_pd_config.h | 1 | ||||
-rw-r--r-- | board/servo_v4p1/usb_pd_policy.c | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/board/servo_v4p1/usb_pd_config.h b/board/servo_v4p1/usb_pd_config.h index baf2914727..63fb6b5728 100644 --- a/board/servo_v4p1/usb_pd_config.h +++ b/board/servo_v4p1/usb_pd_config.h @@ -57,6 +57,7 @@ * Emulate Electronically Marked Cable Assembly * (EMCA) servo (or non-EMCA) */ +#define CC_FASTBOOT_DFP BIT(7) /* Allow mux uServo->Fastboot on DFP */ /* Servo v4 DP alt-mode configuration */ #define ALT_DP_ENABLE BIT(0) /* Enable DP alt-mode or not */ diff --git a/board/servo_v4p1/usb_pd_policy.c b/board/servo_v4p1/usb_pd_policy.c index 88e1a51b33..e24e9dc266 100644 --- a/board/servo_v4p1/usb_pd_policy.c +++ b/board/servo_v4p1/usb_pd_policy.c @@ -1456,6 +1456,20 @@ static int cmd_usbc_action(int argc, char *argv[]) return EC_ERROR_PARAM2; allow_pr_swap = !!atoi(argv[2]); + } else if (!strcasecmp(argv[1], "fastboot")) { + if (argc == 2) { + CPRINTF("fastboot = %d\n", + !!(cc_config & CC_FASTBOOT_DFP)); + return EC_SUCCESS; + } + + if (argc != 3) + return EC_ERROR_PARAM2; + + if (!!atoi(argv[2])) + cc_config |= CC_FASTBOOT_DFP; + else + cc_config &= ~CC_FASTBOOT_DFP; } else { return EC_ERROR_PARAM1; } |