summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Dabros <jsd@semihalf.com>2021-08-13 13:41:50 +0200
committerCommit Bot <commit-bot@chromium.org>2021-08-25 17:45:25 +0000
commit533ecaa1932a70f1ad0e54fe7f9691532ba75e8e (patch)
treecd8ea6846e76a6183a985a5cb0ff005981fc9092
parent1fb7fe34512bb4f0b5f1187a234bb64183deac20 (diff)
downloadchrome-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.h1
-rw-r--r--board/servo_v4p1/usb_pd_policy.c14
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;
}