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