gpiolib: Refactor gpiolib_dbg_show() with help of for_each_gpio_desc()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 8 Apr 2022 18:18:52 +0000 (21:18 +0300)
committerBartosz Golaszewski <brgl@bgdev.pl>
Sat, 9 Apr 2022 20:38:43 +0000 (22:38 +0200)
Use for_each_gpio_desc() and since we would need to touch the entire
conditionals, do the following:
- rename last occurrence of gdesc to desc
- use short ternary operator ?:
- join two seq_printf() calls into single one
- fix indentation of the seq_printf() parameters

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
drivers/gpio/gpiolib.c

index 2bdc1ef..eda3f2f 100644 (file)
@@ -4375,34 +4375,32 @@ core_initcall(gpiolib_dev_init);
 
 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_device *gdev)
 {
-       unsigned                i;
        struct gpio_chip        *gc = gdev->chip;
+       struct gpio_desc        *desc;
        unsigned                gpio = gdev->base;
-       struct gpio_desc        *gdesc = &gdev->descs[0];
+       int                     value;
        bool                    is_out;
        bool                    is_irq;
        bool                    active_low;
 
-       for (i = 0; i < gdev->ngpio; i++, gpio++, gdesc++) {
-               if (!test_bit(FLAG_REQUESTED, &gdesc->flags)) {
-                       if (gdesc->name) {
-                               seq_printf(s, " gpio-%-3d (%-20.20s)\n",
-                                          gpio, gdesc->name);
-                       }
-                       continue;
+       for_each_gpio_desc(gc, desc) {
+               if (test_bit(FLAG_REQUESTED, &desc->flags)) {
+                       gpiod_get_direction(desc);
+                       is_out = test_bit(FLAG_IS_OUT, &desc->flags);
+                       value = gc->get ? gc->get(gc, gpio_chip_hwgpio(desc)) : -EIO;
+                       is_irq = test_bit(FLAG_USED_AS_IRQ, &desc->flags);
+                       active_low = test_bit(FLAG_ACTIVE_LOW, &desc->flags);
+                       seq_printf(s, " gpio-%-3d (%-20.20s|%-20.20s) %s %s %s%s\n",
+                                  gpio, desc->name ?: "", desc->label,
+                                  is_out ? "out" : "in ",
+                                  value >= 0 ? (value ? "hi" : "lo") : "?  ",
+                                  is_irq ? "IRQ " : "",
+                                  active_low ? "ACTIVE LOW" : "");
+               } else if (desc->name) {
+                       seq_printf(s, " gpio-%-3d (%-20.20s)\n", gpio, desc->name);
                }
 
-               gpiod_get_direction(gdesc);
-               is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
-               is_irq = test_bit(FLAG_USED_AS_IRQ, &gdesc->flags);
-               active_low = test_bit(FLAG_ACTIVE_LOW, &gdesc->flags);
-               seq_printf(s, " gpio-%-3d (%-20.20s|%-20.20s) %s %s %s%s",
-                       gpio, gdesc->name ? gdesc->name : "", gdesc->label,
-                       is_out ? "out" : "in ",
-                       gc->get ? (gc->get(gc, i) ? "hi" : "lo") : "?  ",
-                       is_irq ? "IRQ " : "",
-                       active_low ? "ACTIVE LOW" : "");
-               seq_printf(s, "\n");
+               gpio++;
        }
 }