• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
desc_set_label(struct gpio_desc * d,const char * label)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  */
gpio_ensure_requested(struct gpio_desc * desc,unsigned offset)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 */
gpio_to_chip(unsigned gpio)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 */
gpiochip_find_base(int ngpio)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  */
gpiochip_reserve(int start,int ngpio)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 
gpio_direction_show(struct device * dev,struct device_attribute * attr,char * buf)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 
gpio_direction_store(struct device * dev,struct device_attribute * attr,const char * buf,size_t size)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 
gpio_value_show(struct device * dev,struct device_attribute * attr,char * buf)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 
gpio_value_store(struct device * dev,struct device_attribute * attr,const char * buf,size_t size)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 
chip_base_show(struct device * dev,struct device_attribute * attr,char * buf)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 
chip_label_show(struct device * dev,struct device_attribute * attr,char * buf)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 
chip_ngpio_show(struct device * dev,struct device_attribute * attr,char * buf)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  */
export_store(struct class * class,const char * buf,size_t len)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 
unexport_store(struct class * class,const char * buf,size_t len)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  */
gpio_export(unsigned gpio,bool direction_may_change)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 
match_export(struct device * dev,void * data)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  */
gpio_unexport(unsigned gpio)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 
gpiochip_export(struct gpio_chip * chip)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 
gpiochip_unexport(struct gpio_chip * chip)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 
gpiolib_sysfs_init(void)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
gpiochip_export(struct gpio_chip * chip)635 static inline int gpiochip_export(struct gpio_chip *chip)
636 {
637 	return 0;
638 }
639 
gpiochip_unexport(struct gpio_chip * chip)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  */
gpiochip_add(struct gpio_chip * chip)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  */
gpiochip_remove(struct gpio_chip * chip)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  */
gpio_request(unsigned gpio,const char * label)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 		goto done;
793 	}
794 
795 	if (chip->request) {
796 		/* chip->request may sleep */
797 		spin_unlock_irqrestore(&gpio_lock, flags);
798 		status = chip->request(chip, gpio - chip->base);
799 		spin_lock_irqsave(&gpio_lock, flags);
800 
801 		if (status < 0) {
802 			desc_set_label(desc, NULL);
803 			module_put(chip->owner);
804 			clear_bit(FLAG_REQUESTED, &desc->flags);
805 		}
806 	}
807 
808 done:
809 	if (status)
810 		pr_debug("gpio_request: gpio-%d (%s) status %d\n",
811 			gpio, label ? : "?", status);
812 	spin_unlock_irqrestore(&gpio_lock, flags);
813 	return status;
814 }
815 EXPORT_SYMBOL_GPL(gpio_request);
816 
gpio_free(unsigned gpio)817 void gpio_free(unsigned gpio)
818 {
819 	unsigned long		flags;
820 	struct gpio_desc	*desc;
821 	struct gpio_chip	*chip;
822 
823 	might_sleep();
824 
825 	if (!gpio_is_valid(gpio)) {
826 		WARN_ON(extra_checks);
827 		return;
828 	}
829 
830 	gpio_unexport(gpio);
831 
832 	spin_lock_irqsave(&gpio_lock, flags);
833 
834 	desc = &gpio_desc[gpio];
835 	chip = desc->chip;
836 	if (chip && test_bit(FLAG_REQUESTED, &desc->flags)) {
837 		if (chip->free) {
838 			spin_unlock_irqrestore(&gpio_lock, flags);
839 			might_sleep_if(extra_checks && chip->can_sleep);
840 			chip->free(chip, gpio - chip->base);
841 			spin_lock_irqsave(&gpio_lock, flags);
842 		}
843 		desc_set_label(desc, NULL);
844 		module_put(desc->chip->owner);
845 		clear_bit(FLAG_REQUESTED, &desc->flags);
846 	} else
847 		WARN_ON(extra_checks);
848 
849 	spin_unlock_irqrestore(&gpio_lock, flags);
850 }
851 EXPORT_SYMBOL_GPL(gpio_free);
852 
853 
854 /**
855  * gpiochip_is_requested - return string iff signal was requested
856  * @chip: controller managing the signal
857  * @offset: of signal within controller's 0..(ngpio - 1) range
858  *
859  * Returns NULL if the GPIO is not currently requested, else a string.
860  * If debugfs support is enabled, the string returned is the label passed
861  * to gpio_request(); otherwise it is a meaningless constant.
862  *
863  * This function is for use by GPIO controller drivers.  The label can
864  * help with diagnostics, and knowing that the signal is used as a GPIO
865  * can help avoid accidentally multiplexing it to another controller.
866  */
gpiochip_is_requested(struct gpio_chip * chip,unsigned offset)867 const char *gpiochip_is_requested(struct gpio_chip *chip, unsigned offset)
868 {
869 	unsigned gpio = chip->base + offset;
870 
871 	if (!gpio_is_valid(gpio) || gpio_desc[gpio].chip != chip)
872 		return NULL;
873 	if (test_bit(FLAG_REQUESTED, &gpio_desc[gpio].flags) == 0)
874 		return NULL;
875 #ifdef CONFIG_DEBUG_FS
876 	return gpio_desc[gpio].label;
877 #else
878 	return "?";
879 #endif
880 }
881 EXPORT_SYMBOL_GPL(gpiochip_is_requested);
882 
883 
884 /* Drivers MUST set GPIO direction before making get/set calls.  In
885  * some cases this is done in early boot, before IRQs are enabled.
886  *
887  * As a rule these aren't called more than once (except for drivers
888  * using the open-drain emulation idiom) so these are natural places
889  * to accumulate extra debugging checks.  Note that we can't (yet)
890  * rely on gpio_request() having been called beforehand.
891  */
892 
gpio_direction_input(unsigned gpio)893 int gpio_direction_input(unsigned gpio)
894 {
895 	unsigned long		flags;
896 	struct gpio_chip	*chip;
897 	struct gpio_desc	*desc = &gpio_desc[gpio];
898 	int			status = -EINVAL;
899 
900 	spin_lock_irqsave(&gpio_lock, flags);
901 
902 	if (!gpio_is_valid(gpio))
903 		goto fail;
904 	chip = desc->chip;
905 	if (!chip || !chip->get || !chip->direction_input)
906 		goto fail;
907 	gpio -= chip->base;
908 	if (gpio >= chip->ngpio)
909 		goto fail;
910 	status = gpio_ensure_requested(desc, gpio);
911 	if (status < 0)
912 		goto fail;
913 
914 	/* now we know the gpio is valid and chip won't vanish */
915 
916 	spin_unlock_irqrestore(&gpio_lock, flags);
917 
918 	might_sleep_if(extra_checks && chip->can_sleep);
919 
920 	if (status) {
921 		status = chip->request(chip, gpio);
922 		if (status < 0) {
923 			pr_debug("GPIO-%d: chip request fail, %d\n",
924 				chip->base + gpio, status);
925 			/* and it's not available to anyone else ...
926 			 * gpio_request() is the fully clean solution.
927 			 */
928 			goto lose;
929 		}
930 	}
931 
932 	status = chip->direction_input(chip, gpio);
933 	if (status == 0)
934 		clear_bit(FLAG_IS_OUT, &desc->flags);
935 lose:
936 	return status;
937 fail:
938 	spin_unlock_irqrestore(&gpio_lock, flags);
939 	if (status)
940 		pr_debug("%s: gpio-%d status %d\n",
941 			__func__, gpio, status);
942 	return status;
943 }
944 EXPORT_SYMBOL_GPL(gpio_direction_input);
945 
gpio_direction_output(unsigned gpio,int value)946 int gpio_direction_output(unsigned gpio, int value)
947 {
948 	unsigned long		flags;
949 	struct gpio_chip	*chip;
950 	struct gpio_desc	*desc = &gpio_desc[gpio];
951 	int			status = -EINVAL;
952 
953 	spin_lock_irqsave(&gpio_lock, flags);
954 
955 	if (!gpio_is_valid(gpio))
956 		goto fail;
957 	chip = desc->chip;
958 	if (!chip || !chip->set || !chip->direction_output)
959 		goto fail;
960 	gpio -= chip->base;
961 	if (gpio >= chip->ngpio)
962 		goto fail;
963 	status = gpio_ensure_requested(desc, gpio);
964 	if (status < 0)
965 		goto fail;
966 
967 	/* now we know the gpio is valid and chip won't vanish */
968 
969 	spin_unlock_irqrestore(&gpio_lock, flags);
970 
971 	might_sleep_if(extra_checks && chip->can_sleep);
972 
973 	if (status) {
974 		status = chip->request(chip, gpio);
975 		if (status < 0) {
976 			pr_debug("GPIO-%d: chip request fail, %d\n",
977 				chip->base + gpio, status);
978 			/* and it's not available to anyone else ...
979 			 * gpio_request() is the fully clean solution.
980 			 */
981 			goto lose;
982 		}
983 	}
984 
985 	status = chip->direction_output(chip, gpio, value);
986 	if (status == 0)
987 		set_bit(FLAG_IS_OUT, &desc->flags);
988 lose:
989 	return status;
990 fail:
991 	spin_unlock_irqrestore(&gpio_lock, flags);
992 	if (status)
993 		pr_debug("%s: gpio-%d status %d\n",
994 			__func__, gpio, status);
995 	return status;
996 }
997 EXPORT_SYMBOL_GPL(gpio_direction_output);
998 
999 
1000 /* I/O calls are only valid after configuration completed; the relevant
1001  * "is this a valid GPIO" error checks should already have been done.
1002  *
1003  * "Get" operations are often inlinable as reading a pin value register,
1004  * and masking the relevant bit in that register.
1005  *
1006  * When "set" operations are inlinable, they involve writing that mask to
1007  * one register to set a low value, or a different register to set it high.
1008  * Otherwise locking is needed, so there may be little value to inlining.
1009  *
1010  *------------------------------------------------------------------------
1011  *
1012  * IMPORTANT!!!  The hot paths -- get/set value -- assume that callers
1013  * have requested the GPIO.  That can include implicit requesting by
1014  * a direction setting call.  Marking a gpio as requested locks its chip
1015  * in memory, guaranteeing that these table lookups need no more locking
1016  * and that gpiochip_remove() will fail.
1017  *
1018  * REVISIT when debugging, consider adding some instrumentation to ensure
1019  * that the GPIO was actually requested.
1020  */
1021 
1022 /**
1023  * __gpio_get_value() - return a gpio's value
1024  * @gpio: gpio whose value will be returned
1025  * Context: any
1026  *
1027  * This is used directly or indirectly to implement gpio_get_value().
1028  * It returns the zero or nonzero value provided by the associated
1029  * gpio_chip.get() method; or zero if no such method is provided.
1030  */
__gpio_get_value(unsigned gpio)1031 int __gpio_get_value(unsigned gpio)
1032 {
1033 	struct gpio_chip	*chip;
1034 
1035 	chip = gpio_to_chip(gpio);
1036 	WARN_ON(extra_checks && chip->can_sleep);
1037 	return chip->get ? chip->get(chip, gpio - chip->base) : 0;
1038 }
1039 EXPORT_SYMBOL_GPL(__gpio_get_value);
1040 
1041 /**
1042  * __gpio_set_value() - assign a gpio's value
1043  * @gpio: gpio whose value will be assigned
1044  * @value: value to assign
1045  * Context: any
1046  *
1047  * This is used directly or indirectly to implement gpio_set_value().
1048  * It invokes the associated gpio_chip.set() method.
1049  */
__gpio_set_value(unsigned gpio,int value)1050 void __gpio_set_value(unsigned gpio, int value)
1051 {
1052 	struct gpio_chip	*chip;
1053 
1054 	chip = gpio_to_chip(gpio);
1055 	WARN_ON(extra_checks && chip->can_sleep);
1056 	chip->set(chip, gpio - chip->base, value);
1057 }
1058 EXPORT_SYMBOL_GPL(__gpio_set_value);
1059 
1060 /**
1061  * __gpio_cansleep() - report whether gpio value access will sleep
1062  * @gpio: gpio in question
1063  * Context: any
1064  *
1065  * This is used directly or indirectly to implement gpio_cansleep().  It
1066  * returns nonzero if access reading or writing the GPIO value can sleep.
1067  */
__gpio_cansleep(unsigned gpio)1068 int __gpio_cansleep(unsigned gpio)
1069 {
1070 	struct gpio_chip	*chip;
1071 
1072 	/* only call this on GPIOs that are valid! */
1073 	chip = gpio_to_chip(gpio);
1074 
1075 	return chip->can_sleep;
1076 }
1077 EXPORT_SYMBOL_GPL(__gpio_cansleep);
1078 
1079 /**
1080  * __gpio_to_irq() - return the IRQ corresponding to a GPIO
1081  * @gpio: gpio whose IRQ will be returned (already requested)
1082  * Context: any
1083  *
1084  * This is used directly or indirectly to implement gpio_to_irq().
1085  * It returns the number of the IRQ signaled by this (input) GPIO,
1086  * or a negative errno.
1087  */
__gpio_to_irq(unsigned gpio)1088 int __gpio_to_irq(unsigned gpio)
1089 {
1090 	struct gpio_chip	*chip;
1091 
1092 	chip = gpio_to_chip(gpio);
1093 	return chip->to_irq ? chip->to_irq(chip, gpio - chip->base) : -ENXIO;
1094 }
1095 EXPORT_SYMBOL_GPL(__gpio_to_irq);
1096 
1097 
1098 
1099 /* There's no value in making it easy to inline GPIO calls that may sleep.
1100  * Common examples include ones connected to I2C or SPI chips.
1101  */
1102 
gpio_get_value_cansleep(unsigned gpio)1103 int gpio_get_value_cansleep(unsigned gpio)
1104 {
1105 	struct gpio_chip	*chip;
1106 
1107 	might_sleep_if(extra_checks);
1108 	chip = gpio_to_chip(gpio);
1109 	return chip->get ? chip->get(chip, gpio - chip->base) : 0;
1110 }
1111 EXPORT_SYMBOL_GPL(gpio_get_value_cansleep);
1112 
gpio_set_value_cansleep(unsigned gpio,int value)1113 void gpio_set_value_cansleep(unsigned gpio, int value)
1114 {
1115 	struct gpio_chip	*chip;
1116 
1117 	might_sleep_if(extra_checks);
1118 	chip = gpio_to_chip(gpio);
1119 	chip->set(chip, gpio - chip->base, value);
1120 }
1121 EXPORT_SYMBOL_GPL(gpio_set_value_cansleep);
1122 
1123 
1124 #ifdef CONFIG_DEBUG_FS
1125 
gpiolib_dbg_show(struct seq_file * s,struct gpio_chip * chip)1126 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip)
1127 {
1128 	unsigned		i;
1129 	unsigned		gpio = chip->base;
1130 	struct gpio_desc	*gdesc = &gpio_desc[gpio];
1131 	int			is_out;
1132 
1133 	for (i = 0; i < chip->ngpio; i++, gpio++, gdesc++) {
1134 		if (!test_bit(FLAG_REQUESTED, &gdesc->flags))
1135 			continue;
1136 
1137 		is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
1138 		seq_printf(s, " gpio-%-3d (%-20.20s) %s %s",
1139 			gpio, gdesc->label,
1140 			is_out ? "out" : "in ",
1141 			chip->get
1142 				? (chip->get(chip, i) ? "hi" : "lo")
1143 				: "?  ");
1144 
1145 		if (!is_out) {
1146 			int		irq = gpio_to_irq(gpio);
1147 			struct irq_desc	*desc = irq_to_desc(irq);
1148 
1149 			/* This races with request_irq(), set_irq_type(),
1150 			 * and set_irq_wake() ... but those are "rare".
1151 			 *
1152 			 * More significantly, trigger type flags aren't
1153 			 * currently maintained by genirq.
1154 			 */
1155 			if (irq >= 0 && desc->action) {
1156 				char *trigger;
1157 
1158 				switch (desc->status & IRQ_TYPE_SENSE_MASK) {
1159 				case IRQ_TYPE_NONE:
1160 					trigger = "(default)";
1161 					break;
1162 				case IRQ_TYPE_EDGE_FALLING:
1163 					trigger = "edge-falling";
1164 					break;
1165 				case IRQ_TYPE_EDGE_RISING:
1166 					trigger = "edge-rising";
1167 					break;
1168 				case IRQ_TYPE_EDGE_BOTH:
1169 					trigger = "edge-both";
1170 					break;
1171 				case IRQ_TYPE_LEVEL_HIGH:
1172 					trigger = "level-high";
1173 					break;
1174 				case IRQ_TYPE_LEVEL_LOW:
1175 					trigger = "level-low";
1176 					break;
1177 				default:
1178 					trigger = "?trigger?";
1179 					break;
1180 				}
1181 
1182 				seq_printf(s, " irq-%d %s%s",
1183 					irq, trigger,
1184 					(desc->status & IRQ_WAKEUP)
1185 						? " wakeup" : "");
1186 			}
1187 		}
1188 
1189 		seq_printf(s, "\n");
1190 	}
1191 }
1192 
gpiolib_show(struct seq_file * s,void * unused)1193 static int gpiolib_show(struct seq_file *s, void *unused)
1194 {
1195 	struct gpio_chip	*chip = NULL;
1196 	unsigned		gpio;
1197 	int			started = 0;
1198 
1199 	/* REVISIT this isn't locked against gpio_chip removal ... */
1200 
1201 	for (gpio = 0; gpio_is_valid(gpio); gpio++) {
1202 		struct device *dev;
1203 
1204 		if (chip == gpio_desc[gpio].chip)
1205 			continue;
1206 		chip = gpio_desc[gpio].chip;
1207 		if (!chip)
1208 			continue;
1209 
1210 		seq_printf(s, "%sGPIOs %d-%d",
1211 				started ? "\n" : "",
1212 				chip->base, chip->base + chip->ngpio - 1);
1213 		dev = chip->dev;
1214 		if (dev)
1215 			seq_printf(s, ", %s/%s",
1216 				dev->bus ? dev->bus->name : "no-bus",
1217 				dev_name(dev));
1218 		if (chip->label)
1219 			seq_printf(s, ", %s", chip->label);
1220 		if (chip->can_sleep)
1221 			seq_printf(s, ", can sleep");
1222 		seq_printf(s, ":\n");
1223 
1224 		started = 1;
1225 		if (chip->dbg_show)
1226 			chip->dbg_show(s, chip);
1227 		else
1228 			gpiolib_dbg_show(s, chip);
1229 	}
1230 	return 0;
1231 }
1232 
gpiolib_open(struct inode * inode,struct file * file)1233 static int gpiolib_open(struct inode *inode, struct file *file)
1234 {
1235 	return single_open(file, gpiolib_show, NULL);
1236 }
1237 
1238 static struct file_operations gpiolib_operations = {
1239 	.open		= gpiolib_open,
1240 	.read		= seq_read,
1241 	.llseek		= seq_lseek,
1242 	.release	= single_release,
1243 };
1244 
gpiolib_debugfs_init(void)1245 static int __init gpiolib_debugfs_init(void)
1246 {
1247 	/* /sys/kernel/debug/gpio */
1248 	(void) debugfs_create_file("gpio", S_IFREG | S_IRUGO,
1249 				NULL, NULL, &gpiolib_operations);
1250 	return 0;
1251 }
1252 subsys_initcall(gpiolib_debugfs_init);
1253 
1254 #endif	/* DEBUG_FS */
1255