summaryrefslogtreecommitdiff
path: root/common/gpio_commands.c
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2013-04-11 12:24:03 -0700
committerChromeBot <chrome-bot@google.com>2013-04-11 15:38:08 -0700
commitb9d0d9c60b2b826f37192f6ffb96b23f1c18d6de (patch)
treecd9fb5251d1b81ad6b155a1f1f017aeb9cd384d6 /common/gpio_commands.c
parent08f8c6857f28a71ca549a9d490717a6d44517c75 (diff)
downloadchrome-ec-b9d0d9c60b2b826f37192f6ffb96b23f1c18d6de.tar.gz
Move gpio_get_name() to gpio_common.c
Its implementation is the same on all platforms. No functional changes, just renaming/moving. BUG=chrome-os-partner:18343 BRANCH=none TEST=build all platforms Change-Id: I78741c6587ea61e7ac8edae5a509502b7ab5078b Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/47898 Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Diffstat (limited to 'common/gpio_commands.c')
-rw-r--r--common/gpio_commands.c180
1 files changed, 0 insertions, 180 deletions
diff --git a/common/gpio_commands.c b/common/gpio_commands.c
deleted file mode 100644
index e429bc09a9..0000000000
--- a/common/gpio_commands.c
+++ /dev/null
@@ -1,180 +0,0 @@
-/* Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-/* GPIO console commands for Chrome EC */
-
-#include "board.h"
-#include "console.h"
-#include "gpio.h"
-#include "host_command.h"
-#include "system.h"
-#include "util.h"
-
-static uint8_t last_val[(GPIO_COUNT + 7) / 8];
-
-/**
- * Find a GPIO signal by name.
- *
- * @param name Signal name to find
- *
- * @return the signal index, or GPIO_COUNT if no match.
- */
-static enum gpio_signal find_signal_by_name(const char *name)
-{
- const struct gpio_info *g = gpio_list;
- int i;
-
- if (!name || !*name)
- return GPIO_COUNT;
-
- for (i = 0; i < GPIO_COUNT; i++, g++) {
- if (!strcasecmp(name, g->name))
- return i;
- }
-
- return GPIO_COUNT;
-}
-
-/**
- * Update last_val
- *
- * @param i Index of last_val[] to update
- * @param v New value for last_val[i]
- *
- * @return 1 if last_val[i] was updated, 0 if last_val[i]==v.
- */
-static int last_val_changed(int i, int v)
-{
- if (v && !(last_val[i / 8] & (1 << (i % 8)))) {
- last_val[i / 8] |= 1 << (i % 8);
- return 1;
- } else if (!v && last_val[i / 8] & (1 << (i % 8))) {
- last_val[i / 8] &= ~(1 << (i % 8));
- return 1;
- } else {
- return 0;
- }
-}
-
-/*****************************************************************************/
-/* Console commands */
-
-static int command_gpio_get(int argc, char **argv)
-{
- const struct gpio_info *g = gpio_list;
- int changed, v, i;
-
- /* If a signal is specified, print only that one */
- if (argc == 2) {
- i = find_signal_by_name(argv[1]);
- if (i == GPIO_COUNT)
- return EC_ERROR_PARAM1;
- g = gpio_list + i;
- v = gpio_get_level(i);
- changed = last_val_changed(i, v);
- ccprintf(" %d%c %s\n", v, (changed ? '*' : ' '), g->name);
-
- return EC_SUCCESS;
- }
-
- /* Otherwise print them all */
- for (i = 0; i < GPIO_COUNT; i++, g++) {
- if (!g->mask)
- continue; /* Skip unsupported signals */
-
- v = gpio_get_level(i);
- changed = last_val_changed(i, v);
- ccprintf(" %d%c %s\n", v, (changed ? '*' : ' '), g->name);
-
- /* Flush console to avoid truncating output */
- cflush();
- }
- return EC_SUCCESS;
-}
-DECLARE_CONSOLE_COMMAND(gpioget, command_gpio_get,
- "[name]",
- "Read GPIO value(s)",
- NULL);
-
-static int command_gpio_set(int argc, char **argv)
-{
- const struct gpio_info *g;
- char *e;
- int v, i;
-
- if (argc < 3)
- return EC_ERROR_PARAM_COUNT;
-
- i = find_signal_by_name(argv[1]);
- if (i == GPIO_COUNT)
- return EC_ERROR_PARAM1;
- g = gpio_list + i;
-
- if (!g->mask)
- return EC_ERROR_PARAM1;
-
- if (!(g->flags & GPIO_OUTPUT))
- return EC_ERROR_PARAM1;
-
- v = strtoi(argv[2], &e, 0);
- if (*e)
- return EC_ERROR_PARAM2;
-
- gpio_set_level(i, v);
-
- return EC_SUCCESS;
-}
-DECLARE_CONSOLE_COMMAND(gpioset, command_gpio_set,
- "name <0 | 1>",
- "Set a GPIO",
- NULL);
-
-/*****************************************************************************/
-/* Host commands */
-
-static int gpio_command_get(struct host_cmd_handler_args *args)
-{
- const struct ec_params_gpio_get *p = args->params;
- struct ec_response_gpio_get *r = args->response;
- int i;
-
- if (system_is_locked())
- return EC_RES_ACCESS_DENIED;
-
- i = find_signal_by_name(p->name);
- if (i == GPIO_COUNT)
- return EC_RES_ERROR;
-
- r->val = gpio_get_level(i);
- args->response_size = sizeof(struct ec_response_gpio_get);
- return EC_RES_SUCCESS;
-}
-DECLARE_HOST_COMMAND(EC_CMD_GPIO_GET, gpio_command_get, EC_VER_MASK(0));
-
-static int gpio_command_set(struct host_cmd_handler_args *args)
-{
- const struct ec_params_gpio_set *p = args->params;
- const struct gpio_info *g;
- int i;
-
- if (system_is_locked())
- return EC_RES_ACCESS_DENIED;
-
- i = find_signal_by_name(p->name);
- if (i == GPIO_COUNT)
- return EC_RES_ERROR;
- g = gpio_list + i;
-
- if (!g->mask)
- return EC_RES_ERROR;
-
- if (!(g->flags & GPIO_OUTPUT))
- return EC_RES_ERROR;
-
- gpio_set_level(i, p->val);
-
- return EC_RES_SUCCESS;
-}
-DECLARE_HOST_COMMAND(EC_CMD_GPIO_SET, gpio_command_set, EC_VER_MASK(0));