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