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