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