At present the gpio command only shows GPIOs which are marked as in use.
This makes sense with 'gpio status' since we already have the '-a' flag
to indicate that all GPIOs should be shown. But when a particular GPIO is
requested, it seems better to always display it. At present the request is
simply ignored.

For example if GPIO a10 is not in use, then:

   > gpio a10

shows nothing, not even the function being used for that GPIO. With this
change, it shows the pin status:

   > gpio a10
   a10: input: 0 [ ]

Add an extra parameter for this to avoid changing the existing flag
parameter.

Signed-off-by: Simon Glass <s...@chromium.org>
---

Changes in v2:
- Add an example to the commit message for clarity

 cmd/gpio.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/cmd/gpio.c b/cmd/gpio.c
index 4ac1f1e4180..539e07ee077 100644
--- a/cmd/gpio.c
+++ b/cmd/gpio.c
@@ -34,7 +34,7 @@ enum {
 };
 
 static void gpio_get_description(struct udevice *dev, const char *bank_name,
-                                int offset, int *flagsp)
+                                int offset, int *flagsp, bool show_all)
 {
        char buf[80];
        int ret;
@@ -42,7 +42,7 @@ static void gpio_get_description(struct udevice *dev, const 
char *bank_name,
        ret = gpio_get_function(dev, offset, NULL);
        if (ret < 0)
                goto err;
-       if (!(*flagsp & FLAG_SHOW_ALL) && ret == GPIOF_UNUSED)
+       if (!show_all && !(*flagsp & FLAG_SHOW_ALL) && ret == GPIOF_UNUSED)
                return;
        if ((*flagsp & FLAG_SHOW_BANK) && bank_name) {
                if (*flagsp & FLAG_SHOW_NEWLINE) {
@@ -98,11 +98,11 @@ static int do_gpio_status(bool all, const char *gpio_name)
                        if (gpio_name && *p) {
                                offset = simple_strtoul(p, NULL, 10);
                                gpio_get_description(dev, bank_name, offset,
-                                                    &flags);
+                                                    &flags, true);
                        } else {
                                for (offset = 0; offset < num_bits; offset++) {
                                        gpio_get_description(dev, bank_name,
-                                                            offset, &flags);
+                                                    offset, &flags, false);
                                }
                        }
                }
-- 
2.21.0.rc0.258.g878e2cd30e-goog

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to