summaryrefslogtreecommitdiff
path: root/board/ryu
diff options
context:
space:
mode:
authorTom Wai-Hong Tam <waihong@chromium.org>2015-08-21 02:32:41 +0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-27 01:49:25 +0000
commit38ddecb897578109525c38c89966059bf381ec4a (patch)
tree6e27bddfcec14e972c5bd2b9164ccc8f7b0c44ae /board/ryu
parent456d1baa25c7f98f6969b6c00fd3ff93ef926457 (diff)
downloadchrome-ec-38ddecb897578109525c38c89966059bf381ec4a.tar.gz
Ryu: Add a console command to control the buttons VolUp and VolDown
(cherry-pick back to ToT) FAFT needs these buttons (VolUp and VolDown) be controllable such that it can automate the firmware mode switching flows. It is done by EC overwriting the GPIO values such that AP can see the results. BRANCH=ToT,smaug BUG=None TEST=AP boots into the firmware menu screen. Run the following commands in EC console: > btnpress voldown 1 > btnpress voldown 0 # See the next option selected, like a real button pressed > btnpress volup 1 > btnpress volup 0 # Boot in the selected option, like a real button pressed > btnpress volup Button volup pressed = 0 Change-Id: I5e0b514d9986b8e5729ffd3560560d650669e0b7 Signed-off-by: Vic Yang <victoryang@google.com> Signed-off-by: Tom Wai-Hong Tam <waihong@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/294882 Reviewed-by: Randall Spangler <rspangler@chromium.org> (cherry picked from commit 77291b156d10f31dd059a4662aa249a8f8ea762e) Reviewed-on: https://chromium-review.googlesource.com/295162
Diffstat (limited to 'board/ryu')
-rw-r--r--board/ryu/board.c42
-rw-r--r--board/ryu/gpio.inc4
2 files changed, 44 insertions, 2 deletions
diff --git a/board/ryu/board.c b/board/ryu/board.c
index ed18f40a60..c38a9823da 100644
--- a/board/ryu/board.c
+++ b/board/ryu/board.c
@@ -561,3 +561,45 @@ static int host_event_status_host_cmd(struct host_cmd_handler_args *args)
}
DECLARE_HOST_COMMAND(EC_CMD_PD_HOST_EVENT_STATUS, host_event_status_host_cmd,
EC_VER_MASK(0));
+
+/****************************************************************************/
+/* Console commands */
+
+static int cmd_btn_press(int argc, char **argv)
+{
+ enum gpio_signal gpio;
+ char *e;
+ int v;
+
+ if (argc < 2)
+ return EC_ERROR_PARAM_COUNT;
+
+ if (!strcasecmp(argv[1], "volup"))
+ gpio = GPIO_BTN_VOLU_L;
+ else if (!strcasecmp(argv[1], "voldown"))
+ gpio = GPIO_BTN_VOLD_L;
+ else
+ return EC_ERROR_PARAM1;
+
+ if (argc < 3) {
+ /* Just reading */
+ ccprintf("Button %s pressed = %d\n", argv[1],
+ !gpio_get_level(gpio));
+ return EC_SUCCESS;
+ }
+
+ v = strtoi(argv[2], &e, 0);
+ if (*e)
+ return EC_ERROR_PARAM2;
+
+ if (v)
+ gpio_set_flags(gpio, GPIO_OUT_LOW);
+ else
+ gpio_set_flags(gpio, GPIO_INPUT | GPIO_PULL_UP);
+
+ return EC_SUCCESS;
+}
+DECLARE_CONSOLE_COMMAND(btnpress, cmd_btn_press,
+ "<volup|voldown> [0|1]",
+ "Simulate button press",
+ NULL);
diff --git a/board/ryu/gpio.inc b/board/ryu/gpio.inc
index 936c9a1bb0..5871bd9271 100644
--- a/board/ryu/gpio.inc
+++ b/board/ryu/gpio.inc
@@ -26,8 +26,8 @@ GPIO(CAM_SYNC_INT_L, PIN(C, 7), GPIO_INT_FALLING)
GPIO(COMPASS_DRDY, PIN(A, 8), GPIO_INPUT)
/* Buttons */
-GPIO(BTN_VOLD_L, PIN(C, 0), GPIO_INPUT | GPIO_PULL_UP)
-GPIO(BTN_VOLU_L, PIN(A, 2), GPIO_INPUT | GPIO_PULL_UP)
+GPIO(BTN_VOLD_L, PIN(C, 0), GPIO_ODR_HIGH | GPIO_PULL_UP)
+GPIO(BTN_VOLU_L, PIN(A, 2), GPIO_ODR_HIGH | GPIO_PULL_UP)
/* PD RX/TX */
GPIO(USBC_CC1_PD, PIN(A, 1), GPIO_ANALOG)