Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6] / drivers / gpio / gpiolib.c
1 #include <linux/kernel.h>
2 #include <linux/module.h>
3 #include <linux/irq.h>
4 #include <linux/spinlock.h>
5 #include <linux/device.h>
6 #include <linux/err.h>
7 #include <linux/debugfs.h>
8 #include <linux/seq_file.h>
9 #include <linux/gpio.h>
10
11
12 /* Optional implementation infrastructure for GPIO interfaces.
13  *
14  * Platforms may want to use this if they tend to use very many GPIOs
15  * that aren't part of a System-On-Chip core; or across I2C/SPI/etc.
16  *
17  * When kernel footprint or instruction count is an issue, simpler
18  * implementations may be preferred.  The GPIO programming interface
19  * allows for inlining speed-critical get/set operations for common
20  * cases, so that access to SOC-integrated GPIOs can sometimes cost
21  * only an instruction or two per bit.
22  */
23
24
25 /* When debugging, extend minimal trust to callers and platform code.
26  * Also emit diagnostic messages that may help initial bringup, when
27  * board setup or driver bugs are most common.
28  *
29  * Otherwise, minimize overhead in what may be bitbanging codepaths.
30  */
31 #ifdef  DEBUG
32 #define extra_checks    1
33 #else
34 #define extra_checks    0
35 #endif
36
37 /* gpio_lock prevents conflicts during gpio_desc[] table updates.
38  * While any GPIO is requested, its gpio_chip is not removable;
39  * each GPIO's "requested" flag serves as a lock and refcount.
40  */
41 static DEFINE_SPINLOCK(gpio_lock);
42
43 struct gpio_desc {
44         struct gpio_chip        *chip;
45         unsigned long           flags;
46 /* flag symbols are bit numbers */
47 #define FLAG_REQUESTED  0
48 #define FLAG_IS_OUT     1
49 #define FLAG_RESERVED   2
50 #define FLAG_EXPORT     3       /* protected by sysfs_lock */
51 #define FLAG_SYSFS      4       /* exported via /sys/class/gpio/control */
52
53 #ifdef CONFIG_DEBUG_FS
54         const char              *label;
55 #endif
56 };
57 static struct gpio_desc gpio_desc[ARCH_NR_GPIOS];
58
59 static inline void desc_set_label(struct gpio_desc *d, const char *label)
60 {
61 #ifdef CONFIG_DEBUG_FS
62         d->label = label;
63 #endif
64 }
65
66 /* Warn when drivers omit gpio_request() calls -- legal but ill-advised
67  * when setting direction, and otherwise illegal.  Until board setup code
68  * and drivers use explicit requests everywhere (which won't happen when
69  * those calls have no teeth) we can't avoid autorequesting.  This nag
70  * message should motivate switching to explicit requests... so should
71  * the weaker cleanup after faults, compared to gpio_request().
72  *
73  * NOTE: the autorequest mechanism is going away; at this point it's
74  * only "legal" in the sense that (old) code using it won't break yet,
75  * but instead only triggers a WARN() stack dump.
76  */
77 static int gpio_ensure_requested(struct gpio_desc *desc, unsigned offset)
78 {
79         const struct gpio_chip *chip = desc->chip;
80         const int gpio = chip->base + offset;
81
82         if (WARN(test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0,
83                         "autorequest GPIO-%d\n", gpio)) {
84                 if (!try_module_get(chip->owner)) {
85                         pr_err("GPIO-%d: module can't be gotten \n", gpio);
86                         clear_bit(FLAG_REQUESTED, &desc->flags);
87                         /* lose */
88                         return -EIO;
89                 }
90                 desc_set_label(desc, "[auto]");
91                 /* caller must chip->request() w/o spinlock */
92                 if (chip->request)
93                         return 1;
94         }
95         return 0;
96 }
97
98 /* caller holds gpio_lock *OR* gpio is marked as requested */
99 static inline struct gpio_chip *gpio_to_chip(unsigned gpio)
100 {
101         return gpio_desc[gpio].chip;
102 }
103
104 /* dynamic allocation of GPIOs, e.g. on a hotplugged device */
105 static int gpiochip_find_base(int ngpio)
106 {
107         int i;
108         int spare = 0;
109         int base = -ENOSPC;
110
111         for (i = ARCH_NR_GPIOS - 1; i >= 0 ; i--) {
112                 struct gpio_desc *desc = &gpio_desc[i];
113                 struct gpio_chip *chip = desc->chip;
114
115                 if (!chip && !test_bit(FLAG_RESERVED, &desc->flags)) {
116                         spare++;
117                         if (spare == ngpio) {
118                                 base = i;
119                                 break;
120                         }
121                 } else {
122                         spare = 0;
123                         if (chip)
124                                 i -= chip->ngpio - 1;
125                 }
126         }
127
128         if (gpio_is_valid(base))
129                 pr_debug("%s: found new base at %d\n", __func__, base);
130         return base;
131 }
132
133 /**
134  * gpiochip_reserve() - reserve range of gpios to use with platform code only
135  * @start: starting gpio number
136  * @ngpio: number of gpios to reserve
137  * Context: platform init, potentially before irqs or kmalloc will work
138  *
139  * Returns a negative errno if any gpio within the range is already reserved
140  * or registered, else returns zero as a success code.  Use this function
141  * to mark a range of gpios as unavailable for dynamic gpio number allocation,
142  * for example because its driver support is not yet loaded.
143  */
144 int __init gpiochip_reserve(int start, int ngpio)
145 {
146         int ret = 0;
147         unsigned long flags;
148         int i;
149
150         if (!gpio_is_valid(start) || !gpio_is_valid(start + ngpio - 1))
151                 return -EINVAL;
152
153         spin_lock_irqsave(&gpio_lock, flags);
154
155         for (i = start; i < start + ngpio; i++) {
156                 struct gpio_desc *desc = &gpio_desc[i];
157
158                 if (desc->chip || test_bit(FLAG_RESERVED, &desc->flags)) {
159                         ret = -EBUSY;
160                         goto err;
161                 }
162
163                 set_bit(FLAG_RESERVED, &desc->flags);
164         }
165
166         pr_debug("%s: reserved gpios from %d to %d\n",
167                  __func__, start, start + ngpio - 1);
168 err:
169         spin_unlock_irqrestore(&gpio_lock, flags);
170
171         return ret;
172 }
173
174 #ifdef CONFIG_GPIO_SYSFS
175
176 /* lock protects against unexport_gpio() being called while
177  * sysfs files are active.
178  */
179 static DEFINE_MUTEX(sysfs_lock);
180
181 /*
182  * /sys/class/gpio/gpioN... only for GPIOs that are exported
183  *   /direction
184  *      * MAY BE OMITTED if kernel won't allow direction changes
185  *      * is read/write as "in" or "out"
186  *      * may also be written as "high" or "low", initializing
187  *        output value as specified ("out" implies "low")
188  *   /value
189  *      * always readable, subject to hardware behavior
190  *      * may be writable, as zero/nonzero
191  *
192  * REVISIT there will likely be an attribute for configuring async
193  * notifications, e.g. to specify polling interval or IRQ trigger type
194  * that would for example trigger a poll() on the "value".
195  */
196
197 static ssize_t gpio_direction_show(struct device *dev,
198                 struct device_attribute *attr, char *buf)
199 {
200         const struct gpio_desc  *desc = dev_get_drvdata(dev);
201         ssize_t                 status;
202
203         mutex_lock(&sysfs_lock);
204
205         if (!test_bit(FLAG_EXPORT, &desc->flags))
206                 status = -EIO;
207         else
208                 status = sprintf(buf, "%s\n",
209                         test_bit(FLAG_IS_OUT, &desc->flags)
210                                 ? "out" : "in");
211
212         mutex_unlock(&sysfs_lock);
213         return status;
214 }
215
216 static ssize_t gpio_direction_store(struct device *dev,
217                 struct device_attribute *attr, const char *buf, size_t size)
218 {
219         const struct gpio_desc  *desc = dev_get_drvdata(dev);
220         unsigned                gpio = desc - gpio_desc;
221         ssize_t                 status;
222
223         mutex_lock(&sysfs_lock);
224
225         if (!test_bit(FLAG_EXPORT, &desc->flags))
226                 status = -EIO;
227         else if (sysfs_streq(buf, "high"))
228                 status = gpio_direction_output(gpio, 1);
229         else if (sysfs_streq(buf, "out") || sysfs_streq(buf, "low"))
230                 status = gpio_direction_output(gpio, 0);
231         else if (sysfs_streq(buf, "in"))
232                 status = gpio_direction_input(gpio);
233         else
234                 status = -EINVAL;
235
236         mutex_unlock(&sysfs_lock);
237         return status ? : size;
238 }
239
240 static const DEVICE_ATTR(direction, 0644,
241                 gpio_direction_show, gpio_direction_store);
242
243 static ssize_t gpio_value_show(struct device *dev,
244                 struct device_attribute *attr, char *buf)
245 {
246         const struct gpio_desc  *desc = dev_get_drvdata(dev);
247         unsigned                gpio = desc - gpio_desc;
248         ssize_t                 status;
249
250         mutex_lock(&sysfs_lock);
251
252         if (!test_bit(FLAG_EXPORT, &desc->flags))
253                 status = -EIO;
254         else
255                 status = sprintf(buf, "%d\n", !!gpio_get_value_cansleep(gpio));
256
257         mutex_unlock(&sysfs_lock);
258         return status;
259 }
260
261 static ssize_t gpio_value_store(struct device *dev,
262                 struct device_attribute *attr, const char *buf, size_t size)
263 {
264         const struct gpio_desc  *desc = dev_get_drvdata(dev);
265         unsigned                gpio = desc - gpio_desc;
266         ssize_t                 status;
267
268         mutex_lock(&sysfs_lock);
269
270         if (!test_bit(FLAG_EXPORT, &desc->flags))
271                 status = -EIO;
272         else if (!test_bit(FLAG_IS_OUT, &desc->flags))
273                 status = -EPERM;
274         else {
275                 long            value;
276
277                 status = strict_strtol(buf, 0, &value);
278                 if (status == 0) {
279                         gpio_set_value_cansleep(gpio, value != 0);
280                         status = size;
281                 }
282         }
283
284         mutex_unlock(&sysfs_lock);
285         return status;
286 }
287
288 static /*const*/ DEVICE_ATTR(value, 0644,
289                 gpio_value_show, gpio_value_store);
290
291 static const struct attribute *gpio_attrs[] = {
292         &dev_attr_direction.attr,
293         &dev_attr_value.attr,
294         NULL,
295 };
296
297 static const struct attribute_group gpio_attr_group = {
298         .attrs = (struct attribute **) gpio_attrs,
299 };
300
301 /*
302  * /sys/class/gpio/gpiochipN/
303  *   /base ... matching gpio_chip.base (N)
304  *   /label ... matching gpio_chip.label
305  *   /ngpio ... matching gpio_chip.ngpio
306  */
307
308 static ssize_t chip_base_show(struct device *dev,
309                                struct device_attribute *attr, char *buf)
310 {
311         const struct gpio_chip  *chip = dev_get_drvdata(dev);
312
313         return sprintf(buf, "%d\n", chip->base);
314 }
315 static DEVICE_ATTR(base, 0444, chip_base_show, NULL);
316
317 static ssize_t chip_label_show(struct device *dev,
318                                struct device_attribute *attr, char *buf)
319 {
320         const struct gpio_chip  *chip = dev_get_drvdata(dev);
321
322         return sprintf(buf, "%s\n", chip->label ? : "");
323 }
324 static DEVICE_ATTR(label, 0444, chip_label_show, NULL);
325
326 static ssize_t chip_ngpio_show(struct device *dev,
327                                struct device_attribute *attr, char *buf)
328 {
329         const struct gpio_chip  *chip = dev_get_drvdata(dev);
330
331         return sprintf(buf, "%u\n", chip->ngpio);
332 }
333 static DEVICE_ATTR(ngpio, 0444, chip_ngpio_show, NULL);
334
335 static const struct attribute *gpiochip_attrs[] = {
336         &dev_attr_base.attr,
337         &dev_attr_label.attr,
338         &dev_attr_ngpio.attr,
339         NULL,
340 };
341
342 static const struct attribute_group gpiochip_attr_group = {
343         .attrs = (struct attribute **) gpiochip_attrs,
344 };
345
346 /*
347  * /sys/class/gpio/export ... write-only
348  *      integer N ... number of GPIO to export (full access)
349  * /sys/class/gpio/unexport ... write-only
350  *      integer N ... number of GPIO to unexport
351  */
352 static ssize_t export_store(struct class *class, const char *buf, size_t len)
353 {
354         long    gpio;
355         int     status;
356
357         status = strict_strtol(buf, 0, &gpio);
358         if (status < 0)
359                 goto done;
360
361         /* No extra locking here; FLAG_SYSFS just signifies that the
362          * request and export were done by on behalf of userspace, so
363          * they may be undone on its behalf too.
364          */
365
366         status = gpio_request(gpio, "sysfs");
367         if (status < 0)
368                 goto done;
369
370         status = gpio_export(gpio, true);
371         if (status < 0)
372                 gpio_free(gpio);
373         else
374                 set_bit(FLAG_SYSFS, &gpio_desc[gpio].flags);
375
376 done:
377         if (status)
378                 pr_debug("%s: status %d\n", __func__, status);
379         return status ? : len;
380 }
381
382 static ssize_t unexport_store(struct class *class, const char *buf, size_t len)
383 {
384         long    gpio;
385         int     status;
386
387         status = strict_strtol(buf, 0, &gpio);
388         if (status < 0)
389                 goto done;
390
391         status = -EINVAL;
392
393         /* reject bogus commands (gpio_unexport ignores them) */
394         if (!gpio_is_valid(gpio))
395                 goto done;
396
397         /* No extra locking here; FLAG_SYSFS just signifies that the
398          * request and export were done by on behalf of userspace, so
399          * they may be undone on its behalf too.
400          */
401         if (test_and_clear_bit(FLAG_SYSFS, &gpio_desc[gpio].flags)) {
402                 status = 0;
403                 gpio_free(gpio);
404         }
405 done:
406         if (status)
407                 pr_debug("%s: status %d\n", __func__, status);
408         return status ? : len;
409 }
410
411 static struct class_attribute gpio_class_attrs[] = {
412         __ATTR(export, 0200, NULL, export_store),
413         __ATTR(unexport, 0200, NULL, unexport_store),
414         __ATTR_NULL,
415 };
416
417 static struct class gpio_class = {
418         .name =         "gpio",
419         .owner =        THIS_MODULE,
420
421         .class_attrs =  gpio_class_attrs,
422 };
423
424
425 /**
426  * gpio_export - export a GPIO through sysfs
427  * @gpio: gpio to make available, already requested
428  * @direction_may_change: true if userspace may change gpio direction
429  * Context: arch_initcall or later
430  *
431  * When drivers want to make a GPIO accessible to userspace after they
432  * have requested it -- perhaps while debugging, or as part of their
433  * public interface -- they may use this routine.  If the GPIO can
434  * change direction (some can't) and the caller allows it, userspace
435  * will see "direction" sysfs attribute which may be used to change
436  * the gpio's direction.  A "value" attribute will always be provided.
437  *
438  * Returns zero on success, else an error.
439  */
440 int gpio_export(unsigned gpio, bool direction_may_change)
441 {
442         unsigned long           flags;
443         struct gpio_desc        *desc;
444         int                     status = -EINVAL;
445         char                    *ioname = NULL;
446
447         /* can't export until sysfs is available ... */
448         if (!gpio_class.p) {
449                 pr_debug("%s: called too early!\n", __func__);
450                 return -ENOENT;
451         }
452
453         if (!gpio_is_valid(gpio))
454                 goto done;
455
456         mutex_lock(&sysfs_lock);
457
458         spin_lock_irqsave(&gpio_lock, flags);
459         desc = &gpio_desc[gpio];
460         if (test_bit(FLAG_REQUESTED, &desc->flags)
461                         && !test_bit(FLAG_EXPORT, &desc->flags)) {
462                 status = 0;
463                 if (!desc->chip->direction_input
464                                 || !desc->chip->direction_output)
465                         direction_may_change = false;
466         }
467         spin_unlock_irqrestore(&gpio_lock, flags);
468
469         if (desc->chip->names && desc->chip->names[gpio - desc->chip->base])
470                 ioname = desc->chip->names[gpio - desc->chip->base];
471
472         if (status == 0) {
473                 struct device   *dev;
474
475                 dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0),
476                                     desc, ioname ? ioname : "gpio%d", gpio);
477                 if (dev) {
478                         if (direction_may_change)
479                                 status = sysfs_create_group(&dev->kobj,
480                                                 &gpio_attr_group);
481                         else
482                                 status = device_create_file(dev,
483                                                 &dev_attr_value);
484                         if (status != 0)
485                                 device_unregister(dev);
486                 } else
487                         status = -ENODEV;
488                 if (status == 0)
489                         set_bit(FLAG_EXPORT, &desc->flags);
490         }
491
492         mutex_unlock(&sysfs_lock);
493
494 done:
495         if (status)
496                 pr_debug("%s: gpio%d status %d\n", __func__, gpio, status);
497
498         return status;
499 }
500 EXPORT_SYMBOL_GPL(gpio_export);
501
502 static int match_export(struct device *dev, void *data)
503 {
504         return dev_get_drvdata(dev) == data;
505 }
506
507 /**
508  * gpio_unexport - reverse effect of gpio_export()
509  * @gpio: gpio to make unavailable
510  *
511  * This is implicit on gpio_free().
512  */
513 void gpio_unexport(unsigned gpio)
514 {
515         struct gpio_desc        *desc;
516         int                     status = -EINVAL;
517
518         if (!gpio_is_valid(gpio))
519                 goto done;
520
521         mutex_lock(&sysfs_lock);
522
523         desc = &gpio_desc[gpio];
524
525         if (test_bit(FLAG_EXPORT, &desc->flags)) {
526                 struct device   *dev = NULL;
527
528                 dev = class_find_device(&gpio_class, NULL, desc, match_export);
529                 if (dev) {
530                         clear_bit(FLAG_EXPORT, &desc->flags);
531                         put_device(dev);
532                         device_unregister(dev);
533                         status = 0;
534                 } else
535                         status = -ENODEV;
536         }
537
538         mutex_unlock(&sysfs_lock);
539 done:
540         if (status)
541                 pr_debug("%s: gpio%d status %d\n", __func__, gpio, status);
542 }
543 EXPORT_SYMBOL_GPL(gpio_unexport);
544
545 static int gpiochip_export(struct gpio_chip *chip)
546 {
547         int             status;
548         struct device   *dev;
549
550         /* Many systems register gpio chips for SOC support very early,
551          * before driver model support is available.  In those cases we
552          * export this later, in gpiolib_sysfs_init() ... here we just
553          * verify that _some_ field of gpio_class got initialized.
554          */
555         if (!gpio_class.p)
556                 return 0;
557
558         /* use chip->base for the ID; it's already known to be unique */
559         mutex_lock(&sysfs_lock);
560         dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip,
561                                 "gpiochip%d", chip->base);
562         if (dev) {
563                 status = sysfs_create_group(&dev->kobj,
564                                 &gpiochip_attr_group);
565         } else
566                 status = -ENODEV;
567         chip->exported = (status == 0);
568         mutex_unlock(&sysfs_lock);
569
570         if (status) {
571                 unsigned long   flags;
572                 unsigned        gpio;
573
574                 spin_lock_irqsave(&gpio_lock, flags);
575                 gpio = chip->base;
576                 while (gpio_desc[gpio].chip == chip)
577                         gpio_desc[gpio++].chip = NULL;
578                 spin_unlock_irqrestore(&gpio_lock, flags);
579
580                 pr_debug("%s: chip %s status %d\n", __func__,
581                                 chip->label, status);
582         }
583
584         return status;
585 }
586
587 static void gpiochip_unexport(struct gpio_chip *chip)
588 {
589         int                     status;
590         struct device           *dev;
591
592         mutex_lock(&sysfs_lock);
593         dev = class_find_device(&gpio_class, NULL, chip, match_export);
594         if (dev) {
595                 put_device(dev);
596                 device_unregister(dev);
597                 chip->exported = 0;
598                 status = 0;
599         } else
600                 status = -ENODEV;
601         mutex_unlock(&sysfs_lock);
602
603         if (status)
604                 pr_debug("%s: chip %s status %d\n", __func__,
605                                 chip->label, status);
606 }
607
608 static int __init gpiolib_sysfs_init(void)
609 {
610         int             status;
611         unsigned long   flags;
612         unsigned        gpio;
613
614         status = class_register(&gpio_class);
615         if (status < 0)
616                 return status;
617
618         /* Scan and register the gpio_chips which registered very
619          * early (e.g. before the class_register above was called).
620          *
621          * We run before arch_initcall() so chip->dev nodes can have
622          * registered, and so arch_initcall() can always gpio_export().
623          */
624         spin_lock_irqsave(&gpio_lock, flags);
625         for (gpio = 0; gpio < ARCH_NR_GPIOS; gpio++) {
626                 struct gpio_chip        *chip;
627
628                 chip = gpio_desc[gpio].chip;
629                 if (!chip || chip->exported)
630                         continue;
631
632                 spin_unlock_irqrestore(&gpio_lock, flags);
633                 status = gpiochip_export(chip);
634                 spin_lock_irqsave(&gpio_lock, flags);
635         }
636         spin_unlock_irqrestore(&gpio_lock, flags);
637
638
639         return status;
640 }
641 postcore_initcall(gpiolib_sysfs_init);
642
643 #else
644 static inline int gpiochip_export(struct gpio_chip *chip)
645 {
646         return 0;
647 }
648
649 static inline void gpiochip_unexport(struct gpio_chip *chip)
650 {
651 }
652
653 #endif /* CONFIG_GPIO_SYSFS */
654
655 /**
656  * gpiochip_add() - register a gpio_chip
657  * @chip: the chip to register, with chip->base initialized
658  * Context: potentially before irqs or kmalloc will work
659  *
660  * Returns a negative errno if the chip can't be registered, such as
661  * because the chip->base is invalid or already associated with a
662  * different chip.  Otherwise it returns zero as a success code.
663  *
664  * When gpiochip_add() is called very early during boot, so that GPIOs
665  * can be freely used, the chip->dev device must be registered before
666  * the gpio framework's arch_initcall().  Otherwise sysfs initialization
667  * for GPIOs will fail rudely.
668  *
669  * If chip->base is negative, this requests dynamic assignment of
670  * a range of valid GPIOs.
671  */
672 int gpiochip_add(struct gpio_chip *chip)
673 {
674         unsigned long   flags;
675         int             status = 0;
676         unsigned        id;
677         int             base = chip->base;
678
679         if ((!gpio_is_valid(base) || !gpio_is_valid(base + chip->ngpio - 1))
680                         && base >= 0) {
681                 status = -EINVAL;
682                 goto fail;
683         }
684
685         spin_lock_irqsave(&gpio_lock, flags);
686
687         if (base < 0) {
688                 base = gpiochip_find_base(chip->ngpio);
689                 if (base < 0) {
690                         status = base;
691                         goto unlock;
692                 }
693                 chip->base = base;
694         }
695
696         /* these GPIO numbers must not be managed by another gpio_chip */
697         for (id = base; id < base + chip->ngpio; id++) {
698                 if (gpio_desc[id].chip != NULL) {
699                         status = -EBUSY;
700                         break;
701                 }
702         }
703         if (status == 0) {
704                 for (id = base; id < base + chip->ngpio; id++) {
705                         gpio_desc[id].chip = chip;
706
707                         /* REVISIT:  most hardware initializes GPIOs as
708                          * inputs (often with pullups enabled) so power
709                          * usage is minimized.  Linux code should set the
710                          * gpio direction first thing; but until it does,
711                          * we may expose the wrong direction in sysfs.
712                          */
713                         gpio_desc[id].flags = !chip->direction_input
714                                 ? (1 << FLAG_IS_OUT)
715                                 : 0;
716                 }
717         }
718
719 unlock:
720         spin_unlock_irqrestore(&gpio_lock, flags);
721         if (status == 0)
722                 status = gpiochip_export(chip);
723 fail:
724         /* failures here can mean systems won't boot... */
725         if (status)
726                 pr_err("gpiochip_add: gpios %d..%d (%s) not registered\n",
727                         chip->base, chip->base + chip->ngpio - 1,
728                         chip->label ? : "generic");
729         return status;
730 }
731 EXPORT_SYMBOL_GPL(gpiochip_add);
732
733 /**
734  * gpiochip_remove() - unregister a gpio_chip
735  * @chip: the chip to unregister
736  *
737  * A gpio_chip with any GPIOs still requested may not be removed.
738  */
739 int gpiochip_remove(struct gpio_chip *chip)
740 {
741         unsigned long   flags;
742         int             status = 0;
743         unsigned        id;
744
745         spin_lock_irqsave(&gpio_lock, flags);
746
747         for (id = chip->base; id < chip->base + chip->ngpio; id++) {
748                 if (test_bit(FLAG_REQUESTED, &gpio_desc[id].flags)) {
749                         status = -EBUSY;
750                         break;
751                 }
752         }
753         if (status == 0) {
754                 for (id = chip->base; id < chip->base + chip->ngpio; id++)
755                         gpio_desc[id].chip = NULL;
756         }
757
758         spin_unlock_irqrestore(&gpio_lock, flags);
759
760         if (status == 0)
761                 gpiochip_unexport(chip);
762
763         return status;
764 }
765 EXPORT_SYMBOL_GPL(gpiochip_remove);
766
767
768 /* These "optional" allocation calls help prevent drivers from stomping
769  * on each other, and help provide better diagnostics in debugfs.
770  * They're called even less than the "set direction" calls.
771  */
772 int gpio_request(unsigned gpio, const char *label)
773 {
774         struct gpio_desc        *desc;
775         struct gpio_chip        *chip;
776         int                     status = -EINVAL;
777         unsigned long           flags;
778
779         spin_lock_irqsave(&gpio_lock, flags);
780
781         if (!gpio_is_valid(gpio))
782                 goto done;
783         desc = &gpio_desc[gpio];
784         chip = desc->chip;
785         if (chip == NULL)
786                 goto done;
787
788         if (!try_module_get(chip->owner))
789                 goto done;
790
791         /* NOTE:  gpio_request() can be called in early boot,
792          * before IRQs are enabled, for non-sleeping (SOC) GPIOs.
793          */
794
795         if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
796                 desc_set_label(desc, label ? : "?");
797                 status = 0;
798         } else {
799                 status = -EBUSY;
800                 module_put(chip->owner);
801                 goto done;
802         }
803
804         if (chip->request) {
805                 /* chip->request may sleep */
806                 spin_unlock_irqrestore(&gpio_lock, flags);
807                 status = chip->request(chip, gpio - chip->base);
808                 spin_lock_irqsave(&gpio_lock, flags);
809
810                 if (status < 0) {
811                         desc_set_label(desc, NULL);
812                         module_put(chip->owner);
813                         clear_bit(FLAG_REQUESTED, &desc->flags);
814                 }
815         }
816
817 done:
818         if (status)
819                 pr_debug("gpio_request: gpio-%d (%s) status %d\n",
820                         gpio, label ? : "?", status);
821         spin_unlock_irqrestore(&gpio_lock, flags);
822         return status;
823 }
824 EXPORT_SYMBOL_GPL(gpio_request);
825
826 void gpio_free(unsigned gpio)
827 {
828         unsigned long           flags;
829         struct gpio_desc        *desc;
830         struct gpio_chip        *chip;
831
832         might_sleep();
833
834         if (!gpio_is_valid(gpio)) {
835                 WARN_ON(extra_checks);
836                 return;
837         }
838
839         gpio_unexport(gpio);
840
841         spin_lock_irqsave(&gpio_lock, flags);
842
843         desc = &gpio_desc[gpio];
844         chip = desc->chip;
845         if (chip && test_bit(FLAG_REQUESTED, &desc->flags)) {
846                 if (chip->free) {
847                         spin_unlock_irqrestore(&gpio_lock, flags);
848                         might_sleep_if(extra_checks && chip->can_sleep);
849                         chip->free(chip, gpio - chip->base);
850                         spin_lock_irqsave(&gpio_lock, flags);
851                 }
852                 desc_set_label(desc, NULL);
853                 module_put(desc->chip->owner);
854                 clear_bit(FLAG_REQUESTED, &desc->flags);
855         } else
856                 WARN_ON(extra_checks);
857
858         spin_unlock_irqrestore(&gpio_lock, flags);
859 }
860 EXPORT_SYMBOL_GPL(gpio_free);
861
862
863 /**
864  * gpiochip_is_requested - return string iff signal was requested
865  * @chip: controller managing the signal
866  * @offset: of signal within controller's 0..(ngpio - 1) range
867  *
868  * Returns NULL if the GPIO is not currently requested, else a string.
869  * If debugfs support is enabled, the string returned is the label passed
870  * to gpio_request(); otherwise it is a meaningless constant.
871  *
872  * This function is for use by GPIO controller drivers.  The label can
873  * help with diagnostics, and knowing that the signal is used as a GPIO
874  * can help avoid accidentally multiplexing it to another controller.
875  */
876 const char *gpiochip_is_requested(struct gpio_chip *chip, unsigned offset)
877 {
878         unsigned gpio = chip->base + offset;
879
880         if (!gpio_is_valid(gpio) || gpio_desc[gpio].chip != chip)
881                 return NULL;
882         if (test_bit(FLAG_REQUESTED, &gpio_desc[gpio].flags) == 0)
883                 return NULL;
884 #ifdef CONFIG_DEBUG_FS
885         return gpio_desc[gpio].label;
886 #else
887         return "?";
888 #endif
889 }
890 EXPORT_SYMBOL_GPL(gpiochip_is_requested);
891
892
893 /* Drivers MUST set GPIO direction before making get/set calls.  In
894  * some cases this is done in early boot, before IRQs are enabled.
895  *
896  * As a rule these aren't called more than once (except for drivers
897  * using the open-drain emulation idiom) so these are natural places
898  * to accumulate extra debugging checks.  Note that we can't (yet)
899  * rely on gpio_request() having been called beforehand.
900  */
901
902 int gpio_direction_input(unsigned gpio)
903 {
904         unsigned long           flags;
905         struct gpio_chip        *chip;
906         struct gpio_desc        *desc = &gpio_desc[gpio];
907         int                     status = -EINVAL;
908
909         spin_lock_irqsave(&gpio_lock, flags);
910
911         if (!gpio_is_valid(gpio))
912                 goto fail;
913         chip = desc->chip;
914         if (!chip || !chip->get || !chip->direction_input)
915                 goto fail;
916         gpio -= chip->base;
917         if (gpio >= chip->ngpio)
918                 goto fail;
919         status = gpio_ensure_requested(desc, gpio);
920         if (status < 0)
921                 goto fail;
922
923         /* now we know the gpio is valid and chip won't vanish */
924
925         spin_unlock_irqrestore(&gpio_lock, flags);
926
927         might_sleep_if(extra_checks && chip->can_sleep);
928
929         if (status) {
930                 status = chip->request(chip, gpio);
931                 if (status < 0) {
932                         pr_debug("GPIO-%d: chip request fail, %d\n",
933                                 chip->base + gpio, status);
934                         /* and it's not available to anyone else ...
935                          * gpio_request() is the fully clean solution.
936                          */
937                         goto lose;
938                 }
939         }
940
941         status = chip->direction_input(chip, gpio);
942         if (status == 0)
943                 clear_bit(FLAG_IS_OUT, &desc->flags);
944 lose:
945         return status;
946 fail:
947         spin_unlock_irqrestore(&gpio_lock, flags);
948         if (status)
949                 pr_debug("%s: gpio-%d status %d\n",
950                         __func__, gpio, status);
951         return status;
952 }
953 EXPORT_SYMBOL_GPL(gpio_direction_input);
954
955 int gpio_direction_output(unsigned gpio, int value)
956 {
957         unsigned long           flags;
958         struct gpio_chip        *chip;
959         struct gpio_desc        *desc = &gpio_desc[gpio];
960         int                     status = -EINVAL;
961
962         spin_lock_irqsave(&gpio_lock, flags);
963
964         if (!gpio_is_valid(gpio))
965                 goto fail;
966         chip = desc->chip;
967         if (!chip || !chip->set || !chip->direction_output)
968                 goto fail;
969         gpio -= chip->base;
970         if (gpio >= chip->ngpio)
971                 goto fail;
972         status = gpio_ensure_requested(desc, gpio);
973         if (status < 0)
974                 goto fail;
975
976         /* now we know the gpio is valid and chip won't vanish */
977
978         spin_unlock_irqrestore(&gpio_lock, flags);
979
980         might_sleep_if(extra_checks && chip->can_sleep);
981
982         if (status) {
983                 status = chip->request(chip, gpio);
984                 if (status < 0) {
985                         pr_debug("GPIO-%d: chip request fail, %d\n",
986                                 chip->base + gpio, status);
987                         /* and it's not available to anyone else ...
988                          * gpio_request() is the fully clean solution.
989                          */
990                         goto lose;
991                 }
992         }
993
994         status = chip->direction_output(chip, gpio, value);
995         if (status == 0)
996                 set_bit(FLAG_IS_OUT, &desc->flags);
997 lose:
998         return status;
999 fail:
1000         spin_unlock_irqrestore(&gpio_lock, flags);
1001         if (status)
1002                 pr_debug("%s: gpio-%d status %d\n",
1003                         __func__, gpio, status);
1004         return status;
1005 }
1006 EXPORT_SYMBOL_GPL(gpio_direction_output);
1007
1008
1009 /* I/O calls are only valid after configuration completed; the relevant
1010  * "is this a valid GPIO" error checks should already have been done.
1011  *
1012  * "Get" operations are often inlinable as reading a pin value register,
1013  * and masking the relevant bit in that register.
1014  *
1015  * When "set" operations are inlinable, they involve writing that mask to
1016  * one register to set a low value, or a different register to set it high.
1017  * Otherwise locking is needed, so there may be little value to inlining.
1018  *
1019  *------------------------------------------------------------------------
1020  *
1021  * IMPORTANT!!!  The hot paths -- get/set value -- assume that callers
1022  * have requested the GPIO.  That can include implicit requesting by
1023  * a direction setting call.  Marking a gpio as requested locks its chip
1024  * in memory, guaranteeing that these table lookups need no more locking
1025  * and that gpiochip_remove() will fail.
1026  *
1027  * REVISIT when debugging, consider adding some instrumentation to ensure
1028  * that the GPIO was actually requested.
1029  */
1030
1031 /**
1032  * __gpio_get_value() - return a gpio's value
1033  * @gpio: gpio whose value will be returned
1034  * Context: any
1035  *
1036  * This is used directly or indirectly to implement gpio_get_value().
1037  * It returns the zero or nonzero value provided by the associated
1038  * gpio_chip.get() method; or zero if no such method is provided.
1039  */
1040 int __gpio_get_value(unsigned gpio)
1041 {
1042         struct gpio_chip        *chip;
1043
1044         chip = gpio_to_chip(gpio);
1045         WARN_ON(extra_checks && chip->can_sleep);
1046         return chip->get ? chip->get(chip, gpio - chip->base) : 0;
1047 }
1048 EXPORT_SYMBOL_GPL(__gpio_get_value);
1049
1050 /**
1051  * __gpio_set_value() - assign a gpio's value
1052  * @gpio: gpio whose value will be assigned
1053  * @value: value to assign
1054  * Context: any
1055  *
1056  * This is used directly or indirectly to implement gpio_set_value().
1057  * It invokes the associated gpio_chip.set() method.
1058  */
1059 void __gpio_set_value(unsigned gpio, int value)
1060 {
1061         struct gpio_chip        *chip;
1062
1063         chip = gpio_to_chip(gpio);
1064         WARN_ON(extra_checks && chip->can_sleep);
1065         chip->set(chip, gpio - chip->base, value);
1066 }
1067 EXPORT_SYMBOL_GPL(__gpio_set_value);
1068
1069 /**
1070  * __gpio_cansleep() - report whether gpio value access will sleep
1071  * @gpio: gpio in question
1072  * Context: any
1073  *
1074  * This is used directly or indirectly to implement gpio_cansleep().  It
1075  * returns nonzero if access reading or writing the GPIO value can sleep.
1076  */
1077 int __gpio_cansleep(unsigned gpio)
1078 {
1079         struct gpio_chip        *chip;
1080
1081         /* only call this on GPIOs that are valid! */
1082         chip = gpio_to_chip(gpio);
1083
1084         return chip->can_sleep;
1085 }
1086 EXPORT_SYMBOL_GPL(__gpio_cansleep);
1087
1088 /**
1089  * __gpio_to_irq() - return the IRQ corresponding to a GPIO
1090  * @gpio: gpio whose IRQ will be returned (already requested)
1091  * Context: any
1092  *
1093  * This is used directly or indirectly to implement gpio_to_irq().
1094  * It returns the number of the IRQ signaled by this (input) GPIO,
1095  * or a negative errno.
1096  */
1097 int __gpio_to_irq(unsigned gpio)
1098 {
1099         struct gpio_chip        *chip;
1100
1101         chip = gpio_to_chip(gpio);
1102         return chip->to_irq ? chip->to_irq(chip, gpio - chip->base) : -ENXIO;
1103 }
1104 EXPORT_SYMBOL_GPL(__gpio_to_irq);
1105
1106
1107
1108 /* There's no value in making it easy to inline GPIO calls that may sleep.
1109  * Common examples include ones connected to I2C or SPI chips.
1110  */
1111
1112 int gpio_get_value_cansleep(unsigned gpio)
1113 {
1114         struct gpio_chip        *chip;
1115
1116         might_sleep_if(extra_checks);
1117         chip = gpio_to_chip(gpio);
1118         return chip->get ? chip->get(chip, gpio - chip->base) : 0;
1119 }
1120 EXPORT_SYMBOL_GPL(gpio_get_value_cansleep);
1121
1122 void gpio_set_value_cansleep(unsigned gpio, int value)
1123 {
1124         struct gpio_chip        *chip;
1125
1126         might_sleep_if(extra_checks);
1127         chip = gpio_to_chip(gpio);
1128         chip->set(chip, gpio - chip->base, value);
1129 }
1130 EXPORT_SYMBOL_GPL(gpio_set_value_cansleep);
1131
1132
1133 #ifdef CONFIG_DEBUG_FS
1134
1135 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip)
1136 {
1137         unsigned                i;
1138         unsigned                gpio = chip->base;
1139         struct gpio_desc        *gdesc = &gpio_desc[gpio];
1140         int                     is_out;
1141
1142         for (i = 0; i < chip->ngpio; i++, gpio++, gdesc++) {
1143                 if (!test_bit(FLAG_REQUESTED, &gdesc->flags))
1144                         continue;
1145
1146                 is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
1147                 seq_printf(s, " gpio-%-3d (%-20.20s) %s %s",
1148                         gpio, gdesc->label,
1149                         is_out ? "out" : "in ",
1150                         chip->get
1151                                 ? (chip->get(chip, i) ? "hi" : "lo")
1152                                 : "?  ");
1153
1154                 if (!is_out) {
1155                         int             irq = gpio_to_irq(gpio);
1156                         struct irq_desc *desc = irq_to_desc(irq);
1157
1158                         /* This races with request_irq(), set_irq_type(),
1159                          * and set_irq_wake() ... but those are "rare".
1160                          *
1161                          * More significantly, trigger type flags aren't
1162                          * currently maintained by genirq.
1163                          */
1164                         if (irq >= 0 && desc->action) {
1165                                 char *trigger;
1166
1167                                 switch (desc->status & IRQ_TYPE_SENSE_MASK) {
1168                                 case IRQ_TYPE_NONE:
1169                                         trigger = "(default)";
1170                                         break;
1171                                 case IRQ_TYPE_EDGE_FALLING:
1172                                         trigger = "edge-falling";
1173                                         break;
1174                                 case IRQ_TYPE_EDGE_RISING:
1175                                         trigger = "edge-rising";
1176                                         break;
1177                                 case IRQ_TYPE_EDGE_BOTH:
1178                                         trigger = "edge-both";
1179                                         break;
1180                                 case IRQ_TYPE_LEVEL_HIGH:
1181                                         trigger = "level-high";
1182                                         break;
1183                                 case IRQ_TYPE_LEVEL_LOW:
1184                                         trigger = "level-low";
1185                                         break;
1186                                 default:
1187                                         trigger = "?trigger?";
1188                                         break;
1189                                 }
1190
1191                                 seq_printf(s, " irq-%d %s%s",
1192                                         irq, trigger,
1193                                         (desc->status & IRQ_WAKEUP)
1194                                                 ? " wakeup" : "");
1195                         }
1196                 }
1197
1198                 seq_printf(s, "\n");
1199         }
1200 }
1201
1202 static int gpiolib_show(struct seq_file *s, void *unused)
1203 {
1204         struct gpio_chip        *chip = NULL;
1205         unsigned                gpio;
1206         int                     started = 0;
1207
1208         /* REVISIT this isn't locked against gpio_chip removal ... */
1209
1210         for (gpio = 0; gpio_is_valid(gpio); gpio++) {
1211                 struct device *dev;
1212
1213                 if (chip == gpio_desc[gpio].chip)
1214                         continue;
1215                 chip = gpio_desc[gpio].chip;
1216                 if (!chip)
1217                         continue;
1218
1219                 seq_printf(s, "%sGPIOs %d-%d",
1220                                 started ? "\n" : "",
1221                                 chip->base, chip->base + chip->ngpio - 1);
1222                 dev = chip->dev;
1223                 if (dev)
1224                         seq_printf(s, ", %s/%s",
1225                                 dev->bus ? dev->bus->name : "no-bus",
1226                                 dev_name(dev));
1227                 if (chip->label)
1228                         seq_printf(s, ", %s", chip->label);
1229                 if (chip->can_sleep)
1230                         seq_printf(s, ", can sleep");
1231                 seq_printf(s, ":\n");
1232
1233                 started = 1;
1234                 if (chip->dbg_show)
1235                         chip->dbg_show(s, chip);
1236                 else
1237                         gpiolib_dbg_show(s, chip);
1238         }
1239         return 0;
1240 }
1241
1242 static int gpiolib_open(struct inode *inode, struct file *file)
1243 {
1244         return single_open(file, gpiolib_show, NULL);
1245 }
1246
1247 static struct file_operations gpiolib_operations = {
1248         .open           = gpiolib_open,
1249         .read           = seq_read,
1250         .llseek         = seq_lseek,
1251         .release        = single_release,
1252 };
1253
1254 static int __init gpiolib_debugfs_init(void)
1255 {
1256         /* /sys/kernel/debug/gpio */
1257         (void) debugfs_create_file("gpio", S_IFREG | S_IRUGO,
1258                                 NULL, NULL, &gpiolib_operations);
1259         return 0;
1260 }
1261 subsys_initcall(gpiolib_debugfs_init);
1262
1263 #endif  /* DEBUG_FS */