The gpio_from_string() call shall parse the incoming GPIO name taken from the command line and return the GPIO number used within U-Boot or return -1 on error.
The gpio_to_string() on the other hand allows nicer reporting of GPIO name in the output of cmd_gpio. Signed-off-by: Marek Vasut <ma...@denx.de> Cc: Detlev Zundel <d...@denx.de> Cc: Mike Frysinger <vap...@gentoo.org> Cc: Stefano Babic <sba...@denx.de> --- common/cmd_gpio.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/common/cmd_gpio.c b/common/cmd_gpio.c index 47eee89..12870ef 100644 --- a/common/cmd_gpio.c +++ b/common/cmd_gpio.c @@ -15,6 +15,22 @@ #define name_to_gpio(name) simple_strtoul(name, NULL, 10) #endif +int __gpio_from_string(const char *name) +{ + return name_to_gpio(name); +} + +int gpio_from_string(const char *name) + __attribute__((weak, alias("__gpio_from_string"))); + +int __gpio_to_string(int gpio, char *buf, int buflen) +{ + return 0; +} + +int gpio_to_string(int gpio, char *buf, int buflen) + __attribute__((weak, alias("__gpio_from_string"))); + enum gpio_cmd { GPIO_INPUT, GPIO_SET, @@ -27,7 +43,9 @@ static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) int gpio; enum gpio_cmd sub_cmd; ulong value; - const char *str_cmd, *str_gpio; + const char *str_cmd; + char str_gpio[16] = { 0 }; + int ret; #ifdef gpio_status if (argc == 2 && !strcmp(argv[1], "status")) { @@ -40,7 +58,6 @@ static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) show_usage: return CMD_RET_USAGE; str_cmd = argv[1]; - str_gpio = argv[2]; /* parse the behavior */ switch (*str_cmd) { @@ -52,7 +69,7 @@ static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } /* turn the gpio name into a gpio number */ - gpio = name_to_gpio(str_gpio); + gpio = gpio_from_string(argv[2]); if (gpio < 0) goto show_usage; @@ -75,8 +92,10 @@ static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) } gpio_direction_output(gpio, value); } + + ret = gpio_to_string(gpio, str_gpio, sizeof(str_gpio)); printf("gpio: pin %s (gpio %i) value is %lu\n", - str_gpio, gpio, value); + ret ? str_gpio : argv[2], gpio, value); gpio_free(gpio); -- 1.7.10 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot