diff options
author | Wolfgang Denk <wd@denx.de> | 2010-10-05 14:42:32 +0200 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2010-10-05 14:42:32 +0200 |
commit | d6288664743cdd4824cb877ca424619c827c1256 (patch) | |
tree | 3c6c64f71cd5a1bc3467ab722490de5b8e898405 /arch/blackfin/cpu/cmd_gpio.c | |
parent | db682a0b59b2e97b24275214f1837197a73fdb03 (diff) | |
parent | fcbd5b73d77e2e8103fdea0ff23f9c61cd7e7514 (diff) | |
download | u-boot-imx-d6288664743cdd4824cb877ca424619c827c1256.zip u-boot-imx-d6288664743cdd4824cb877ca424619c827c1256.tar.gz u-boot-imx-d6288664743cdd4824cb877ca424619c827c1256.tar.bz2 |
Merge branch 'master' of git://git.denx.de/u-boot-blackfin
Diffstat (limited to 'arch/blackfin/cpu/cmd_gpio.c')
-rw-r--r-- | arch/blackfin/cpu/cmd_gpio.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/arch/blackfin/cpu/cmd_gpio.c b/arch/blackfin/cpu/cmd_gpio.c index 4430c90..e96413b 100644 --- a/arch/blackfin/cpu/cmd_gpio.c +++ b/arch/blackfin/cpu/cmd_gpio.c @@ -8,6 +8,7 @@ #include <common.h> #include <command.h> +#include <linux/ctype.h> #include <asm/blackfin.h> #include <asm/gpio.h> @@ -45,8 +46,8 @@ int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) /* grab the [p]<port> portion */ ulong port_base; - if (*str_pin == 'p') ++str_pin; - switch (*str_pin) { + if (tolower(*str_pin) == 'p') ++str_pin; + switch (tolower(*str_pin)) { #ifdef GPIO_PA0 case 'a': port_base = GPIO_PA0; break; #endif @@ -90,29 +91,28 @@ int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) gpio_request(gpio, "cmd_gpio"); /* finally, let's do it: set direction and exec command */ + ulong value; if (sub_cmd == GPIO_INPUT) { gpio_direction_input(gpio); - printf("gpio: pin %lu on port %c set to input\n", pin, *str_pin); - return 0; - } - - ulong value; - switch (sub_cmd) { - case GPIO_SET: value = 1; break; - case GPIO_CLEAR: value = 0; break; - case GPIO_TOGGLE: value = !gpio_get_value(gpio); break; - default: goto show_usage; + value = gpio_get_value(gpio); + } else { + switch (sub_cmd) { + case GPIO_SET: value = 1; break; + case GPIO_CLEAR: value = 0; break; + case GPIO_TOGGLE: value = !gpio_get_value(gpio); break; + default: goto show_usage; + } + gpio_direction_output(gpio, value); } - gpio_direction_output(gpio, value); printf("gpio: pin %lu on port %c (gpio %lu) value is %lu\n", pin, *str_pin, gpio, value); gpio_free(gpio); - return 0; + return value; } U_BOOT_CMD(gpio, 3, 0, do_gpio, - "set/clear/toggle gpio output pins", - "<set|clear|toggle> <port><pin>\n" - " - set/clear/toggle the specified pin (e.g. PF10)"); + "input/set/clear/toggle gpio output pins", + "<input|set|clear|toggle> <port><pin>\n" + " - input/set/clear/toggle the specified pin (e.g. PF10)"); |