1 // SPDX-License-Identifier: GPL-2.0
11 #include <dm/uclass-internal.h>
13 static const char *const state_label[] = {
18 static int show_button_state(struct udevice *dev)
22 ret = button_get_state(dev);
23 if (ret >= BUTTON_COUNT)
26 printf("%s\n", state_label[ret]);
31 static int list_buttons(void)
36 for (uclass_find_first_device(UCLASS_BUTTON, &dev);
38 uclass_find_next_device(&dev)) {
39 struct button_uc_plat *plat = dev_get_uclass_plat(dev);
43 printf("%-15s ", plat->label);
44 if (device_active(dev)) {
45 ret = show_button_state(dev);
47 printf("Error %d\n", ret);
49 printf("<inactive>\n");
56 int do_button(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
58 const char *button_label;
62 /* Validate arguments */
65 button_label = argv[1];
66 if (strncmp(button_label, "list", 4) == 0)
67 return list_buttons();
69 ret = button_get_by_label(button_label, &dev);
71 printf("Button '%s' not found (err=%d)\n", button_label, ret);
72 return CMD_RET_FAILURE;
75 ret = show_button_state(dev);
81 button, 2, 1, do_button,
83 "<button_label> \tGet button state\n"
84 "button list\t\tShow a list of buttons"