diff options
Diffstat (limited to 'commands')
-rw-r--r-- | commands/gpio.c | 54 | ||||
-rw-r--r-- | commands/mem.c | 3 | ||||
-rw-r--r-- | commands/miitool.c | 2 |
3 files changed, 38 insertions, 21 deletions
diff --git a/commands/gpio.c b/commands/gpio.c index 08ecc152d9..951ad2c285 100644 --- a/commands/gpio.c +++ b/commands/gpio.c @@ -16,14 +16,35 @@ #include <errno.h> #include <gpio.h> -static int do_gpio_get_value(int argc, char *argv[]) +static int get_gpio_and_value(int argc, char *argv[], + int *gpio, int *value) { - int gpio, value; + const int count = value ? 3 : 2; + int ret = 0; - if (argc < 2) + if (argc < count) return COMMAND_ERROR_USAGE; - gpio = simple_strtoul(argv[1], NULL, 0); + *gpio = gpio_find_by_label(argv[1]); + if (*gpio < 0) { + ret = kstrtoint(argv[1], 0, gpio); + if (ret < 0) + return ret; + } + + if (value) + ret = kstrtoint(argv[2], 0, value); + + return ret; +} + +static int do_gpio_get_value(int argc, char *argv[]) +{ + int gpio, value, ret; + + ret = get_gpio_and_value(argc, argv, &gpio, NULL); + if (ret) + return ret; value = gpio_get_value(gpio); if (value < 0) @@ -41,13 +62,11 @@ BAREBOX_CMD_END static int do_gpio_set_value(int argc, char *argv[]) { - int gpio, value; - - if (argc < 3) - return COMMAND_ERROR_USAGE; + int gpio, value, ret; - gpio = simple_strtoul(argv[1], NULL, 0); - value = simple_strtoul(argv[2], NULL, 0); + ret = get_gpio_and_value(argc, argv, &gpio, &value); + if (ret) + return ret; gpio_set_value(gpio, value); @@ -65,10 +84,9 @@ static int do_gpio_direction_input(int argc, char *argv[]) { int gpio, ret; - if (argc < 2) - return COMMAND_ERROR_USAGE; - - gpio = simple_strtoul(argv[1], NULL, 0); + ret = get_gpio_and_value(argc, argv, &gpio, NULL); + if (ret) + return ret; ret = gpio_direction_input(gpio); if (ret) @@ -88,11 +106,9 @@ static int do_gpio_direction_output(int argc, char *argv[]) { int gpio, value, ret; - if (argc < 3) - return COMMAND_ERROR_USAGE; - - gpio = simple_strtoul(argv[1], NULL, 0); - value = simple_strtoul(argv[2], NULL, 0); + ret = get_gpio_and_value(argc, argv, &gpio, &value); + if (ret) + return ret; ret = gpio_direction_output(gpio, value); if (ret) diff --git a/commands/mem.c b/commands/mem.c index eb91ade05a..cdd7a492d0 100644 --- a/commands/mem.c +++ b/commands/mem.c @@ -96,7 +96,8 @@ static int mem_probe(struct device_d *dev) dev->priv = cdev; cdev->name = (char*)dev->resource[0].name; - cdev->size = (unsigned long)resource_size(&dev->resource[0]); + cdev->size = min(resource_size(&dev->resource[0]), + (unsigned long long)S64_MAX); cdev->ops = &memops; cdev->dev = dev; diff --git a/commands/miitool.c b/commands/miitool.c index dea4f853ce..acf61421b8 100644 --- a/commands/miitool.c +++ b/commands/miitool.c @@ -115,7 +115,7 @@ static int show_basic_mii(struct mii_bus *mii, struct phy_device *phydev, for (i = 0; i < 32; i++) mii_val[i] = mii->read(mii, phydev->addr, i); - printf((mii->parent->id) < 0 ? "%s: %s:" : "%s: %s%d: ", + printf((mii->parent->id) < 0 ? "%s: %s: " : "%s: %s%d: ", phydev->cdev.name, mii->parent->name, mii->parent->id); |