summaryrefslogtreecommitdiff
path: root/board/plankton/board.c
diff options
context:
space:
mode:
authorVic Yang <victoryang@chromium.org>2014-07-22 11:44:42 -0700
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2014-07-28 21:53:17 +0000
commit3a033a2bbf0ba6a28c4c7b56ea02b5f3b624e3f4 (patch)
tree00ee2f46304c9d1a59bcf9934fb78b1a432af598 /board/plankton/board.c
parent537432085a3e818cff99ce82efdaa92f3fd11c1c (diff)
downloadchrome-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.c91
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);