diff options
author | Tom Rini <trini@konsulko.com> | 2020-02-07 19:04:23 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-02-07 19:04:23 -0500 |
commit | e1dff2d69e5a21a61c3eb28e5d230a6d48749b6c (patch) | |
tree | ad59579dca2cf8f166390d0a65bca7ea7b7610cb /cmd/gpio.c | |
parent | 96ff825d31ae9a1410600f002731047c3c2de8b1 (diff) | |
parent | 7d706a886fdd99e76a1123a8fefbe060fd11bebb (diff) |
Merge branch '2020-02-07-master-imports'
- 2 FAT fixes.
- MediaTek ethernet support improvement.
- Initial Cortina Access CAxxxx family support.
- Correct return value of do_gpio() and so gpio shell command.
Diffstat (limited to 'cmd/gpio.c')
-rw-r--r-- | cmd/gpio.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/cmd/gpio.c b/cmd/gpio.c index eff36ab2af3..67eef83c951 100644 --- a/cmd/gpio.c +++ b/cmd/gpio.c @@ -223,23 +223,35 @@ static int do_gpio(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) gpio_direction_output(gpio, value); } printf("gpio: pin %s (gpio %u) value is ", str_gpio, gpio); - if (IS_ERR_VALUE(value)) + + if (IS_ERR_VALUE(value)) { printf("unknown (ret=%d)\n", value); - else + goto err; + } else { printf("%d\n", value); + } + if (sub_cmd != GPIOC_INPUT && !IS_ERR_VALUE(value)) { int nval = gpio_get_value(gpio); - if (IS_ERR_VALUE(nval)) + if (IS_ERR_VALUE(nval)) { printf(" Warning: no access to GPIO output value\n"); - else if (nval != value) + goto err; + } else if (nval != value) { printf(" Warning: value of pin is still %d\n", nval); + goto err; + } } if (ret != -EBUSY) gpio_free(gpio); - return value; + return CMD_RET_SUCCESS; + +err: + if (ret != -EBUSY) + gpio_free(gpio); + return CMD_RET_FAILURE; } U_BOOT_CMD(gpio, 4, 0, do_gpio, |