unsigned i, pin;
 #ifdef CONFIG_GPIOLIB
        struct pinctrl_gpio_range *range;
-       unsigned int gpio_num;
        struct gpio_chip *chip;
+       int gpio_num;
 #endif
 
        seq_printf(s, "registered pins: %d\n", pctldev->desc->npins);
                seq_printf(s, "pin %d (%s) ", pin, desc->name);
 
 #ifdef CONFIG_GPIOLIB
-               gpio_num = 0;
+               gpio_num = -1;
                list_for_each_entry(range, &pctldev->gpio_ranges, node) {
                        if ((pin >= range->pin_base) &&
                            (pin < (range->pin_base + range->npins))) {
                                break;
                        }
                }
-               chip = gpio_to_chip(gpio_num);
-               if (chip && chip->gpiodev && chip->gpiodev->base)
-                       seq_printf(s, "%u:%s ", gpio_num -
-                               chip->gpiodev->base, chip->label);
+               if (gpio_num >= 0)
+                       chip = gpio_to_chip(gpio_num);
+               else
+                       chip = NULL;
+               if (chip)
+                       seq_printf(s, "%u:%s ", gpio_num - chip->gpiodev->base, chip->label);
                else
                        seq_puts(s, "0:? ");
 #endif