]> Pileus Git - ~andy/linux/blob - drivers/gpio/gpiolib.c
gpiolib: use descriptors internally
[~andy/linux] / drivers / gpio / gpiolib.c
1 #include <linux/kernel.h>
2 #include <linux/module.h>
3 #include <linux/interrupt.h>
4 #include <linux/irq.h>
5 #include <linux/spinlock.h>
6 #include <linux/list.h>
7 #include <linux/device.h>
8 #include <linux/err.h>
9 #include <linux/debugfs.h>
10 #include <linux/seq_file.h>
11 #include <linux/gpio.h>
12 #include <linux/of_gpio.h>
13 #include <linux/idr.h>
14 #include <linux/slab.h>
15
16 #define CREATE_TRACE_POINTS
17 #include <trace/events/gpio.h>
18
19 /* Optional implementation infrastructure for GPIO interfaces.
20  *
21  * Platforms may want to use this if they tend to use very many GPIOs
22  * that aren't part of a System-On-Chip core; or across I2C/SPI/etc.
23  *
24  * When kernel footprint or instruction count is an issue, simpler
25  * implementations may be preferred.  The GPIO programming interface
26  * allows for inlining speed-critical get/set operations for common
27  * cases, so that access to SOC-integrated GPIOs can sometimes cost
28  * only an instruction or two per bit.
29  */
30
31
32 /* When debugging, extend minimal trust to callers and platform code.
33  * Also emit diagnostic messages that may help initial bringup, when
34  * board setup or driver bugs are most common.
35  *
36  * Otherwise, minimize overhead in what may be bitbanging codepaths.
37  */
38 #ifdef  DEBUG
39 #define extra_checks    1
40 #else
41 #define extra_checks    0
42 #endif
43
44 /* gpio_lock prevents conflicts during gpio_desc[] table updates.
45  * While any GPIO is requested, its gpio_chip is not removable;
46  * each GPIO's "requested" flag serves as a lock and refcount.
47  */
48 static DEFINE_SPINLOCK(gpio_lock);
49
50 struct gpio_desc {
51         struct gpio_chip        *chip;
52         unsigned long           flags;
53 /* flag symbols are bit numbers */
54 #define FLAG_REQUESTED  0
55 #define FLAG_IS_OUT     1
56 #define FLAG_EXPORT     2       /* protected by sysfs_lock */
57 #define FLAG_SYSFS      3       /* exported via /sys/class/gpio/control */
58 #define FLAG_TRIG_FALL  4       /* trigger on falling edge */
59 #define FLAG_TRIG_RISE  5       /* trigger on rising edge */
60 #define FLAG_ACTIVE_LOW 6       /* sysfs value has active low */
61 #define FLAG_OPEN_DRAIN 7       /* Gpio is open drain type */
62 #define FLAG_OPEN_SOURCE 8      /* Gpio is open source type */
63
64 #define ID_SHIFT        16      /* add new flags before this one */
65
66 #define GPIO_FLAGS_MASK         ((1 << ID_SHIFT) - 1)
67 #define GPIO_TRIGGER_MASK       (BIT(FLAG_TRIG_FALL) | BIT(FLAG_TRIG_RISE))
68
69 #ifdef CONFIG_DEBUG_FS
70         const char              *label;
71 #endif
72 };
73 static struct gpio_desc gpio_desc[ARCH_NR_GPIOS];
74
75 static LIST_HEAD(gpio_chips);
76
77 #ifdef CONFIG_GPIO_SYSFS
78 static DEFINE_IDR(dirent_idr);
79 #endif
80
81 /*
82  * Internal gpiod_* API using descriptors instead of the integer namespace.
83  * Most of this should eventually go public.
84  */
85 static int gpiod_request(struct gpio_desc *desc, const char *label);
86 static void gpiod_free(struct gpio_desc *desc);
87 static int gpiod_direction_input(struct gpio_desc *desc);
88 static int gpiod_direction_output(struct gpio_desc *desc, int value);
89 static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce);
90 static int gpiod_get_value_cansleep(struct gpio_desc *desc);
91 static void gpiod_set_value_cansleep(struct gpio_desc *desc, int value);
92 static int gpiod_get_value(struct gpio_desc *desc);
93 static void gpiod_set_value(struct gpio_desc *desc, int value);
94 static int gpiod_cansleep(struct gpio_desc *desc);
95 static int gpiod_to_irq(struct gpio_desc *desc);
96 static int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
97 static int gpiod_export_link(struct device *dev, const char *name,
98                              struct gpio_desc *desc);
99 static int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value);
100 static void gpiod_unexport(struct gpio_desc *desc);
101
102
103 static inline void desc_set_label(struct gpio_desc *d, const char *label)
104 {
105 #ifdef CONFIG_DEBUG_FS
106         d->label = label;
107 #endif
108 }
109
110 /*
111  * Return the GPIO number of the passed descriptor relative to its chip
112  */
113 static int gpio_chip_hwgpio(const struct gpio_desc *desc)
114 {
115         return (desc - &gpio_desc[0]) - desc->chip->base;
116 }
117
118 /**
119  * Convert a GPIO number to its descriptor
120  */
121 static struct gpio_desc *gpio_to_desc(unsigned gpio)
122 {
123         if (WARN(!gpio_is_valid(gpio), "invalid GPIO %d\n", gpio))
124                 return NULL;
125         else
126                 return &gpio_desc[gpio];
127 }
128
129 /**
130  * Convert a GPIO descriptor to the integer namespace.
131  * This should disappear in the future but is needed since we still
132  * use GPIO numbers for error messages and sysfs nodes
133  */
134 static int desc_to_gpio(const struct gpio_desc *desc)
135 {
136         return desc - &gpio_desc[0];
137 }
138
139
140 /* Warn when drivers omit gpio_request() calls -- legal but ill-advised
141  * when setting direction, and otherwise illegal.  Until board setup code
142  * and drivers use explicit requests everywhere (which won't happen when
143  * those calls have no teeth) we can't avoid autorequesting.  This nag
144  * message should motivate switching to explicit requests... so should
145  * the weaker cleanup after faults, compared to gpio_request().
146  *
147  * NOTE: the autorequest mechanism is going away; at this point it's
148  * only "legal" in the sense that (old) code using it won't break yet,
149  * but instead only triggers a WARN() stack dump.
150  */
151 static int gpio_ensure_requested(struct gpio_desc *desc)
152 {
153         const struct gpio_chip *chip = desc->chip;
154         const int gpio = desc_to_gpio(desc);
155
156         if (WARN(test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0,
157                         "autorequest GPIO-%d\n", gpio)) {
158                 if (!try_module_get(chip->owner)) {
159                         pr_err("GPIO-%d: module can't be gotten \n", gpio);
160                         clear_bit(FLAG_REQUESTED, &desc->flags);
161                         /* lose */
162                         return -EIO;
163                 }
164                 desc_set_label(desc, "[auto]");
165                 /* caller must chip->request() w/o spinlock */
166                 if (chip->request)
167                         return 1;
168         }
169         return 0;
170 }
171
172 /* caller holds gpio_lock *OR* gpio is marked as requested */
173 static struct gpio_chip *gpiod_to_chip(struct gpio_desc *desc)
174 {
175         return desc->chip;
176 }
177
178 struct gpio_chip *gpio_to_chip(unsigned gpio)
179 {
180         return gpiod_to_chip(gpio_to_desc(gpio));
181 }
182
183 /* dynamic allocation of GPIOs, e.g. on a hotplugged device */
184 static int gpiochip_find_base(int ngpio)
185 {
186         struct gpio_chip *chip;
187         int base = ARCH_NR_GPIOS - ngpio;
188
189         list_for_each_entry_reverse(chip, &gpio_chips, list) {
190                 /* found a free space? */
191                 if (chip->base + chip->ngpio <= base)
192                         break;
193                 else
194                         /* nope, check the space right before the chip */
195                         base = chip->base - ngpio;
196         }
197
198         if (gpio_is_valid(base)) {
199                 pr_debug("%s: found new base at %d\n", __func__, base);
200                 return base;
201         } else {
202                 pr_err("%s: cannot find free range\n", __func__);
203                 return -ENOSPC;
204         }
205 }
206
207 /* caller ensures gpio is valid and requested, chip->get_direction may sleep  */
208 static int gpiod_get_direction(struct gpio_desc *desc)
209 {
210         struct gpio_chip        *chip;
211         unsigned                offset;
212         int                     status = -EINVAL;
213
214         chip = gpiod_to_chip(desc);
215         offset = gpio_chip_hwgpio(desc);
216
217         if (!chip->get_direction)
218                 return status;
219
220         status = chip->get_direction(chip, offset);
221         if (status > 0) {
222                 /* GPIOF_DIR_IN, or other positive */
223                 status = 1;
224                 clear_bit(FLAG_IS_OUT, &desc->flags);
225         }
226         if (status == 0) {
227                 /* GPIOF_DIR_OUT */
228                 set_bit(FLAG_IS_OUT, &desc->flags);
229         }
230         return status;
231 }
232
233 #ifdef CONFIG_GPIO_SYSFS
234
235 /* lock protects against unexport_gpio() being called while
236  * sysfs files are active.
237  */
238 static DEFINE_MUTEX(sysfs_lock);
239
240 /*
241  * /sys/class/gpio/gpioN... only for GPIOs that are exported
242  *   /direction
243  *      * MAY BE OMITTED if kernel won't allow direction changes
244  *      * is read/write as "in" or "out"
245  *      * may also be written as "high" or "low", initializing
246  *        output value as specified ("out" implies "low")
247  *   /value
248  *      * always readable, subject to hardware behavior
249  *      * may be writable, as zero/nonzero
250  *   /edge
251  *      * configures behavior of poll(2) on /value
252  *      * available only if pin can generate IRQs on input
253  *      * is read/write as "none", "falling", "rising", or "both"
254  *   /active_low
255  *      * configures polarity of /value
256  *      * is read/write as zero/nonzero
257  *      * also affects existing and subsequent "falling" and "rising"
258  *        /edge configuration
259  */
260
261 static ssize_t gpio_direction_show(struct device *dev,
262                 struct device_attribute *attr, char *buf)
263 {
264         struct gpio_desc        *desc = dev_get_drvdata(dev);
265         ssize_t                 status;
266
267         mutex_lock(&sysfs_lock);
268
269         if (!test_bit(FLAG_EXPORT, &desc->flags)) {
270                 status = -EIO;
271         } else {
272                 gpiod_get_direction(desc);
273                 status = sprintf(buf, "%s\n",
274                         test_bit(FLAG_IS_OUT, &desc->flags)
275                                 ? "out" : "in");
276         }
277
278         mutex_unlock(&sysfs_lock);
279         return status;
280 }
281
282 static ssize_t gpio_direction_store(struct device *dev,
283                 struct device_attribute *attr, const char *buf, size_t size)
284 {
285         struct gpio_desc        *desc = dev_get_drvdata(dev);
286         ssize_t                 status;
287
288         mutex_lock(&sysfs_lock);
289
290         if (!test_bit(FLAG_EXPORT, &desc->flags))
291                 status = -EIO;
292         else if (sysfs_streq(buf, "high"))
293                 status = gpiod_direction_output(desc, 1);
294         else if (sysfs_streq(buf, "out") || sysfs_streq(buf, "low"))
295                 status = gpiod_direction_output(desc, 0);
296         else if (sysfs_streq(buf, "in"))
297                 status = gpiod_direction_input(desc);
298         else
299                 status = -EINVAL;
300
301         mutex_unlock(&sysfs_lock);
302         return status ? : size;
303 }
304
305 static /* const */ DEVICE_ATTR(direction, 0644,
306                 gpio_direction_show, gpio_direction_store);
307
308 static ssize_t gpio_value_show(struct device *dev,
309                 struct device_attribute *attr, char *buf)
310 {
311         struct gpio_desc        *desc = dev_get_drvdata(dev);
312         ssize_t                 status;
313
314         mutex_lock(&sysfs_lock);
315
316         if (!test_bit(FLAG_EXPORT, &desc->flags)) {
317                 status = -EIO;
318         } else {
319                 int value;
320
321                 value = !!gpiod_get_value_cansleep(desc);
322                 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
323                         value = !value;
324
325                 status = sprintf(buf, "%d\n", value);
326         }
327
328         mutex_unlock(&sysfs_lock);
329         return status;
330 }
331
332 static ssize_t gpio_value_store(struct device *dev,
333                 struct device_attribute *attr, const char *buf, size_t size)
334 {
335         struct gpio_desc        *desc = dev_get_drvdata(dev);
336         ssize_t                 status;
337
338         mutex_lock(&sysfs_lock);
339
340         if (!test_bit(FLAG_EXPORT, &desc->flags))
341                 status = -EIO;
342         else if (!test_bit(FLAG_IS_OUT, &desc->flags))
343                 status = -EPERM;
344         else {
345                 long            value;
346
347                 status = strict_strtol(buf, 0, &value);
348                 if (status == 0) {
349                         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
350                                 value = !value;
351                         gpiod_set_value_cansleep(desc, value != 0);
352                         status = size;
353                 }
354         }
355
356         mutex_unlock(&sysfs_lock);
357         return status;
358 }
359
360 static const DEVICE_ATTR(value, 0644,
361                 gpio_value_show, gpio_value_store);
362
363 static irqreturn_t gpio_sysfs_irq(int irq, void *priv)
364 {
365         struct sysfs_dirent     *value_sd = priv;
366
367         sysfs_notify_dirent(value_sd);
368         return IRQ_HANDLED;
369 }
370
371 static int gpio_setup_irq(struct gpio_desc *desc, struct device *dev,
372                 unsigned long gpio_flags)
373 {
374         struct sysfs_dirent     *value_sd;
375         unsigned long           irq_flags;
376         int                     ret, irq, id;
377
378         if ((desc->flags & GPIO_TRIGGER_MASK) == gpio_flags)
379                 return 0;
380
381         irq = gpiod_to_irq(desc);
382         if (irq < 0)
383                 return -EIO;
384
385         id = desc->flags >> ID_SHIFT;
386         value_sd = idr_find(&dirent_idr, id);
387         if (value_sd)
388                 free_irq(irq, value_sd);
389
390         desc->flags &= ~GPIO_TRIGGER_MASK;
391
392         if (!gpio_flags) {
393                 ret = 0;
394                 goto free_id;
395         }
396
397         irq_flags = IRQF_SHARED;
398         if (test_bit(FLAG_TRIG_FALL, &gpio_flags))
399                 irq_flags |= test_bit(FLAG_ACTIVE_LOW, &desc->flags) ?
400                         IRQF_TRIGGER_RISING : IRQF_TRIGGER_FALLING;
401         if (test_bit(FLAG_TRIG_RISE, &gpio_flags))
402                 irq_flags |= test_bit(FLAG_ACTIVE_LOW, &desc->flags) ?
403                         IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING;
404
405         if (!value_sd) {
406                 value_sd = sysfs_get_dirent(dev->kobj.sd, NULL, "value");
407                 if (!value_sd) {
408                         ret = -ENODEV;
409                         goto err_out;
410                 }
411
412                 do {
413                         ret = -ENOMEM;
414                         if (idr_pre_get(&dirent_idr, GFP_KERNEL))
415                                 ret = idr_get_new_above(&dirent_idr, value_sd,
416                                                         1, &id);
417                 } while (ret == -EAGAIN);
418
419                 if (ret)
420                         goto free_sd;
421
422                 desc->flags &= GPIO_FLAGS_MASK;
423                 desc->flags |= (unsigned long)id << ID_SHIFT;
424
425                 if (desc->flags >> ID_SHIFT != id) {
426                         ret = -ERANGE;
427                         goto free_id;
428                 }
429         }
430
431         ret = request_any_context_irq(irq, gpio_sysfs_irq, irq_flags,
432                                 "gpiolib", value_sd);
433         if (ret < 0)
434                 goto free_id;
435
436         desc->flags |= gpio_flags;
437         return 0;
438
439 free_id:
440         idr_remove(&dirent_idr, id);
441         desc->flags &= GPIO_FLAGS_MASK;
442 free_sd:
443         if (value_sd)
444                 sysfs_put(value_sd);
445 err_out:
446         return ret;
447 }
448
449 static const struct {
450         const char *name;
451         unsigned long flags;
452 } trigger_types[] = {
453         { "none",    0 },
454         { "falling", BIT(FLAG_TRIG_FALL) },
455         { "rising",  BIT(FLAG_TRIG_RISE) },
456         { "both",    BIT(FLAG_TRIG_FALL) | BIT(FLAG_TRIG_RISE) },
457 };
458
459 static ssize_t gpio_edge_show(struct device *dev,
460                 struct device_attribute *attr, char *buf)
461 {
462         const struct gpio_desc  *desc = dev_get_drvdata(dev);
463         ssize_t                 status;
464
465         mutex_lock(&sysfs_lock);
466
467         if (!test_bit(FLAG_EXPORT, &desc->flags))
468                 status = -EIO;
469         else {
470                 int i;
471
472                 status = 0;
473                 for (i = 0; i < ARRAY_SIZE(trigger_types); i++)
474                         if ((desc->flags & GPIO_TRIGGER_MASK)
475                                         == trigger_types[i].flags) {
476                                 status = sprintf(buf, "%s\n",
477                                                  trigger_types[i].name);
478                                 break;
479                         }
480         }
481
482         mutex_unlock(&sysfs_lock);
483         return status;
484 }
485
486 static ssize_t gpio_edge_store(struct device *dev,
487                 struct device_attribute *attr, const char *buf, size_t size)
488 {
489         struct gpio_desc        *desc = dev_get_drvdata(dev);
490         ssize_t                 status;
491         int                     i;
492
493         for (i = 0; i < ARRAY_SIZE(trigger_types); i++)
494                 if (sysfs_streq(trigger_types[i].name, buf))
495                         goto found;
496         return -EINVAL;
497
498 found:
499         mutex_lock(&sysfs_lock);
500
501         if (!test_bit(FLAG_EXPORT, &desc->flags))
502                 status = -EIO;
503         else {
504                 status = gpio_setup_irq(desc, dev, trigger_types[i].flags);
505                 if (!status)
506                         status = size;
507         }
508
509         mutex_unlock(&sysfs_lock);
510
511         return status;
512 }
513
514 static DEVICE_ATTR(edge, 0644, gpio_edge_show, gpio_edge_store);
515
516 static int sysfs_set_active_low(struct gpio_desc *desc, struct device *dev,
517                                 int value)
518 {
519         int                     status = 0;
520
521         if (!!test_bit(FLAG_ACTIVE_LOW, &desc->flags) == !!value)
522                 return 0;
523
524         if (value)
525                 set_bit(FLAG_ACTIVE_LOW, &desc->flags);
526         else
527                 clear_bit(FLAG_ACTIVE_LOW, &desc->flags);
528
529         /* reconfigure poll(2) support if enabled on one edge only */
530         if (dev != NULL && (!!test_bit(FLAG_TRIG_RISE, &desc->flags) ^
531                                 !!test_bit(FLAG_TRIG_FALL, &desc->flags))) {
532                 unsigned long trigger_flags = desc->flags & GPIO_TRIGGER_MASK;
533
534                 gpio_setup_irq(desc, dev, 0);
535                 status = gpio_setup_irq(desc, dev, trigger_flags);
536         }
537
538         return status;
539 }
540
541 static ssize_t gpio_active_low_show(struct device *dev,
542                 struct device_attribute *attr, char *buf)
543 {
544         const struct gpio_desc  *desc = dev_get_drvdata(dev);
545         ssize_t                 status;
546
547         mutex_lock(&sysfs_lock);
548
549         if (!test_bit(FLAG_EXPORT, &desc->flags))
550                 status = -EIO;
551         else
552                 status = sprintf(buf, "%d\n",
553                                 !!test_bit(FLAG_ACTIVE_LOW, &desc->flags));
554
555         mutex_unlock(&sysfs_lock);
556
557         return status;
558 }
559
560 static ssize_t gpio_active_low_store(struct device *dev,
561                 struct device_attribute *attr, const char *buf, size_t size)
562 {
563         struct gpio_desc        *desc = dev_get_drvdata(dev);
564         ssize_t                 status;
565
566         mutex_lock(&sysfs_lock);
567
568         if (!test_bit(FLAG_EXPORT, &desc->flags)) {
569                 status = -EIO;
570         } else {
571                 long            value;
572
573                 status = strict_strtol(buf, 0, &value);
574                 if (status == 0)
575                         status = sysfs_set_active_low(desc, dev, value != 0);
576         }
577
578         mutex_unlock(&sysfs_lock);
579
580         return status ? : size;
581 }
582
583 static const DEVICE_ATTR(active_low, 0644,
584                 gpio_active_low_show, gpio_active_low_store);
585
586 static const struct attribute *gpio_attrs[] = {
587         &dev_attr_value.attr,
588         &dev_attr_active_low.attr,
589         NULL,
590 };
591
592 static const struct attribute_group gpio_attr_group = {
593         .attrs = (struct attribute **) gpio_attrs,
594 };
595
596 /*
597  * /sys/class/gpio/gpiochipN/
598  *   /base ... matching gpio_chip.base (N)
599  *   /label ... matching gpio_chip.label
600  *   /ngpio ... matching gpio_chip.ngpio
601  */
602
603 static ssize_t chip_base_show(struct device *dev,
604                                struct device_attribute *attr, char *buf)
605 {
606         const struct gpio_chip  *chip = dev_get_drvdata(dev);
607
608         return sprintf(buf, "%d\n", chip->base);
609 }
610 static DEVICE_ATTR(base, 0444, chip_base_show, NULL);
611
612 static ssize_t chip_label_show(struct device *dev,
613                                struct device_attribute *attr, char *buf)
614 {
615         const struct gpio_chip  *chip = dev_get_drvdata(dev);
616
617         return sprintf(buf, "%s\n", chip->label ? : "");
618 }
619 static DEVICE_ATTR(label, 0444, chip_label_show, NULL);
620
621 static ssize_t chip_ngpio_show(struct device *dev,
622                                struct device_attribute *attr, char *buf)
623 {
624         const struct gpio_chip  *chip = dev_get_drvdata(dev);
625
626         return sprintf(buf, "%u\n", chip->ngpio);
627 }
628 static DEVICE_ATTR(ngpio, 0444, chip_ngpio_show, NULL);
629
630 static const struct attribute *gpiochip_attrs[] = {
631         &dev_attr_base.attr,
632         &dev_attr_label.attr,
633         &dev_attr_ngpio.attr,
634         NULL,
635 };
636
637 static const struct attribute_group gpiochip_attr_group = {
638         .attrs = (struct attribute **) gpiochip_attrs,
639 };
640
641 /*
642  * /sys/class/gpio/export ... write-only
643  *      integer N ... number of GPIO to export (full access)
644  * /sys/class/gpio/unexport ... write-only
645  *      integer N ... number of GPIO to unexport
646  */
647 static ssize_t export_store(struct class *class,
648                                 struct class_attribute *attr,
649                                 const char *buf, size_t len)
650 {
651         long                    gpio;
652         struct gpio_desc        *desc;
653         int                     status;
654
655         status = strict_strtol(buf, 0, &gpio);
656         if (status < 0)
657                 goto done;
658
659         desc = gpio_to_desc(gpio);
660
661         /* No extra locking here; FLAG_SYSFS just signifies that the
662          * request and export were done by on behalf of userspace, so
663          * they may be undone on its behalf too.
664          */
665
666         status = gpiod_request(desc, "sysfs");
667         if (status < 0) {
668                 if (status == -EPROBE_DEFER)
669                         status = -ENODEV;
670                 goto done;
671         }
672         status = gpiod_export(desc, true);
673         if (status < 0)
674                 gpiod_free(desc);
675         else
676                 set_bit(FLAG_SYSFS, &desc->flags);
677
678 done:
679         if (status)
680                 pr_debug("%s: status %d\n", __func__, status);
681         return status ? : len;
682 }
683
684 static ssize_t unexport_store(struct class *class,
685                                 struct class_attribute *attr,
686                                 const char *buf, size_t len)
687 {
688         long                    gpio;
689         struct gpio_desc        *desc;
690         int                     status;
691
692         status = strict_strtol(buf, 0, &gpio);
693         if (status < 0)
694                 goto done;
695
696         status = -EINVAL;
697
698         desc = gpio_to_desc(gpio);
699         /* reject bogus commands (gpio_unexport ignores them) */
700         if (!desc)
701                 goto done;
702
703         /* No extra locking here; FLAG_SYSFS just signifies that the
704          * request and export were done by on behalf of userspace, so
705          * they may be undone on its behalf too.
706          */
707         if (test_and_clear_bit(FLAG_SYSFS, &desc->flags)) {
708                 status = 0;
709                 gpiod_free(desc);
710         }
711 done:
712         if (status)
713                 pr_debug("%s: status %d\n", __func__, status);
714         return status ? : len;
715 }
716
717 static struct class_attribute gpio_class_attrs[] = {
718         __ATTR(export, 0200, NULL, export_store),
719         __ATTR(unexport, 0200, NULL, unexport_store),
720         __ATTR_NULL,
721 };
722
723 static struct class gpio_class = {
724         .name =         "gpio",
725         .owner =        THIS_MODULE,
726
727         .class_attrs =  gpio_class_attrs,
728 };
729
730
731 /**
732  * gpio_export - export a GPIO through sysfs
733  * @gpio: gpio to make available, already requested
734  * @direction_may_change: true if userspace may change gpio direction
735  * Context: arch_initcall or later
736  *
737  * When drivers want to make a GPIO accessible to userspace after they
738  * have requested it -- perhaps while debugging, or as part of their
739  * public interface -- they may use this routine.  If the GPIO can
740  * change direction (some can't) and the caller allows it, userspace
741  * will see "direction" sysfs attribute which may be used to change
742  * the gpio's direction.  A "value" attribute will always be provided.
743  *
744  * Returns zero on success, else an error.
745  */
746 static int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
747 {
748         unsigned long           flags;
749         int                     status;
750         const char              *ioname = NULL;
751         struct device           *dev;
752         int                     offset;
753
754         /* can't export until sysfs is available ... */
755         if (!gpio_class.p) {
756                 pr_debug("%s: called too early!\n", __func__);
757                 return -ENOENT;
758         }
759
760         if (!desc) {
761                 pr_debug("%s: invalid gpio descriptor\n", __func__);
762                 return -EINVAL;
763         }
764
765         mutex_lock(&sysfs_lock);
766
767         spin_lock_irqsave(&gpio_lock, flags);
768         if (!test_bit(FLAG_REQUESTED, &desc->flags) ||
769              test_bit(FLAG_EXPORT, &desc->flags)) {
770                 spin_unlock_irqrestore(&gpio_lock, flags);
771                 pr_debug("%s: gpio %d unavailable (requested=%d, exported=%d)\n",
772                                 __func__, desc_to_gpio(desc),
773                                 test_bit(FLAG_REQUESTED, &desc->flags),
774                                 test_bit(FLAG_EXPORT, &desc->flags));
775                 status = -EPERM;
776                 goto fail_unlock;
777         }
778
779         if (!desc->chip->direction_input || !desc->chip->direction_output)
780                 direction_may_change = false;
781         spin_unlock_irqrestore(&gpio_lock, flags);
782
783         offset = gpio_chip_hwgpio(desc);
784         if (desc->chip->names && desc->chip->names[offset])
785                 ioname = desc->chip->names[offset];
786
787         dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0),
788                             desc, ioname ? ioname : "gpio%u",
789                             desc_to_gpio(desc));
790         if (IS_ERR(dev)) {
791                 status = PTR_ERR(dev);
792                 goto fail_unlock;
793         }
794
795         status = sysfs_create_group(&dev->kobj, &gpio_attr_group);
796         if (status)
797                 goto fail_unregister_device;
798
799         if (direction_may_change) {
800                 status = device_create_file(dev, &dev_attr_direction);
801                 if (status)
802                         goto fail_unregister_device;
803         }
804
805         if (gpiod_to_irq(desc) >= 0 && (direction_may_change ||
806                                        !test_bit(FLAG_IS_OUT, &desc->flags))) {
807                 status = device_create_file(dev, &dev_attr_edge);
808                 if (status)
809                         goto fail_unregister_device;
810         }
811
812         set_bit(FLAG_EXPORT, &desc->flags);
813         mutex_unlock(&sysfs_lock);
814         return 0;
815
816 fail_unregister_device:
817         device_unregister(dev);
818 fail_unlock:
819         mutex_unlock(&sysfs_lock);
820         pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc),
821                  status);
822         return status;
823 }
824
825 int gpio_export(unsigned gpio, bool direction_may_change)
826 {
827         return gpiod_export(gpio_to_desc(gpio), direction_may_change);
828 }
829 EXPORT_SYMBOL_GPL(gpio_export);
830
831 static int match_export(struct device *dev, void *data)
832 {
833         return dev_get_drvdata(dev) == data;
834 }
835
836 /**
837  * gpio_export_link - create a sysfs link to an exported GPIO node
838  * @dev: device under which to create symlink
839  * @name: name of the symlink
840  * @gpio: gpio to create symlink to, already exported
841  *
842  * Set up a symlink from /sys/.../dev/name to /sys/class/gpio/gpioN
843  * node. Caller is responsible for unlinking.
844  *
845  * Returns zero on success, else an error.
846  */
847 static int gpiod_export_link(struct device *dev, const char *name,
848                              struct gpio_desc *desc)
849 {
850         int                     status = -EINVAL;
851
852         if (!desc)
853                 goto done;
854
855         mutex_lock(&sysfs_lock);
856
857         if (test_bit(FLAG_EXPORT, &desc->flags)) {
858                 struct device *tdev;
859
860                 tdev = class_find_device(&gpio_class, NULL, desc, match_export);
861                 if (tdev != NULL) {
862                         status = sysfs_create_link(&dev->kobj, &tdev->kobj,
863                                                 name);
864                 } else {
865                         status = -ENODEV;
866                 }
867         }
868
869         mutex_unlock(&sysfs_lock);
870
871 done:
872         if (status)
873                 pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc),
874                          status);
875
876         return status;
877 }
878
879 int gpio_export_link(struct device *dev, const char *name, unsigned gpio)
880 {
881         return gpiod_export_link(dev, name, gpio_to_desc(gpio));
882 }
883 EXPORT_SYMBOL_GPL(gpio_export_link);
884
885 /**
886  * gpio_sysfs_set_active_low - set the polarity of gpio sysfs value
887  * @gpio: gpio to change
888  * @value: non-zero to use active low, i.e. inverted values
889  *
890  * Set the polarity of /sys/class/gpio/gpioN/value sysfs attribute.
891  * The GPIO does not have to be exported yet.  If poll(2) support has
892  * been enabled for either rising or falling edge, it will be
893  * reconfigured to follow the new polarity.
894  *
895  * Returns zero on success, else an error.
896  */
897 static int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value)
898 {
899         struct device           *dev = NULL;
900         int                     status = -EINVAL;
901
902         if (!desc)
903                 goto done;
904
905         mutex_lock(&sysfs_lock);
906
907         if (test_bit(FLAG_EXPORT, &desc->flags)) {
908                 dev = class_find_device(&gpio_class, NULL, desc, match_export);
909                 if (dev == NULL) {
910                         status = -ENODEV;
911                         goto unlock;
912                 }
913         }
914
915         status = sysfs_set_active_low(desc, dev, value);
916
917 unlock:
918         mutex_unlock(&sysfs_lock);
919
920 done:
921         if (status)
922                 pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc),
923                          status);
924
925         return status;
926 }
927
928 int gpio_sysfs_set_active_low(unsigned gpio, int value)
929 {
930         return gpiod_sysfs_set_active_low(gpio_to_desc(gpio), value);
931 }
932 EXPORT_SYMBOL_GPL(gpio_sysfs_set_active_low);
933
934 /**
935  * gpio_unexport - reverse effect of gpio_export()
936  * @gpio: gpio to make unavailable
937  *
938  * This is implicit on gpio_free().
939  */
940 static void gpiod_unexport(struct gpio_desc *desc)
941 {
942         int                     status = 0;
943         struct device           *dev = NULL;
944
945         if (!desc) {
946                 status = -EINVAL;
947                 goto done;
948         }
949
950         mutex_lock(&sysfs_lock);
951
952         if (test_bit(FLAG_EXPORT, &desc->flags)) {
953
954                 dev = class_find_device(&gpio_class, NULL, desc, match_export);
955                 if (dev) {
956                         gpio_setup_irq(desc, dev, 0);
957                         clear_bit(FLAG_EXPORT, &desc->flags);
958                 } else
959                         status = -ENODEV;
960         }
961
962         mutex_unlock(&sysfs_lock);
963
964         if (dev) {
965                 device_unregister(dev);
966                 put_device(dev);
967         }
968 done:
969         if (status)
970                 pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc),
971                          status);
972 }
973
974 void gpio_unexport(unsigned gpio)
975 {
976         gpiod_unexport(gpio_to_desc(gpio));
977 }
978 EXPORT_SYMBOL_GPL(gpio_unexport);
979
980 static int gpiochip_export(struct gpio_chip *chip)
981 {
982         int             status;
983         struct device   *dev;
984
985         /* Many systems register gpio chips for SOC support very early,
986          * before driver model support is available.  In those cases we
987          * export this later, in gpiolib_sysfs_init() ... here we just
988          * verify that _some_ field of gpio_class got initialized.
989          */
990         if (!gpio_class.p)
991                 return 0;
992
993         /* use chip->base for the ID; it's already known to be unique */
994         mutex_lock(&sysfs_lock);
995         dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip,
996                                 "gpiochip%d", chip->base);
997         if (!IS_ERR(dev)) {
998                 status = sysfs_create_group(&dev->kobj,
999                                 &gpiochip_attr_group);
1000         } else
1001                 status = PTR_ERR(dev);
1002         chip->exported = (status == 0);
1003         mutex_unlock(&sysfs_lock);
1004
1005         if (status) {
1006                 unsigned long   flags;
1007                 unsigned        gpio;
1008
1009                 spin_lock_irqsave(&gpio_lock, flags);
1010                 gpio = chip->base;
1011                 while (gpio_desc[gpio].chip == chip)
1012                         gpio_desc[gpio++].chip = NULL;
1013                 spin_unlock_irqrestore(&gpio_lock, flags);
1014
1015                 pr_debug("%s: chip %s status %d\n", __func__,
1016                                 chip->label, status);
1017         }
1018
1019         return status;
1020 }
1021
1022 static void gpiochip_unexport(struct gpio_chip *chip)
1023 {
1024         int                     status;
1025         struct device           *dev;
1026
1027         mutex_lock(&sysfs_lock);
1028         dev = class_find_device(&gpio_class, NULL, chip, match_export);
1029         if (dev) {
1030                 put_device(dev);
1031                 device_unregister(dev);
1032                 chip->exported = 0;
1033                 status = 0;
1034         } else
1035                 status = -ENODEV;
1036         mutex_unlock(&sysfs_lock);
1037
1038         if (status)
1039                 pr_debug("%s: chip %s status %d\n", __func__,
1040                                 chip->label, status);
1041 }
1042
1043 static int __init gpiolib_sysfs_init(void)
1044 {
1045         int             status;
1046         unsigned long   flags;
1047         struct gpio_chip *chip;
1048
1049         status = class_register(&gpio_class);
1050         if (status < 0)
1051                 return status;
1052
1053         /* Scan and register the gpio_chips which registered very
1054          * early (e.g. before the class_register above was called).
1055          *
1056          * We run before arch_initcall() so chip->dev nodes can have
1057          * registered, and so arch_initcall() can always gpio_export().
1058          */
1059         spin_lock_irqsave(&gpio_lock, flags);
1060         list_for_each_entry(chip, &gpio_chips, list) {
1061                 if (!chip || chip->exported)
1062                         continue;
1063
1064                 spin_unlock_irqrestore(&gpio_lock, flags);
1065                 status = gpiochip_export(chip);
1066                 spin_lock_irqsave(&gpio_lock, flags);
1067         }
1068         spin_unlock_irqrestore(&gpio_lock, flags);
1069
1070
1071         return status;
1072 }
1073 postcore_initcall(gpiolib_sysfs_init);
1074
1075 #else
1076 static inline int gpiochip_export(struct gpio_chip *chip)
1077 {
1078         return 0;
1079 }
1080
1081 static inline void gpiochip_unexport(struct gpio_chip *chip)
1082 {
1083 }
1084
1085 static inline int gpiod_export(struct gpio_desc *desc,
1086                                bool direction_may_change)
1087 {
1088         return -ENOSYS;
1089 }
1090
1091 static inline int gpiod_export_link(struct device *dev, const char *name,
1092                                     struct gpio_desc *desc)
1093 {
1094         return -ENOSYS;
1095 }
1096
1097 static inline int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value)
1098 {
1099         return -ENOSYS;
1100 }
1101
1102 static inline void gpiod_unexport(struct gpio_desc *desc)
1103 {
1104 }
1105
1106 #endif /* CONFIG_GPIO_SYSFS */
1107
1108 /*
1109  * Add a new chip to the global chips list, keeping the list of chips sorted
1110  * by base order.
1111  *
1112  * Return -EBUSY if the new chip overlaps with some other chip's integer
1113  * space.
1114  */
1115 static int gpiochip_add_to_list(struct gpio_chip *chip)
1116 {
1117         struct list_head *pos = &gpio_chips;
1118         struct gpio_chip *_chip;
1119         int err = 0;
1120
1121         /* find where to insert our chip */
1122         list_for_each(pos, &gpio_chips) {
1123                 _chip = list_entry(pos, struct gpio_chip, list);
1124                 /* shall we insert before _chip? */
1125                 if (_chip->base >= chip->base + chip->ngpio)
1126                         break;
1127         }
1128
1129         /* are we stepping on the chip right before? */
1130         if (pos != &gpio_chips && pos->prev != &gpio_chips) {
1131                 _chip = list_entry(pos->prev, struct gpio_chip, list);
1132                 if (_chip->base + _chip->ngpio > chip->base) {
1133                         dev_err(chip->dev,
1134                                "GPIO integer space overlap, cannot add chip\n");
1135                         err = -EBUSY;
1136                 }
1137         }
1138
1139         if (!err)
1140                 list_add_tail(&chip->list, pos);
1141
1142         return err;
1143 }
1144
1145 /**
1146  * gpiochip_add() - register a gpio_chip
1147  * @chip: the chip to register, with chip->base initialized
1148  * Context: potentially before irqs or kmalloc will work
1149  *
1150  * Returns a negative errno if the chip can't be registered, such as
1151  * because the chip->base is invalid or already associated with a
1152  * different chip.  Otherwise it returns zero as a success code.
1153  *
1154  * When gpiochip_add() is called very early during boot, so that GPIOs
1155  * can be freely used, the chip->dev device must be registered before
1156  * the gpio framework's arch_initcall().  Otherwise sysfs initialization
1157  * for GPIOs will fail rudely.
1158  *
1159  * If chip->base is negative, this requests dynamic assignment of
1160  * a range of valid GPIOs.
1161  */
1162 int gpiochip_add(struct gpio_chip *chip)
1163 {
1164         unsigned long   flags;
1165         int             status = 0;
1166         unsigned        id;
1167         int             base = chip->base;
1168
1169         if ((!gpio_is_valid(base) || !gpio_is_valid(base + chip->ngpio - 1))
1170                         && base >= 0) {
1171                 status = -EINVAL;
1172                 goto fail;
1173         }
1174
1175         spin_lock_irqsave(&gpio_lock, flags);
1176
1177         if (base < 0) {
1178                 base = gpiochip_find_base(chip->ngpio);
1179                 if (base < 0) {
1180                         status = base;
1181                         goto unlock;
1182                 }
1183                 chip->base = base;
1184         }
1185
1186         status = gpiochip_add_to_list(chip);
1187
1188         if (status == 0) {
1189                 for (id = base; id < base + chip->ngpio; id++) {
1190                         gpio_desc[id].chip = chip;
1191
1192                         /* REVISIT:  most hardware initializes GPIOs as
1193                          * inputs (often with pullups enabled) so power
1194                          * usage is minimized.  Linux code should set the
1195                          * gpio direction first thing; but until it does,
1196                          * and in case chip->get_direction is not set,
1197                          * we may expose the wrong direction in sysfs.
1198                          */
1199                         gpio_desc[id].flags = !chip->direction_input
1200                                 ? (1 << FLAG_IS_OUT)
1201                                 : 0;
1202                 }
1203         }
1204
1205 #ifdef CONFIG_PINCTRL
1206         INIT_LIST_HEAD(&chip->pin_ranges);
1207 #endif
1208
1209         of_gpiochip_add(chip);
1210
1211 unlock:
1212         spin_unlock_irqrestore(&gpio_lock, flags);
1213
1214         if (status)
1215                 goto fail;
1216
1217         status = gpiochip_export(chip);
1218         if (status)
1219                 goto fail;
1220
1221         pr_debug("gpiochip_add: registered GPIOs %d to %d on device: %s\n",
1222                 chip->base, chip->base + chip->ngpio - 1,
1223                 chip->label ? : "generic");
1224
1225         return 0;
1226 fail:
1227         /* failures here can mean systems won't boot... */
1228         pr_err("gpiochip_add: gpios %d..%d (%s) failed to register\n",
1229                 chip->base, chip->base + chip->ngpio - 1,
1230                 chip->label ? : "generic");
1231         return status;
1232 }
1233 EXPORT_SYMBOL_GPL(gpiochip_add);
1234
1235 /**
1236  * gpiochip_remove() - unregister a gpio_chip
1237  * @chip: the chip to unregister
1238  *
1239  * A gpio_chip with any GPIOs still requested may not be removed.
1240  */
1241 int gpiochip_remove(struct gpio_chip *chip)
1242 {
1243         unsigned long   flags;
1244         int             status = 0;
1245         unsigned        id;
1246
1247         spin_lock_irqsave(&gpio_lock, flags);
1248
1249         gpiochip_remove_pin_ranges(chip);
1250         of_gpiochip_remove(chip);
1251
1252         for (id = chip->base; id < chip->base + chip->ngpio; id++) {
1253                 if (test_bit(FLAG_REQUESTED, &gpio_desc[id].flags)) {
1254                         status = -EBUSY;
1255                         break;
1256                 }
1257         }
1258         if (status == 0) {
1259                 for (id = chip->base; id < chip->base + chip->ngpio; id++)
1260                         gpio_desc[id].chip = NULL;
1261
1262                 list_del(&chip->list);
1263         }
1264
1265         spin_unlock_irqrestore(&gpio_lock, flags);
1266
1267         if (status == 0)
1268                 gpiochip_unexport(chip);
1269
1270         return status;
1271 }
1272 EXPORT_SYMBOL_GPL(gpiochip_remove);
1273
1274 /**
1275  * gpiochip_find() - iterator for locating a specific gpio_chip
1276  * @data: data to pass to match function
1277  * @callback: Callback function to check gpio_chip
1278  *
1279  * Similar to bus_find_device.  It returns a reference to a gpio_chip as
1280  * determined by a user supplied @match callback.  The callback should return
1281  * 0 if the device doesn't match and non-zero if it does.  If the callback is
1282  * non-zero, this function will return to the caller and not iterate over any
1283  * more gpio_chips.
1284  */
1285 struct gpio_chip *gpiochip_find(void *data,
1286                                 int (*match)(struct gpio_chip *chip,
1287                                              void *data))
1288 {
1289         struct gpio_chip *chip;
1290         unsigned long flags;
1291
1292         spin_lock_irqsave(&gpio_lock, flags);
1293         list_for_each_entry(chip, &gpio_chips, list)
1294                 if (match(chip, data))
1295                         break;
1296
1297         /* No match? */
1298         if (&chip->list == &gpio_chips)
1299                 chip = NULL;
1300         spin_unlock_irqrestore(&gpio_lock, flags);
1301
1302         return chip;
1303 }
1304 EXPORT_SYMBOL_GPL(gpiochip_find);
1305
1306 #ifdef CONFIG_PINCTRL
1307
1308 /**
1309  * gpiochip_add_pin_range() - add a range for GPIO <-> pin mapping
1310  * @chip: the gpiochip to add the range for
1311  * @pinctrl_name: the dev_name() of the pin controller to map to
1312  * @gpio_offset: the start offset in the current gpio_chip number space
1313  * @pin_offset: the start offset in the pin controller number space
1314  * @npins: the number of pins from the offset of each pin space (GPIO and
1315  *      pin controller) to accumulate in this range
1316  */
1317 int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
1318                            unsigned int gpio_offset, unsigned int pin_offset,
1319                            unsigned int npins)
1320 {
1321         struct gpio_pin_range *pin_range;
1322         int ret;
1323
1324         pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL);
1325         if (!pin_range) {
1326                 pr_err("%s: GPIO chip: failed to allocate pin ranges\n",
1327                                 chip->label);
1328                 return -ENOMEM;
1329         }
1330
1331         /* Use local offset as range ID */
1332         pin_range->range.id = gpio_offset;
1333         pin_range->range.gc = chip;
1334         pin_range->range.name = chip->label;
1335         pin_range->range.base = chip->base + gpio_offset;
1336         pin_range->range.pin_base = pin_offset;
1337         pin_range->range.npins = npins;
1338         pin_range->pctldev = pinctrl_find_and_add_gpio_range(pinctl_name,
1339                         &pin_range->range);
1340         if (IS_ERR(pin_range->pctldev)) {
1341                 ret = PTR_ERR(pin_range->pctldev);
1342                 pr_err("%s: GPIO chip: could not create pin range\n",
1343                        chip->label);
1344                 kfree(pin_range);
1345                 return ret;
1346         }
1347         pr_debug("GPIO chip %s: created GPIO range %d->%d ==> %s PIN %d->%d\n",
1348                  chip->label, gpio_offset, gpio_offset + npins - 1,
1349                  pinctl_name,
1350                  pin_offset, pin_offset + npins - 1);
1351
1352         list_add_tail(&pin_range->node, &chip->pin_ranges);
1353
1354         return 0;
1355 }
1356 EXPORT_SYMBOL_GPL(gpiochip_add_pin_range);
1357
1358 /**
1359  * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings
1360  * @chip: the chip to remove all the mappings for
1361  */
1362 void gpiochip_remove_pin_ranges(struct gpio_chip *chip)
1363 {
1364         struct gpio_pin_range *pin_range, *tmp;
1365
1366         list_for_each_entry_safe(pin_range, tmp, &chip->pin_ranges, node) {
1367                 list_del(&pin_range->node);
1368                 pinctrl_remove_gpio_range(pin_range->pctldev,
1369                                 &pin_range->range);
1370                 kfree(pin_range);
1371         }
1372 }
1373 EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges);
1374
1375 #endif /* CONFIG_PINCTRL */
1376
1377 /* These "optional" allocation calls help prevent drivers from stomping
1378  * on each other, and help provide better diagnostics in debugfs.
1379  * They're called even less than the "set direction" calls.
1380  */
1381 static int gpiod_request(struct gpio_desc *desc, const char *label)
1382 {
1383         struct gpio_chip        *chip;
1384         int                     status = -EPROBE_DEFER;
1385         unsigned long           flags;
1386
1387         spin_lock_irqsave(&gpio_lock, flags);
1388
1389         if (!desc) {
1390                 status = -EINVAL;
1391                 goto done;
1392         }
1393         chip = desc->chip;
1394         if (chip == NULL)
1395                 goto done;
1396
1397         if (!try_module_get(chip->owner))
1398                 goto done;
1399
1400         /* NOTE:  gpio_request() can be called in early boot,
1401          * before IRQs are enabled, for non-sleeping (SOC) GPIOs.
1402          */
1403
1404         if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
1405                 desc_set_label(desc, label ? : "?");
1406                 status = 0;
1407         } else {
1408                 status = -EBUSY;
1409                 module_put(chip->owner);
1410                 goto done;
1411         }
1412
1413         if (chip->request) {
1414                 /* chip->request may sleep */
1415                 spin_unlock_irqrestore(&gpio_lock, flags);
1416                 status = chip->request(chip, gpio_chip_hwgpio(desc));
1417                 spin_lock_irqsave(&gpio_lock, flags);
1418
1419                 if (status < 0) {
1420                         desc_set_label(desc, NULL);
1421                         module_put(chip->owner);
1422                         clear_bit(FLAG_REQUESTED, &desc->flags);
1423                         goto done;
1424                 }
1425         }
1426         if (chip->get_direction) {
1427                 /* chip->get_direction may sleep */
1428                 spin_unlock_irqrestore(&gpio_lock, flags);
1429                 gpiod_get_direction(desc);
1430                 spin_lock_irqsave(&gpio_lock, flags);
1431         }
1432 done:
1433         if (status)
1434                 pr_debug("_gpio_request: gpio-%d (%s) status %d\n",
1435                          desc ? desc_to_gpio(desc) : -1,
1436                          label ? : "?", status);
1437         spin_unlock_irqrestore(&gpio_lock, flags);
1438         return status;
1439 }
1440
1441 int gpio_request(unsigned gpio, const char *label)
1442 {
1443         return gpiod_request(gpio_to_desc(gpio), label);
1444 }
1445 EXPORT_SYMBOL_GPL(gpio_request);
1446
1447 static void gpiod_free(struct gpio_desc *desc)
1448 {
1449         unsigned long           flags;
1450         struct gpio_chip        *chip;
1451
1452         might_sleep();
1453
1454         if (!desc) {
1455                 WARN_ON(extra_checks);
1456                 return;
1457         }
1458
1459         gpiod_unexport(desc);
1460
1461         spin_lock_irqsave(&gpio_lock, flags);
1462
1463         chip = desc->chip;
1464         if (chip && test_bit(FLAG_REQUESTED, &desc->flags)) {
1465                 if (chip->free) {
1466                         spin_unlock_irqrestore(&gpio_lock, flags);
1467                         might_sleep_if(chip->can_sleep);
1468                         chip->free(chip, gpio_chip_hwgpio(desc));
1469                         spin_lock_irqsave(&gpio_lock, flags);
1470                 }
1471                 desc_set_label(desc, NULL);
1472                 module_put(desc->chip->owner);
1473                 clear_bit(FLAG_ACTIVE_LOW, &desc->flags);
1474                 clear_bit(FLAG_REQUESTED, &desc->flags);
1475                 clear_bit(FLAG_OPEN_DRAIN, &desc->flags);
1476                 clear_bit(FLAG_OPEN_SOURCE, &desc->flags);
1477         } else
1478                 WARN_ON(extra_checks);
1479
1480         spin_unlock_irqrestore(&gpio_lock, flags);
1481 }
1482
1483 void gpio_free(unsigned gpio)
1484 {
1485         gpiod_free(gpio_to_desc(gpio));
1486 }
1487 EXPORT_SYMBOL_GPL(gpio_free);
1488
1489 /**
1490  * gpio_request_one - request a single GPIO with initial configuration
1491  * @gpio:       the GPIO number
1492  * @flags:      GPIO configuration as specified by GPIOF_*
1493  * @label:      a literal description string of this GPIO
1494  */
1495 int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)
1496 {
1497         struct gpio_desc *desc;
1498         int err;
1499
1500         desc = gpio_to_desc(gpio);
1501
1502         err = gpiod_request(desc, label);
1503         if (err)
1504                 return err;
1505
1506         if (flags & GPIOF_OPEN_DRAIN)
1507                 set_bit(FLAG_OPEN_DRAIN, &desc->flags);
1508
1509         if (flags & GPIOF_OPEN_SOURCE)
1510                 set_bit(FLAG_OPEN_SOURCE, &desc->flags);
1511
1512         if (flags & GPIOF_DIR_IN)
1513                 err = gpiod_direction_input(desc);
1514         else
1515                 err = gpiod_direction_output(desc,
1516                                 (flags & GPIOF_INIT_HIGH) ? 1 : 0);
1517
1518         if (err)
1519                 goto free_gpio;
1520
1521         if (flags & GPIOF_EXPORT) {
1522                 err = gpiod_export(desc, flags & GPIOF_EXPORT_CHANGEABLE);
1523                 if (err)
1524                         goto free_gpio;
1525         }
1526
1527         return 0;
1528
1529  free_gpio:
1530         gpiod_free(desc);
1531         return err;
1532 }
1533 EXPORT_SYMBOL_GPL(gpio_request_one);
1534
1535 /**
1536  * gpio_request_array - request multiple GPIOs in a single call
1537  * @array:      array of the 'struct gpio'
1538  * @num:        how many GPIOs in the array
1539  */
1540 int gpio_request_array(const struct gpio *array, size_t num)
1541 {
1542         int i, err;
1543
1544         for (i = 0; i < num; i++, array++) {
1545                 err = gpio_request_one(array->gpio, array->flags, array->label);
1546                 if (err)
1547                         goto err_free;
1548         }
1549         return 0;
1550
1551 err_free:
1552         while (i--)
1553                 gpio_free((--array)->gpio);
1554         return err;
1555 }
1556 EXPORT_SYMBOL_GPL(gpio_request_array);
1557
1558 /**
1559  * gpio_free_array - release multiple GPIOs in a single call
1560  * @array:      array of the 'struct gpio'
1561  * @num:        how many GPIOs in the array
1562  */
1563 void gpio_free_array(const struct gpio *array, size_t num)
1564 {
1565         while (num--)
1566                 gpio_free((array++)->gpio);
1567 }
1568 EXPORT_SYMBOL_GPL(gpio_free_array);
1569
1570 /**
1571  * gpiochip_is_requested - return string iff signal was requested
1572  * @chip: controller managing the signal
1573  * @offset: of signal within controller's 0..(ngpio - 1) range
1574  *
1575  * Returns NULL if the GPIO is not currently requested, else a string.
1576  * If debugfs support is enabled, the string returned is the label passed
1577  * to gpio_request(); otherwise it is a meaningless constant.
1578  *
1579  * This function is for use by GPIO controller drivers.  The label can
1580  * help with diagnostics, and knowing that the signal is used as a GPIO
1581  * can help avoid accidentally multiplexing it to another controller.
1582  */
1583 const char *gpiochip_is_requested(struct gpio_chip *chip, unsigned offset)
1584 {
1585         unsigned gpio = chip->base + offset;
1586         struct gpio_desc *desc = &gpio_desc[gpio];
1587
1588         if (!gpio_is_valid(gpio) || desc->chip != chip)
1589                 return NULL;
1590         if (test_bit(FLAG_REQUESTED, &desc->flags) == 0)
1591                 return NULL;
1592 #ifdef CONFIG_DEBUG_FS
1593         return desc->label;
1594 #else
1595         return "?";
1596 #endif
1597 }
1598 EXPORT_SYMBOL_GPL(gpiochip_is_requested);
1599
1600
1601 /* Drivers MUST set GPIO direction before making get/set calls.  In
1602  * some cases this is done in early boot, before IRQs are enabled.
1603  *
1604  * As a rule these aren't called more than once (except for drivers
1605  * using the open-drain emulation idiom) so these are natural places
1606  * to accumulate extra debugging checks.  Note that we can't (yet)
1607  * rely on gpio_request() having been called beforehand.
1608  */
1609
1610 static int gpiod_direction_input(struct gpio_desc *desc)
1611 {
1612         unsigned long           flags;
1613         struct gpio_chip        *chip;
1614         int                     status = -EINVAL;
1615         int                     offset;
1616
1617         spin_lock_irqsave(&gpio_lock, flags);
1618
1619         if (!desc)
1620                 goto fail;
1621         chip = desc->chip;
1622         if (!chip || !chip->get || !chip->direction_input)
1623                 goto fail;
1624         status = gpio_ensure_requested(desc);
1625         if (status < 0)
1626                 goto fail;
1627
1628         /* now we know the gpio is valid and chip won't vanish */
1629
1630         spin_unlock_irqrestore(&gpio_lock, flags);
1631
1632         might_sleep_if(chip->can_sleep);
1633
1634         offset = gpio_chip_hwgpio(desc);
1635         if (status) {
1636                 status = chip->request(chip, offset);
1637                 if (status < 0) {
1638                         pr_debug("GPIO-%d: chip request fail, %d\n",
1639                                 desc_to_gpio(desc), status);
1640                         /* and it's not available to anyone else ...
1641                          * gpio_request() is the fully clean solution.
1642                          */
1643                         goto lose;
1644                 }
1645         }
1646
1647         status = chip->direction_input(chip, offset);
1648         if (status == 0)
1649                 clear_bit(FLAG_IS_OUT, &desc->flags);
1650
1651         trace_gpio_direction(desc_to_gpio(desc), 1, status);
1652 lose:
1653         return status;
1654 fail:
1655         spin_unlock_irqrestore(&gpio_lock, flags);
1656         if (status) {
1657                 int gpio = -1;
1658                 if (desc)
1659                         gpio = desc_to_gpio(desc);
1660                 pr_debug("%s: gpio-%d status %d\n",
1661                         __func__, gpio, status);
1662         }
1663         return status;
1664 }
1665
1666 int gpio_direction_input(unsigned gpio)
1667 {
1668         return gpiod_direction_input(gpio_to_desc(gpio));
1669 }
1670 EXPORT_SYMBOL_GPL(gpio_direction_input);
1671
1672 static int gpiod_direction_output(struct gpio_desc *desc, int value)
1673 {
1674         unsigned long           flags;
1675         struct gpio_chip        *chip;
1676         int                     status = -EINVAL;
1677         int offset;
1678
1679         /* Open drain pin should not be driven to 1 */
1680         if (value && test_bit(FLAG_OPEN_DRAIN,  &desc->flags))
1681                 return gpiod_direction_input(desc);
1682
1683         /* Open source pin should not be driven to 0 */
1684         if (!value && test_bit(FLAG_OPEN_SOURCE,  &desc->flags))
1685                 return gpiod_direction_input(desc);
1686
1687         spin_lock_irqsave(&gpio_lock, flags);
1688
1689         if (!desc)
1690                 goto fail;
1691         chip = desc->chip;
1692         if (!chip || !chip->set || !chip->direction_output)
1693                 goto fail;
1694         status = gpio_ensure_requested(desc);
1695         if (status < 0)
1696                 goto fail;
1697
1698         /* now we know the gpio is valid and chip won't vanish */
1699
1700         spin_unlock_irqrestore(&gpio_lock, flags);
1701
1702         might_sleep_if(chip->can_sleep);
1703
1704         offset = gpio_chip_hwgpio(desc);
1705         if (status) {
1706                 status = chip->request(chip, offset);
1707                 if (status < 0) {
1708                         pr_debug("GPIO-%d: chip request fail, %d\n",
1709                                 desc_to_gpio(desc), status);
1710                         /* and it's not available to anyone else ...
1711                          * gpio_request() is the fully clean solution.
1712                          */
1713                         goto lose;
1714                 }
1715         }
1716
1717         status = chip->direction_output(chip, offset, value);
1718         if (status == 0)
1719                 set_bit(FLAG_IS_OUT, &desc->flags);
1720         trace_gpio_value(desc_to_gpio(desc), 0, value);
1721         trace_gpio_direction(desc_to_gpio(desc), 0, status);
1722 lose:
1723         return status;
1724 fail:
1725         spin_unlock_irqrestore(&gpio_lock, flags);
1726         if (status) {
1727                 int gpio = -1;
1728                 if (desc)
1729                         gpio = desc_to_gpio(desc);
1730                 pr_debug("%s: gpio-%d status %d\n",
1731                         __func__, gpio, status);
1732         }
1733         return status;
1734 }
1735
1736 int gpio_direction_output(unsigned gpio, int value)
1737 {
1738         return gpiod_direction_output(gpio_to_desc(gpio), value);
1739 }
1740 EXPORT_SYMBOL_GPL(gpio_direction_output);
1741
1742 /**
1743  * gpio_set_debounce - sets @debounce time for a @gpio
1744  * @gpio: the gpio to set debounce time
1745  * @debounce: debounce time is microseconds
1746  */
1747 static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce)
1748 {
1749         unsigned long           flags;
1750         struct gpio_chip        *chip;
1751         int                     status = -EINVAL;
1752         int                     offset;
1753
1754         spin_lock_irqsave(&gpio_lock, flags);
1755
1756         if (!desc)
1757                 goto fail;
1758         chip = desc->chip;
1759         if (!chip || !chip->set || !chip->set_debounce)
1760                 goto fail;
1761
1762         status = gpio_ensure_requested(desc);
1763         if (status < 0)
1764                 goto fail;
1765
1766         /* now we know the gpio is valid and chip won't vanish */
1767
1768         spin_unlock_irqrestore(&gpio_lock, flags);
1769
1770         might_sleep_if(chip->can_sleep);
1771
1772         offset = gpio_chip_hwgpio(desc);
1773         return chip->set_debounce(chip, offset, debounce);
1774
1775 fail:
1776         spin_unlock_irqrestore(&gpio_lock, flags);
1777         if (status) {
1778                 int gpio = -1;
1779                 if (desc)
1780                         gpio = desc_to_gpio(desc);
1781                 pr_debug("%s: gpio-%d status %d\n",
1782                         __func__, gpio, status);
1783         }
1784
1785         return status;
1786 }
1787
1788 int gpio_set_debounce(unsigned gpio, unsigned debounce)
1789 {
1790         return gpiod_set_debounce(gpio_to_desc(gpio), debounce);
1791 }
1792 EXPORT_SYMBOL_GPL(gpio_set_debounce);
1793
1794 /* I/O calls are only valid after configuration completed; the relevant
1795  * "is this a valid GPIO" error checks should already have been done.
1796  *
1797  * "Get" operations are often inlinable as reading a pin value register,
1798  * and masking the relevant bit in that register.
1799  *
1800  * When "set" operations are inlinable, they involve writing that mask to
1801  * one register to set a low value, or a different register to set it high.
1802  * Otherwise locking is needed, so there may be little value to inlining.
1803  *
1804  *------------------------------------------------------------------------
1805  *
1806  * IMPORTANT!!!  The hot paths -- get/set value -- assume that callers
1807  * have requested the GPIO.  That can include implicit requesting by
1808  * a direction setting call.  Marking a gpio as requested locks its chip
1809  * in memory, guaranteeing that these table lookups need no more locking
1810  * and that gpiochip_remove() will fail.
1811  *
1812  * REVISIT when debugging, consider adding some instrumentation to ensure
1813  * that the GPIO was actually requested.
1814  */
1815
1816 /**
1817  * __gpio_get_value() - return a gpio's value
1818  * @gpio: gpio whose value will be returned
1819  * Context: any
1820  *
1821  * This is used directly or indirectly to implement gpio_get_value().
1822  * It returns the zero or nonzero value provided by the associated
1823  * gpio_chip.get() method; or zero if no such method is provided.
1824  */
1825 static int gpiod_get_value(struct gpio_desc *desc)
1826 {
1827         struct gpio_chip        *chip;
1828         int value;
1829         int offset;
1830
1831         chip = desc->chip;
1832         offset = gpio_chip_hwgpio(desc);
1833         /* Should be using gpio_get_value_cansleep() */
1834         WARN_ON(chip->can_sleep);
1835         value = chip->get ? chip->get(chip, offset) : 0;
1836         trace_gpio_value(desc_to_gpio(desc), 1, value);
1837         return value;
1838 }
1839
1840 int __gpio_get_value(unsigned gpio)
1841 {
1842         return gpiod_get_value(gpio_to_desc(gpio));
1843 }
1844 EXPORT_SYMBOL_GPL(__gpio_get_value);
1845
1846 /*
1847  *  _gpio_set_open_drain_value() - Set the open drain gpio's value.
1848  * @gpio: Gpio whose state need to be set.
1849  * @chip: Gpio chip.
1850  * @value: Non-zero for setting it HIGH otherise it will set to LOW.
1851  */
1852 static void _gpio_set_open_drain_value(struct gpio_desc *desc, int value)
1853 {
1854         int err = 0;
1855         struct gpio_chip *chip = desc->chip;
1856         int offset = gpio_chip_hwgpio(desc);
1857
1858         if (value) {
1859                 err = chip->direction_input(chip, offset);
1860                 if (!err)
1861                         clear_bit(FLAG_IS_OUT, &desc->flags);
1862         } else {
1863                 err = chip->direction_output(chip, offset, 0);
1864                 if (!err)
1865                         set_bit(FLAG_IS_OUT, &desc->flags);
1866         }
1867         trace_gpio_direction(desc_to_gpio(desc), value, err);
1868         if (err < 0)
1869                 pr_err("%s: Error in set_value for open drain gpio%d err %d\n",
1870                                         __func__, desc_to_gpio(desc), err);
1871 }
1872
1873 /*
1874  *  _gpio_set_open_source() - Set the open source gpio's value.
1875  * @gpio: Gpio whose state need to be set.
1876  * @chip: Gpio chip.
1877  * @value: Non-zero for setting it HIGH otherise it will set to LOW.
1878  */
1879 static void _gpio_set_open_source_value(struct gpio_desc *desc, int value)
1880 {
1881         int err = 0;
1882         struct gpio_chip *chip = desc->chip;
1883         int offset = gpio_chip_hwgpio(desc);
1884
1885         if (value) {
1886                 err = chip->direction_output(chip, offset, 1);
1887                 if (!err)
1888                         set_bit(FLAG_IS_OUT, &desc->flags);
1889         } else {
1890                 err = chip->direction_input(chip, offset);
1891                 if (!err)
1892                         clear_bit(FLAG_IS_OUT, &desc->flags);
1893         }
1894         trace_gpio_direction(desc_to_gpio(desc), !value, err);
1895         if (err < 0)
1896                 pr_err("%s: Error in set_value for open source gpio%d err %d\n",
1897                                         __func__, desc_to_gpio(desc), err);
1898 }
1899
1900 /**
1901  * __gpio_set_value() - assign a gpio's value
1902  * @gpio: gpio whose value will be assigned
1903  * @value: value to assign
1904  * Context: any
1905  *
1906  * This is used directly or indirectly to implement gpio_set_value().
1907  * It invokes the associated gpio_chip.set() method.
1908  */
1909 static void gpiod_set_value(struct gpio_desc *desc, int value)
1910 {
1911         struct gpio_chip        *chip;
1912
1913         chip = desc->chip;
1914         /* Should be using gpio_set_value_cansleep() */
1915         WARN_ON(chip->can_sleep);
1916         trace_gpio_value(desc_to_gpio(desc), 0, value);
1917         if (test_bit(FLAG_OPEN_DRAIN, &desc->flags))
1918                 _gpio_set_open_drain_value(desc, value);
1919         else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags))
1920                 _gpio_set_open_source_value(desc, value);
1921         else
1922                 chip->set(chip, gpio_chip_hwgpio(desc), value);
1923 }
1924
1925 void __gpio_set_value(unsigned gpio, int value)
1926 {
1927         return gpiod_set_value(gpio_to_desc(gpio), value);
1928 }
1929 EXPORT_SYMBOL_GPL(__gpio_set_value);
1930
1931 /**
1932  * __gpio_cansleep() - report whether gpio value access will sleep
1933  * @gpio: gpio in question
1934  * Context: any
1935  *
1936  * This is used directly or indirectly to implement gpio_cansleep().  It
1937  * returns nonzero if access reading or writing the GPIO value can sleep.
1938  */
1939 static int gpiod_cansleep(struct gpio_desc *desc)
1940 {
1941         /* only call this on GPIOs that are valid! */
1942         return desc->chip->can_sleep;
1943 }
1944
1945 int __gpio_cansleep(unsigned gpio)
1946 {
1947         return gpiod_cansleep(gpio_to_desc(gpio));
1948 }
1949 EXPORT_SYMBOL_GPL(__gpio_cansleep);
1950
1951 /**
1952  * __gpio_to_irq() - return the IRQ corresponding to a GPIO
1953  * @gpio: gpio whose IRQ will be returned (already requested)
1954  * Context: any
1955  *
1956  * This is used directly or indirectly to implement gpio_to_irq().
1957  * It returns the number of the IRQ signaled by this (input) GPIO,
1958  * or a negative errno.
1959  */
1960 static int gpiod_to_irq(struct gpio_desc *desc)
1961 {
1962         struct gpio_chip        *chip;
1963         int                     offset;
1964
1965         chip = desc->chip;
1966         offset = gpio_chip_hwgpio(desc);
1967         return chip->to_irq ? chip->to_irq(chip, offset) : -ENXIO;
1968 }
1969
1970 int __gpio_to_irq(unsigned gpio)
1971 {
1972         return gpiod_to_irq(gpio_to_desc(gpio));
1973 }
1974 EXPORT_SYMBOL_GPL(__gpio_to_irq);
1975
1976
1977 /* There's no value in making it easy to inline GPIO calls that may sleep.
1978  * Common examples include ones connected to I2C or SPI chips.
1979  */
1980
1981 static int gpiod_get_value_cansleep(struct gpio_desc *desc)
1982 {
1983         struct gpio_chip        *chip;
1984         int value;
1985         int offset;
1986
1987         might_sleep_if(extra_checks);
1988         chip = desc->chip;
1989         offset = gpio_chip_hwgpio(desc);
1990         value = chip->get ? chip->get(chip, offset) : 0;
1991         trace_gpio_value(desc_to_gpio(desc), 1, value);
1992         return value;
1993 }
1994
1995 int gpio_get_value_cansleep(unsigned gpio)
1996 {
1997         return gpiod_get_value_cansleep(gpio_to_desc(gpio));
1998 }
1999 EXPORT_SYMBOL_GPL(gpio_get_value_cansleep);
2000
2001 static void gpiod_set_value_cansleep(struct gpio_desc *desc, int value)
2002 {
2003         struct gpio_chip        *chip;
2004
2005         might_sleep_if(extra_checks);
2006         chip = desc->chip;
2007         trace_gpio_value(desc_to_gpio(desc), 0, value);
2008         if (test_bit(FLAG_OPEN_DRAIN,  &desc->flags))
2009                 _gpio_set_open_drain_value(desc, value);
2010         else if (test_bit(FLAG_OPEN_SOURCE,  &desc->flags))
2011                 _gpio_set_open_source_value(desc, value);
2012         else
2013                 chip->set(chip, gpio_chip_hwgpio(desc), value);
2014 }
2015
2016 void gpio_set_value_cansleep(unsigned gpio, int value)
2017 {
2018         return gpiod_set_value_cansleep(gpio_to_desc(gpio), value);
2019 }
2020 EXPORT_SYMBOL_GPL(gpio_set_value_cansleep);
2021
2022 #ifdef CONFIG_DEBUG_FS
2023
2024 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip)
2025 {
2026         unsigned                i;
2027         unsigned                gpio = chip->base;
2028         struct gpio_desc        *gdesc = &gpio_desc[gpio];
2029         int                     is_out;
2030
2031         for (i = 0; i < chip->ngpio; i++, gpio++, gdesc++) {
2032                 if (!test_bit(FLAG_REQUESTED, &gdesc->flags))
2033                         continue;
2034
2035                 gpiod_get_direction(gdesc);
2036                 is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
2037                 seq_printf(s, " gpio-%-3d (%-20.20s) %s %s",
2038                         gpio, gdesc->label,
2039                         is_out ? "out" : "in ",
2040                         chip->get
2041                                 ? (chip->get(chip, i) ? "hi" : "lo")
2042                                 : "?  ");
2043                 seq_printf(s, "\n");
2044         }
2045 }
2046
2047 static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos)
2048 {
2049         struct gpio_chip *chip = NULL;
2050         loff_t index = *pos;
2051
2052         /* REVISIT this isn't locked against gpio_chip removal ... */
2053
2054         s->private = "";
2055
2056         list_for_each_entry(chip, &gpio_chips, list)
2057                 if (index-- == 0)
2058                         return chip;
2059
2060         return NULL;
2061 }
2062
2063 static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos)
2064 {
2065         struct gpio_chip *chip = v;
2066         void *ret = NULL;
2067
2068         if (list_is_last(&chip->list, &gpio_chips))
2069                 ret = NULL;
2070         else
2071                 ret = list_entry(chip->list.next, struct gpio_chip, list);
2072
2073         s->private = "\n";
2074         ++*pos;
2075
2076         return ret;
2077 }
2078
2079 static void gpiolib_seq_stop(struct seq_file *s, void *v)
2080 {
2081 }
2082
2083 static int gpiolib_seq_show(struct seq_file *s, void *v)
2084 {
2085         struct gpio_chip *chip = v;
2086         struct device *dev;
2087
2088         seq_printf(s, "%sGPIOs %d-%d", (char *)s->private,
2089                         chip->base, chip->base + chip->ngpio - 1);
2090         dev = chip->dev;
2091         if (dev)
2092                 seq_printf(s, ", %s/%s", dev->bus ? dev->bus->name : "no-bus",
2093                         dev_name(dev));
2094         if (chip->label)
2095                 seq_printf(s, ", %s", chip->label);
2096         if (chip->can_sleep)
2097                 seq_printf(s, ", can sleep");
2098         seq_printf(s, ":\n");
2099
2100         if (chip->dbg_show)
2101                 chip->dbg_show(s, chip);
2102         else
2103                 gpiolib_dbg_show(s, chip);
2104
2105         return 0;
2106 }
2107
2108 static const struct seq_operations gpiolib_seq_ops = {
2109         .start = gpiolib_seq_start,
2110         .next = gpiolib_seq_next,
2111         .stop = gpiolib_seq_stop,
2112         .show = gpiolib_seq_show,
2113 };
2114
2115 static int gpiolib_open(struct inode *inode, struct file *file)
2116 {
2117         return seq_open(file, &gpiolib_seq_ops);
2118 }
2119
2120 static const struct file_operations gpiolib_operations = {
2121         .owner          = THIS_MODULE,
2122         .open           = gpiolib_open,
2123         .read           = seq_read,
2124         .llseek         = seq_lseek,
2125         .release        = seq_release,
2126 };
2127
2128 static int __init gpiolib_debugfs_init(void)
2129 {
2130         /* /sys/kernel/debug/gpio */
2131         (void) debugfs_create_file("gpio", S_IFREG | S_IRUGO,
2132                                 NULL, NULL, &gpiolib_operations);
2133         return 0;
2134 }
2135 subsys_initcall(gpiolib_debugfs_init);
2136
2137 #endif  /* DEBUG_FS */