summaryrefslogtreecommitdiffstats
path: root/commands
diff options
context:
space:
mode:
Diffstat (limited to 'commands')
-rw-r--r--commands/gpio.c54
-rw-r--r--commands/mem.c3
-rw-r--r--commands/miitool.c2
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);