diff options
| author | Tom Rini <trini@konsulko.com> | 2020-07-29 21:16:08 -0400 |
|---|---|---|
| committer | Tom Rini <trini@konsulko.com> | 2020-07-29 21:16:08 -0400 |
| commit | 719f42190d5f0238cb01ef2ffba8af2285f7bc7a (patch) | |
| tree | c789716a82ab552e0d0c1a9242fda7c41b04c238 /cmd | |
| parent | 7cb2060b4e63a89c50739dc8a9fcd5d73f86f0be (diff) | |
| parent | b9390ce51cb46f4b4acda320e7ea8e0bd120e4b8 (diff) | |
Merge tag 'dm-pull-28jul20' of git://git.denx.de/u-boot-dm
Use binman instead of one of the Rockchip build scripts
Refactor to allow any arch to create SPI-flash images
New button uclass
Diffstat (limited to 'cmd')
| -rw-r--r-- | cmd/Kconfig | 11 | ||||
| -rw-r--r-- | cmd/Makefile | 1 | ||||
| -rw-r--r-- | cmd/button.c | 86 | ||||
| -rw-r--r-- | cmd/host.c | 2 |
4 files changed, 99 insertions, 1 deletions
diff --git a/cmd/Kconfig b/cmd/Kconfig index e2b0a4fbc0..bea2ddf830 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -1680,6 +1680,17 @@ config CMD_BLOCK_CACHE during development, but also allows the cache to be disabled when it might hurt performance (e.g. when using the ums command). +config CMD_BUTTON + bool "button" + depends on BUTTON + default y if BUTTON + help + Enable the 'button' command which allows to get the status of + buttons supported by the board. The buttonss can be listed with + 'button list' and state can be known with 'button <label>'. + Any button drivers can be controlled with this command, e.g. + button_gpio. + config CMD_CACHE bool "icache or dcache" help diff --git a/cmd/Makefile b/cmd/Makefile index 7952138dc2..6e0086ba07 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -33,6 +33,7 @@ obj-$(CONFIG_CMD_BOOTSTAGE) += bootstage.o obj-$(CONFIG_CMD_BOOTZ) += bootz.o obj-$(CONFIG_CMD_BOOTI) += booti.o obj-$(CONFIG_CMD_BTRFS) += btrfs.o +obj-$(CONFIG_CMD_BUTTON) += button.o obj-$(CONFIG_CMD_CACHE) += cache.o obj-$(CONFIG_CMD_CBFS) += cbfs.o obj-$(CONFIG_CMD_CLK) += clk.o diff --git a/cmd/button.c b/cmd/button.c new file mode 100644 index 0000000000..84ad1653c7 --- /dev/null +++ b/cmd/button.c @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2020 Philippe Reynes <philippe.reynes@softathome.com> + * + * Based on led.c + */ + +#include <common.h> +#include <command.h> +#include <dm.h> +#include <button.h> +#include <dm/uclass-internal.h> + +static const char *const state_label[] = { + [BUTTON_OFF] = "off", + [BUTTON_ON] = "on", +}; + +static int show_button_state(struct udevice *dev) +{ + int ret; + + ret = button_get_state(dev); + if (ret >= BUTTON_COUNT) + ret = -EINVAL; + if (ret >= 0) + printf("%s\n", state_label[ret]); + + return ret; +} + +static int list_buttons(void) +{ + struct udevice *dev; + int ret; + + for (uclass_find_first_device(UCLASS_BUTTON, &dev); + dev; + uclass_find_next_device(&dev)) { + struct button_uc_plat *plat = dev_get_uclass_platdata(dev); + + if (!plat->label) + continue; + printf("%-15s ", plat->label); + if (device_active(dev)) { + ret = show_button_state(dev); + if (ret < 0) + printf("Error %d\n", ret); + } else { + printf("<inactive>\n"); + } + } + + return 0; +} + +int do_button(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) +{ + const char *button_label; + struct udevice *dev; + int ret; + + /* Validate arguments */ + if (argc < 2) + return CMD_RET_USAGE; + button_label = argv[1]; + if (strncmp(button_label, "list", 4) == 0) + return list_buttons(); + + ret = button_get_by_label(button_label, &dev); + if (ret) { + printf("Button '%s' not found (err=%d)\n", button_label, ret); + return CMD_RET_FAILURE; + } + + ret = show_button_state(dev); + + return 0; +} + +U_BOOT_CMD( + button, 4, 1, do_button, + "manage buttons", + "<button_label> \tGet button state\n" + "button list\t\tShow a list of buttons" +); diff --git a/cmd/host.c b/cmd/host.c index cd9c9677f0..ff119da738 100644 --- a/cmd/host.c +++ b/cmd/host.c @@ -51,7 +51,7 @@ static int do_host_bind(struct cmd_tbl *cmdtp, int flag, int argc, printf("** Bad device specification %s **\n", dev_str); return CMD_RET_USAGE; } - return host_dev_bind(dev, file); + return !!host_dev_bind(dev, file); } static int do_host_info(struct cmd_tbl *cmdtp, int flag, int argc, |
