diff options
author | Vic Yang <victoryang@chromium.org> | 2014-07-22 11:44:42 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-07-28 21:53:17 +0000 |
commit | 3a033a2bbf0ba6a28c4c7b56ea02b5f3b624e3f4 (patch) | |
tree | 00ee2f46304c9d1a59bcf9934fb78b1a432af598 /board/plankton/board.c | |
parent | 537432085a3e818cff99ce82efdaa92f3fd11c1c (diff) | |
download | chrome-ec-3a033a2bbf0ba6a28c4c7b56ea02b5f3b624e3f4.tar.gz |
Plankton: console command for USB-C port control
The console commands will be used by the test host to control USB-C
port.
BUG=None
BRANCH=None
TEST=Manually verify the console command are working.
Change-Id: I4b229d9486bd970f6b73e9166ae1cb137d3530c6
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/209347
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Tested-by: Alec Berg <alecaberg@chromium.org>
Commit-Queue: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'board/plankton/board.c')
-rw-r--r-- | board/plankton/board.c | 91 |
1 files changed, 83 insertions, 8 deletions
diff --git a/board/plankton/board.c b/board/plankton/board.c index 80f5bc4a9c..79ea23147c 100644 --- a/board/plankton/board.c +++ b/board/plankton/board.c @@ -23,6 +23,48 @@ static enum gpio_signal button_pressed; +enum usbc_action { + USBC_ACT_5V_TO_DUT, + USBC_ACT_12V_TO_DUT, + USBC_ACT_DEVICE, + USBC_ACT_USB_EN, + USBC_ACT_DP_EN, + USBC_ACT_CABLE_FLIP, + USBC_ACT_CABLE_POLARITY0, + USBC_ACT_CABLE_POLARITY1, +}; + +static void set_usbc_action(enum usbc_action act) +{ + switch (act) { + case USBC_ACT_5V_TO_DUT: /* TODO: Force 5V */ + case USBC_ACT_12V_TO_DUT: + pd_set_dual_role(PD_DRP_FORCE_SOURCE); + break; + case USBC_ACT_DEVICE: + pd_set_dual_role(PD_DRP_FORCE_SINK); + break; + case USBC_ACT_USB_EN: + gpio_set_level(GPIO_USBC_SS_USB_MODE, 1); + break; + case USBC_ACT_DP_EN: + gpio_set_level(GPIO_USBC_SS_USB_MODE, 0); + break; + case USBC_ACT_CABLE_FLIP: + gpio_set_level(GPIO_USBC_DP_POLARITY, + !gpio_get_level(GPIO_USBC_DP_POLARITY)); + break; + case USBC_ACT_CABLE_POLARITY0: + gpio_set_level(GPIO_USBC_DP_POLARITY, 0); + break; + case USBC_ACT_CABLE_POLARITY1: + gpio_set_level(GPIO_USBC_DP_POLARITY, 1); + break; + default: + break; + } +} + /* Handle debounced button press */ static void button_deferred(void) { @@ -36,23 +78,22 @@ static void button_deferred(void) switch (button_pressed) { case GPIO_DBG_5V_TO_DUT_L: + set_usbc_action(USBC_ACT_5V_TO_DUT); + break; case GPIO_DBG_12V_TO_DUT_L: - pd_set_dual_role(PD_DRP_FORCE_SOURCE); + set_usbc_action(USBC_ACT_12V_TO_DUT); break; case GPIO_DBG_CHG_TO_DEV_L: - pd_set_dual_role(PD_DRP_FORCE_SINK); + set_usbc_action(USBC_ACT_DEVICE); break; - case GPIO_DBG_USB_EN_L: - gpio_set_level(GPIO_USBC_SS_USB_MODE, 1); + set_usbc_action(USBC_ACT_USB_EN); break; case GPIO_DBG_DP_EN_L: - gpio_set_level(GPIO_USBC_SS_USB_MODE, 0); + set_usbc_action(USBC_ACT_DP_EN); break; - case GPIO_DBG_CABLE_FLIP_L: - gpio_set_level(GPIO_USBC_DP_POLARITY, - !gpio_get_level(GPIO_USBC_DP_POLARITY)); + set_usbc_action(USBC_ACT_CABLE_FLIP); break; default: break; @@ -108,3 +149,37 @@ static void board_init(void) } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); +static int cmd_usbc_action(int argc, char *argv[]) +{ + enum usbc_action act; + + if (argc != 2) + return EC_ERROR_PARAM_COUNT; + + if (!strcasecmp(argv[1], "5v")) + act = USBC_ACT_5V_TO_DUT; + else if (!strcasecmp(argv[1], "12v")) + act = USBC_ACT_12V_TO_DUT; + else if (!strcasecmp(argv[1], "dev")) + act = USBC_ACT_DEVICE; + else if (!strcasecmp(argv[1], "usb")) + act = USBC_ACT_USB_EN; + else if (!strcasecmp(argv[1], "dp")) + act = USBC_ACT_DP_EN; + else if (!strcasecmp(argv[1], "flip")) + act = USBC_ACT_CABLE_FLIP; + else if (!strcasecmp(argv[1], "pol0")) + act = USBC_ACT_CABLE_POLARITY0; + else if (!strcasecmp(argv[1], "pol1")) + act = USBC_ACT_CABLE_POLARITY1; + else + return EC_ERROR_PARAM1; + + set_usbc_action(act); + + return EC_SUCCESS; +} +DECLARE_CONSOLE_COMMAND(usbc_action, cmd_usbc_action, + "<5v | 12v | dev | usb | dp | flip | pol0 | pol1>", + "Set Plankton type-C port state", + NULL); |