xref: /openbmc/linux/drivers/gpio/gpiolib.c (revision b627b4ed)
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 */
1264