gpiolib.c revision 8c0fca8153224822121c85a64d6401903b9e4690
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/list.h>
7#include <linux/device.h>
8#include <linux/err.h>
9#include <linux/debugfs.h>
10#include <linux/seq_file.h>
11#include <linux/gpio.h>
12#include <linux/of_gpio.h>
13#include <linux/idr.h>
14#include <linux/slab.h>
15
16#define CREATE_TRACE_POINTS
17#include <trace/events/gpio.h>
18
19/* Optional implementation infrastructure for GPIO interfaces.
20 *
21 * Platforms may want to use this if they tend to use very many GPIOs
22 * that aren't part of a System-On-Chip core; or across I2C/SPI/etc.
23 *
24 * When kernel footprint or instruction count is an issue, simpler
25 * implementations may be preferred.  The GPIO programming interface
26 * allows for inlining speed-critical get/set operations for common
27 * cases, so that access to SOC-integrated GPIOs can sometimes cost
28 * only an instruction or two per bit.
29 */
30
31
32/* When debugging, extend minimal trust to callers and platform code.
33 * Also emit diagnostic messages that may help initial bringup, when
34 * board setup or driver bugs are most common.
35 *
36 * Otherwise, minimize overhead in what may be bitbanging codepaths.
37 */
38#ifdef	DEBUG
39#define	extra_checks	1
40#else
41#define	extra_checks	0
42#endif
43
44/* gpio_lock prevents conflicts during gpio_desc[] table updates.
45 * While any GPIO is requested, its gpio_chip is not removable;
46 * each GPIO's "requested" flag serves as a lock and refcount.
47 */
48static DEFINE_SPINLOCK(gpio_lock);
49
50struct gpio_desc {
51	struct gpio_chip	*chip;
52	unsigned long		flags;
53/* flag symbols are bit numbers */
54#define FLAG_REQUESTED	0
55#define FLAG_IS_OUT	1
56#define FLAG_EXPORT	2	/* protected by sysfs_lock */
57#define FLAG_SYSFS	3	/* exported via /sys/class/gpio/control */
58#define FLAG_TRIG_FALL	4	/* trigger on falling edge */
59#define FLAG_TRIG_RISE	5	/* trigger on rising edge */
60#define FLAG_ACTIVE_LOW	6	/* sysfs value has active low */
61#define FLAG_OPEN_DRAIN	7	/* Gpio is open drain type */
62#define FLAG_OPEN_SOURCE 8	/* Gpio is open source type */
63
64#define ID_SHIFT	16	/* add new flags before this one */
65
66#define GPIO_FLAGS_MASK		((1 << ID_SHIFT) - 1)
67#define GPIO_TRIGGER_MASK	(BIT(FLAG_TRIG_FALL) | BIT(FLAG_TRIG_RISE))
68
69#ifdef CONFIG_DEBUG_FS
70	const char		*label;
71#endif
72};
73static struct gpio_desc gpio_desc[ARCH_NR_GPIOS];
74
75#define GPIO_OFFSET_VALID(chip, offset) (offset >= 0 && offset < chip->ngpio)
76
77static LIST_HEAD(gpio_chips);
78
79#ifdef CONFIG_GPIO_SYSFS
80static DEFINE_IDR(dirent_idr);
81#endif
82
83/*
84 * Internal gpiod_* API using descriptors instead of the integer namespace.
85 * Most of this should eventually go public.
86 */
87static int gpiod_request(struct gpio_desc *desc, const char *label);
88static void gpiod_free(struct gpio_desc *desc);
89static int gpiod_direction_input(struct gpio_desc *desc);
90static int gpiod_direction_output(struct gpio_desc *desc, int value);
91static int gpiod_get_direction(const struct gpio_desc *desc);
92static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce);
93static int gpiod_get_value_cansleep(const struct gpio_desc *desc);
94static void gpiod_set_value_cansleep(struct gpio_desc *desc, int value);
95static int gpiod_get_value(const struct gpio_desc *desc);
96static void gpiod_set_value(struct gpio_desc *desc, int value);
97static int gpiod_cansleep(const struct gpio_desc *desc);
98static int gpiod_to_irq(const struct gpio_desc *desc);
99static int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
100static int gpiod_export_link(struct device *dev, const char *name,
101			     struct gpio_desc *desc);
102static int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value);
103static void gpiod_unexport(struct gpio_desc *desc);
104
105
106static inline void desc_set_label(struct gpio_desc *d, const char *label)
107{
108#ifdef CONFIG_DEBUG_FS
109	d->label = label;
110#endif
111}
112
113/*
114 * Return the GPIO number of the passed descriptor relative to its chip
115 */
116static int gpio_chip_hwgpio(const struct gpio_desc *desc)
117{
118	return desc - &desc->chip->desc[0];
119}
120
121/**
122 * Convert a GPIO number to its descriptor
123 */
124static struct gpio_desc *gpio_to_desc(unsigned gpio)
125{
126	if (WARN(!gpio_is_valid(gpio), "invalid GPIO %d\n", gpio))
127		return NULL;
128	else
129		return &gpio_desc[gpio];
130}
131
132/**
133 * Convert a GPIO descriptor to the integer namespace.
134 * This should disappear in the future but is needed since we still
135 * use GPIO numbers for error messages and sysfs nodes
136 */
137static int desc_to_gpio(const struct gpio_desc *desc)
138{
139	return desc - &gpio_desc[0];
140}
141
142
143/* Warn when drivers omit gpio_request() calls -- legal but ill-advised
144 * when setting direction, and otherwise illegal.  Until board setup code
145 * and drivers use explicit requests everywhere (which won't happen when
146 * those calls have no teeth) we can't avoid autorequesting.  This nag
147 * message should motivate switching to explicit requests... so should
148 * the weaker cleanup after faults, compared to gpio_request().
149 *
150 * NOTE: the autorequest mechanism is going away; at this point it's
151 * only "legal" in the sense that (old) code using it won't break yet,
152 * but instead only triggers a WARN() stack dump.
153 */
154static int gpio_ensure_requested(struct gpio_desc *desc)
155{
156	const struct gpio_chip *chip = desc->chip;
157	const int gpio = desc_to_gpio(desc);
158
159	if (WARN(test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0,
160			"autorequest GPIO-%d\n", gpio)) {
161		if (!try_module_get(chip->owner)) {
162			pr_err("GPIO-%d: module can't be gotten \n", gpio);
163			clear_bit(FLAG_REQUESTED, &desc->flags);
164			/* lose */
165			return -EIO;
166		}
167		desc_set_label(desc, "[auto]");
168		/* caller must chip->request() w/o spinlock */
169		if (chip->request)
170			return 1;
171	}
172	return 0;
173}
174
175static struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc)
176{
177	return desc ? desc->chip : NULL;
178}
179
180/* caller holds gpio_lock *OR* gpio is marked as requested */
181struct gpio_chip *gpio_to_chip(unsigned gpio)
182{
183	return gpiod_to_chip(gpio_to_desc(gpio));
184}
185
186/* dynamic allocation of GPIOs, e.g. on a hotplugged device */
187static int gpiochip_find_base(int ngpio)
188{
189	struct gpio_chip *chip;
190	int base = ARCH_NR_GPIOS - ngpio;
191
192	list_for_each_entry_reverse(chip, &gpio_chips, list) {
193		/* found a free space? */
194		if (chip->base + chip->ngpio <= base)
195			break;
196		else
197			/* nope, check the space right before the chip */
198			base = chip->base - ngpio;
199	}
200
201	if (gpio_is_valid(base)) {
202		pr_debug("%s: found new base at %d\n", __func__, base);
203		return base;
204	} else {
205		pr_err("%s: cannot find free range\n", __func__);
206		return -ENOSPC;
207	}
208}
209
210/* caller ensures gpio is valid and requested, chip->get_direction may sleep  */
211static int gpiod_get_direction(const struct gpio_desc *desc)
212{
213	struct gpio_chip	*chip;
214	unsigned		offset;
215	int			status = -EINVAL;
216
217	chip = gpiod_to_chip(desc);
218	offset = gpio_chip_hwgpio(desc);
219
220	if (!chip->get_direction)
221		return status;
222
223	status = chip->get_direction(chip, offset);
224	if (status > 0) {
225		/* GPIOF_DIR_IN, or other positive */
226		status = 1;
227		/* FLAG_IS_OUT is just a cache of the result of get_direction(),
228		 * so it does not affect constness per se */
229		clear_bit(FLAG_IS_OUT, &((struct gpio_desc *)desc)->flags);
230	}
231	if (status == 0) {
232		/* GPIOF_DIR_OUT */
233		set_bit(FLAG_IS_OUT, &((struct gpio_desc *)desc)->flags);
234	}
235	return status;
236}
237
238#ifdef CONFIG_GPIO_SYSFS
239
240/* lock protects against unexport_gpio() being called while
241 * sysfs files are active.
242 */
243static DEFINE_MUTEX(sysfs_lock);
244
245/*
246 * /sys/class/gpio/gpioN... only for GPIOs that are exported
247 *   /direction
248 *      * MAY BE OMITTED if kernel won't allow direction changes
249 *      * is read/write as "in" or "out"
250 *      * may also be written as "high" or "low", initializing
251 *        output value as specified ("out" implies "low")
252 *   /value
253 *      * always readable, subject to hardware behavior
254 *      * may be writable, as zero/nonzero
255 *   /edge
256 *      * configures behavior of poll(2) on /value
257 *      * available only if pin can generate IRQs on input
258 *      * is read/write as "none", "falling", "rising", or "both"
259 *   /active_low
260 *      * configures polarity of /value
261 *      * is read/write as zero/nonzero
262 *      * also affects existing and subsequent "falling" and "rising"
263 *        /edge configuration
264 */
265
266static ssize_t gpio_direction_show(struct device *dev,
267		struct device_attribute *attr, char *buf)
268{
269	const struct gpio_desc	*desc = dev_get_drvdata(dev);
270	ssize_t			status;
271
272	mutex_lock(&sysfs_lock);
273
274	if (!test_bit(FLAG_EXPORT, &desc->flags)) {
275		status = -EIO;
276	} else {
277		gpiod_get_direction(desc);
278		status = sprintf(buf, "%s\n",
279			test_bit(FLAG_IS_OUT, &desc->flags)
280				? "out" : "in");
281	}
282
283	mutex_unlock(&sysfs_lock);
284	return status;
285}
286
287static ssize_t gpio_direction_store(struct device *dev,
288		struct device_attribute *attr, const char *buf, size_t size)
289{
290	struct gpio_desc	*desc = dev_get_drvdata(dev);
291	ssize_t			status;
292
293	mutex_lock(&sysfs_lock);
294
295	if (!test_bit(FLAG_EXPORT, &desc->flags))
296		status = -EIO;
297	else if (sysfs_streq(buf, "high"))
298		status = gpiod_direction_output(desc, 1);
299	else if (sysfs_streq(buf, "out") || sysfs_streq(buf, "low"))
300		status = gpiod_direction_output(desc, 0);
301	else if (sysfs_streq(buf, "in"))
302		status = gpiod_direction_input(desc);
303	else
304		status = -EINVAL;
305
306	mutex_unlock(&sysfs_lock);
307	return status ? : size;
308}
309
310static /* const */ DEVICE_ATTR(direction, 0644,
311		gpio_direction_show, gpio_direction_store);
312
313static ssize_t gpio_value_show(struct device *dev,
314		struct device_attribute *attr, char *buf)
315{
316	struct gpio_desc	*desc = dev_get_drvdata(dev);
317	ssize_t			status;
318
319	mutex_lock(&sysfs_lock);
320
321	if (!test_bit(FLAG_EXPORT, &desc->flags)) {
322		status = -EIO;
323	} else {
324		int value;
325
326		value = !!gpiod_get_value_cansleep(desc);
327		if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
328			value = !value;
329
330		status = sprintf(buf, "%d\n", value);
331	}
332
333	mutex_unlock(&sysfs_lock);
334	return status;
335}
336
337static ssize_t gpio_value_store(struct device *dev,
338		struct device_attribute *attr, const char *buf, size_t size)
339{
340	struct gpio_desc	*desc = dev_get_drvdata(dev);
341	ssize_t			status;
342
343	mutex_lock(&sysfs_lock);
344
345	if (!test_bit(FLAG_EXPORT, &desc->flags))
346		status = -EIO;
347	else if (!test_bit(FLAG_IS_OUT, &desc->flags))
348		status = -EPERM;
349	else {
350		long		value;
351
352		status = kstrtol(buf, 0, &value);
353		if (status == 0) {
354			if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
355				value = !value;
356			gpiod_set_value_cansleep(desc, value != 0);
357			status = size;
358		}
359	}
360
361	mutex_unlock(&sysfs_lock);
362	return status;
363}
364
365static const DEVICE_ATTR(value, 0644,
366		gpio_value_show, gpio_value_store);
367
368static irqreturn_t gpio_sysfs_irq(int irq, void *priv)
369{
370	struct sysfs_dirent	*value_sd = priv;
371
372	sysfs_notify_dirent(value_sd);
373	return IRQ_HANDLED;
374}
375
376static int gpio_setup_irq(struct gpio_desc *desc, struct device *dev,
377		unsigned long gpio_flags)
378{
379	struct sysfs_dirent	*value_sd;
380	unsigned long		irq_flags;
381	int			ret, irq, id;
382
383	if ((desc->flags & GPIO_TRIGGER_MASK) == gpio_flags)
384		return 0;
385
386	irq = gpiod_to_irq(desc);
387	if (irq < 0)
388		return -EIO;
389
390	id = desc->flags >> ID_SHIFT;
391	value_sd = idr_find(&dirent_idr, id);
392	if (value_sd)
393		free_irq(irq, value_sd);
394
395	desc->flags &= ~GPIO_TRIGGER_MASK;
396
397	if (!gpio_flags) {
398		ret = 0;
399		goto free_id;
400	}
401
402	irq_flags = IRQF_SHARED;
403	if (test_bit(FLAG_TRIG_FALL, &gpio_flags))
404		irq_flags |= test_bit(FLAG_ACTIVE_LOW, &desc->flags) ?
405			IRQF_TRIGGER_RISING : IRQF_TRIGGER_FALLING;
406	if (test_bit(FLAG_TRIG_RISE, &gpio_flags))
407		irq_flags |= test_bit(FLAG_ACTIVE_LOW, &desc->flags) ?
408			IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING;
409
410	if (!value_sd) {
411		value_sd = sysfs_get_dirent(dev->kobj.sd, NULL, "value");
412		if (!value_sd) {
413			ret = -ENODEV;
414			goto err_out;
415		}
416
417		ret = idr_alloc(&dirent_idr, value_sd, 1, 0, GFP_KERNEL);
418		if (ret < 0)
419			goto free_sd;
420		id = ret;
421
422		desc->flags &= GPIO_FLAGS_MASK;
423		desc->flags |= (unsigned long)id << ID_SHIFT;
424
425		if (desc->flags >> ID_SHIFT != id) {
426			ret = -ERANGE;
427			goto free_id;
428		}
429	}
430
431	ret = request_any_context_irq(irq, gpio_sysfs_irq, irq_flags,
432				"gpiolib", value_sd);
433	if (ret < 0)
434		goto free_id;
435
436	desc->flags |= gpio_flags;
437	return 0;
438
439free_id:
440	idr_remove(&dirent_idr, id);
441	desc->flags &= GPIO_FLAGS_MASK;
442free_sd:
443	if (value_sd)
444		sysfs_put(value_sd);
445err_out:
446	return ret;
447}
448
449static const struct {
450	const char *name;
451	unsigned long flags;
452} trigger_types[] = {
453	{ "none",    0 },
454	{ "falling", BIT(FLAG_TRIG_FALL) },
455	{ "rising",  BIT(FLAG_TRIG_RISE) },
456	{ "both",    BIT(FLAG_TRIG_FALL) | BIT(FLAG_TRIG_RISE) },
457};
458
459static ssize_t gpio_edge_show(struct device *dev,
460		struct device_attribute *attr, char *buf)
461{
462	const struct gpio_desc	*desc = dev_get_drvdata(dev);
463	ssize_t			status;
464
465	mutex_lock(&sysfs_lock);
466
467	if (!test_bit(FLAG_EXPORT, &desc->flags))
468		status = -EIO;
469	else {
470		int i;
471
472		status = 0;
473		for (i = 0; i < ARRAY_SIZE(trigger_types); i++)
474			if ((desc->flags & GPIO_TRIGGER_MASK)
475					== trigger_types[i].flags) {
476				status = sprintf(buf, "%s\n",
477						 trigger_types[i].name);
478				break;
479			}
480	}
481
482	mutex_unlock(&sysfs_lock);
483	return status;
484}
485
486static ssize_t gpio_edge_store(struct device *dev,
487		struct device_attribute *attr, const char *buf, size_t size)
488{
489	struct gpio_desc	*desc = dev_get_drvdata(dev);
490	ssize_t			status;
491	int			i;
492
493	for (i = 0; i < ARRAY_SIZE(trigger_types); i++)
494		if (sysfs_streq(trigger_types[i].name, buf))
495			goto found;
496	return -EINVAL;
497
498found:
499	mutex_lock(&sysfs_lock);
500
501	if (!test_bit(FLAG_EXPORT, &desc->flags))
502		status = -EIO;
503	else {
504		status = gpio_setup_irq(desc, dev, trigger_types[i].flags);
505		if (!status)
506			status = size;
507	}
508
509	mutex_unlock(&sysfs_lock);
510
511	return status;
512}
513
514static DEVICE_ATTR(edge, 0644, gpio_edge_show, gpio_edge_store);
515
516static int sysfs_set_active_low(struct gpio_desc *desc, struct device *dev,
517				int value)
518{
519	int			status = 0;
520
521	if (!!test_bit(FLAG_ACTIVE_LOW, &desc->flags) == !!value)
522		return 0;
523
524	if (value)
525		set_bit(FLAG_ACTIVE_LOW, &desc->flags);
526	else
527		clear_bit(FLAG_ACTIVE_LOW, &desc->flags);
528
529	/* reconfigure poll(2) support if enabled on one edge only */
530	if (dev != NULL && (!!test_bit(FLAG_TRIG_RISE, &desc->flags) ^
531				!!test_bit(FLAG_TRIG_FALL, &desc->flags))) {
532		unsigned long trigger_flags = desc->flags & GPIO_TRIGGER_MASK;
533
534		gpio_setup_irq(desc, dev, 0);
535		status = gpio_setup_irq(desc, dev, trigger_flags);
536	}
537
538	return status;
539}
540
541static ssize_t gpio_active_low_show(struct device *dev,
542		struct device_attribute *attr, char *buf)
543{
544	const struct gpio_desc	*desc = dev_get_drvdata(dev);
545	ssize_t			status;
546
547	mutex_lock(&sysfs_lock);
548
549	if (!test_bit(FLAG_EXPORT, &desc->flags))
550		status = -EIO;
551	else
552		status = sprintf(buf, "%d\n",
553				!!test_bit(FLAG_ACTIVE_LOW, &desc->flags));
554
555	mutex_unlock(&sysfs_lock);
556
557	return status;
558}
559
560static ssize_t gpio_active_low_store(struct device *dev,
561		struct device_attribute *attr, const char *buf, size_t size)
562{
563	struct gpio_desc	*desc = dev_get_drvdata(dev);
564	ssize_t			status;
565
566	mutex_lock(&sysfs_lock);
567
568	if (!test_bit(FLAG_EXPORT, &desc->flags)) {
569		status = -EIO;
570	} else {
571		long		value;
572
573		status = kstrtol(buf, 0, &value);
574		if (status == 0)
575			status = sysfs_set_active_low(desc, dev, value != 0);
576	}
577
578	mutex_unlock(&sysfs_lock);
579
580	return status ? : size;
581}
582
583static const DEVICE_ATTR(active_low, 0644,
584		gpio_active_low_show, gpio_active_low_store);
585
586static const struct attribute *gpio_attrs[] = {
587	&dev_attr_value.attr,
588	&dev_attr_active_low.attr,
589	NULL,
590};
591
592static const struct attribute_group gpio_attr_group = {
593	.attrs = (struct attribute **) gpio_attrs,
594};
595
596/*
597 * /sys/class/gpio/gpiochipN/
598 *   /base ... matching gpio_chip.base (N)
599 *   /label ... matching gpio_chip.label
600 *   /ngpio ... matching gpio_chip.ngpio
601 */
602
603static ssize_t chip_base_show(struct device *dev,
604			       struct device_attribute *attr, char *buf)
605{
606	const struct gpio_chip	*chip = dev_get_drvdata(dev);
607
608	return sprintf(buf, "%d\n", chip->base);
609}
610static DEVICE_ATTR(base, 0444, chip_base_show, NULL);
611
612static ssize_t chip_label_show(struct device *dev,
613			       struct device_attribute *attr, char *buf)
614{
615	const struct gpio_chip	*chip = dev_get_drvdata(dev);
616
617	return sprintf(buf, "%s\n", chip->label ? : "");
618}
619static DEVICE_ATTR(label, 0444, chip_label_show, NULL);
620
621static ssize_t chip_ngpio_show(struct device *dev,
622			       struct device_attribute *attr, char *buf)
623{
624	const struct gpio_chip	*chip = dev_get_drvdata(dev);
625
626	return sprintf(buf, "%u\n", chip->ngpio);
627}
628static DEVICE_ATTR(ngpio, 0444, chip_ngpio_show, NULL);
629
630static const struct attribute *gpiochip_attrs[] = {
631	&dev_attr_base.attr,
632	&dev_attr_label.attr,
633	&dev_attr_ngpio.attr,
634	NULL,
635};
636
637static const struct attribute_group gpiochip_attr_group = {
638	.attrs = (struct attribute **) gpiochip_attrs,
639};
640
641/*
642 * /sys/class/gpio/export ... write-only
643 *	integer N ... number of GPIO to export (full access)
644 * /sys/class/gpio/unexport ... write-only
645 *	integer N ... number of GPIO to unexport
646 */
647static ssize_t export_store(struct class *class,
648				struct class_attribute *attr,
649				const char *buf, size_t len)
650{
651	long			gpio;
652	struct gpio_desc	*desc;
653	int			status;
654
655	status = kstrtol(buf, 0, &gpio);
656	if (status < 0)
657		goto done;
658
659	desc = gpio_to_desc(gpio);
660	/* reject invalid GPIOs */
661	if (!desc) {
662		pr_warn("%s: invalid GPIO %ld\n", __func__, gpio);
663		return -EINVAL;
664	}
665
666	/* No extra locking here; FLAG_SYSFS just signifies that the
667	 * request and export were done by on behalf of userspace, so
668	 * they may be undone on its behalf too.
669	 */
670
671	status = gpiod_request(desc, "sysfs");
672	if (status < 0) {
673		if (status == -EPROBE_DEFER)
674			status = -ENODEV;
675		goto done;
676	}
677	status = gpiod_export(desc, true);
678	if (status < 0)
679		gpiod_free(desc);
680	else
681		set_bit(FLAG_SYSFS, &desc->flags);
682
683done:
684	if (status)
685		pr_debug("%s: status %d\n", __func__, status);
686	return status ? : len;
687}
688
689static ssize_t unexport_store(struct class *class,
690				struct class_attribute *attr,
691				const char *buf, size_t len)
692{
693	long			gpio;
694	struct gpio_desc	*desc;
695	int			status;
696
697	status = kstrtol(buf, 0, &gpio);
698	if (status < 0)
699		goto done;
700
701	desc = gpio_to_desc(gpio);
702	/* reject bogus commands (gpio_unexport ignores them) */
703	if (!desc) {
704		pr_warn("%s: invalid GPIO %ld\n", __func__, gpio);
705		return -EINVAL;
706	}
707
708	status = -EINVAL;
709
710	/* No extra locking here; FLAG_SYSFS just signifies that the
711	 * request and export were done by on behalf of userspace, so
712	 * they may be undone on its behalf too.
713	 */
714	if (test_and_clear_bit(FLAG_SYSFS, &desc->flags)) {
715		status = 0;
716		gpiod_free(desc);
717	}
718done:
719	if (status)
720		pr_debug("%s: status %d\n", __func__, status);
721	return status ? : len;
722}
723
724static struct class_attribute gpio_class_attrs[] = {
725	__ATTR(export, 0200, NULL, export_store),
726	__ATTR(unexport, 0200, NULL, unexport_store),
727	__ATTR_NULL,
728};
729
730static struct class gpio_class = {
731	.name =		"gpio",
732	.owner =	THIS_MODULE,
733
734	.class_attrs =	gpio_class_attrs,
735};
736
737
738/**
739 * gpio_export - export a GPIO through sysfs
740 * @gpio: gpio to make available, already requested
741 * @direction_may_change: true if userspace may change gpio direction
742 * Context: arch_initcall or later
743 *
744 * When drivers want to make a GPIO accessible to userspace after they
745 * have requested it -- perhaps while debugging, or as part of their
746 * public interface -- they may use this routine.  If the GPIO can
747 * change direction (some can't) and the caller allows it, userspace
748 * will see "direction" sysfs attribute which may be used to change
749 * the gpio's direction.  A "value" attribute will always be provided.
750 *
751 * Returns zero on success, else an error.
752 */
753static int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
754{
755	unsigned long		flags;
756	int			status;
757	const char		*ioname = NULL;
758	struct device		*dev;
759	int			offset;
760
761	/* can't export until sysfs is available ... */
762	if (!gpio_class.p) {
763		pr_debug("%s: called too early!\n", __func__);
764		return -ENOENT;
765	}
766
767	if (!desc) {
768		pr_debug("%s: invalid gpio descriptor\n", __func__);
769		return -EINVAL;
770	}
771
772	mutex_lock(&sysfs_lock);
773
774	spin_lock_irqsave(&gpio_lock, flags);
775	if (!test_bit(FLAG_REQUESTED, &desc->flags) ||
776	     test_bit(FLAG_EXPORT, &desc->flags)) {
777		spin_unlock_irqrestore(&gpio_lock, flags);
778		pr_debug("%s: gpio %d unavailable (requested=%d, exported=%d)\n",
779				__func__, desc_to_gpio(desc),
780				test_bit(FLAG_REQUESTED, &desc->flags),
781				test_bit(FLAG_EXPORT, &desc->flags));
782		status = -EPERM;
783		goto fail_unlock;
784	}
785
786	if (!desc->chip->direction_input || !desc->chip->direction_output)
787		direction_may_change = false;
788	spin_unlock_irqrestore(&gpio_lock, flags);
789
790	offset = gpio_chip_hwgpio(desc);
791	if (desc->chip->names && desc->chip->names[offset])
792		ioname = desc->chip->names[offset];
793
794	dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0),
795			    desc, ioname ? ioname : "gpio%u",
796			    desc_to_gpio(desc));
797	if (IS_ERR(dev)) {
798		status = PTR_ERR(dev);
799		goto fail_unlock;
800	}
801
802	status = sysfs_create_group(&dev->kobj, &gpio_attr_group);
803	if (status)
804		goto fail_unregister_device;
805
806	if (direction_may_change) {
807		status = device_create_file(dev, &dev_attr_direction);
808		if (status)
809			goto fail_unregister_device;
810	}
811
812	if (gpiod_to_irq(desc) >= 0 && (direction_may_change ||
813				       !test_bit(FLAG_IS_OUT, &desc->flags))) {
814		status = device_create_file(dev, &dev_attr_edge);
815		if (status)
816			goto fail_unregister_device;
817	}
818
819	set_bit(FLAG_EXPORT, &desc->flags);
820	mutex_unlock(&sysfs_lock);
821	return 0;
822
823fail_unregister_device:
824	device_unregister(dev);
825fail_unlock:
826	mutex_unlock(&sysfs_lock);
827	pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc),
828		 status);
829	return status;
830}
831
832int gpio_export(unsigned gpio, bool direction_may_change)
833{
834	return gpiod_export(gpio_to_desc(gpio), direction_may_change);
835}
836EXPORT_SYMBOL_GPL(gpio_export);
837
838static int match_export(struct device *dev, const void *data)
839{
840	return dev_get_drvdata(dev) == data;
841}
842
843/**
844 * gpio_export_link - create a sysfs link to an exported GPIO node
845 * @dev: device under which to create symlink
846 * @name: name of the symlink
847 * @gpio: gpio to create symlink to, already exported
848 *
849 * Set up a symlink from /sys/.../dev/name to /sys/class/gpio/gpioN
850 * node. Caller is responsible for unlinking.
851 *
852 * Returns zero on success, else an error.
853 */
854static int gpiod_export_link(struct device *dev, const char *name,
855			     struct gpio_desc *desc)
856{
857	int			status = -EINVAL;
858
859	if (!desc) {
860		pr_warn("%s: invalid GPIO\n", __func__);
861		return -EINVAL;
862	}
863
864	mutex_lock(&sysfs_lock);
865
866	if (test_bit(FLAG_EXPORT, &desc->flags)) {
867		struct device *tdev;
868
869		tdev = class_find_device(&gpio_class, NULL, desc, match_export);
870		if (tdev != NULL) {
871			status = sysfs_create_link(&dev->kobj, &tdev->kobj,
872						name);
873		} else {
874			status = -ENODEV;
875		}
876	}
877
878	mutex_unlock(&sysfs_lock);
879
880	if (status)
881		pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc),
882			 status);
883
884	return status;
885}
886
887int gpio_export_link(struct device *dev, const char *name, unsigned gpio)
888{
889	return gpiod_export_link(dev, name, gpio_to_desc(gpio));
890}
891EXPORT_SYMBOL_GPL(gpio_export_link);
892
893/**
894 * gpio_sysfs_set_active_low - set the polarity of gpio sysfs value
895 * @gpio: gpio to change
896 * @value: non-zero to use active low, i.e. inverted values
897 *
898 * Set the polarity of /sys/class/gpio/gpioN/value sysfs attribute.
899 * The GPIO does not have to be exported yet.  If poll(2) support has
900 * been enabled for either rising or falling edge, it will be
901 * reconfigured to follow the new polarity.
902 *
903 * Returns zero on success, else an error.
904 */
905static int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value)
906{
907	struct device		*dev = NULL;
908	int			status = -EINVAL;
909
910	if (!desc) {
911		pr_warn("%s: invalid GPIO\n", __func__);
912		return -EINVAL;
913	}
914
915	mutex_lock(&sysfs_lock);
916
917	if (test_bit(FLAG_EXPORT, &desc->flags)) {
918		dev = class_find_device(&gpio_class, NULL, desc, match_export);
919		if (dev == NULL) {
920			status = -ENODEV;
921			goto unlock;
922		}
923	}
924
925	status = sysfs_set_active_low(desc, dev, value);
926
927unlock:
928	mutex_unlock(&sysfs_lock);
929
930	if (status)
931		pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc),
932			 status);
933
934	return status;
935}
936
937int gpio_sysfs_set_active_low(unsigned gpio, int value)
938{
939	return gpiod_sysfs_set_active_low(gpio_to_desc(gpio), value);
940}
941EXPORT_SYMBOL_GPL(gpio_sysfs_set_active_low);
942
943/**
944 * gpio_unexport - reverse effect of gpio_export()
945 * @gpio: gpio to make unavailable
946 *
947 * This is implicit on gpio_free().
948 */
949static void gpiod_unexport(struct gpio_desc *desc)
950{
951	int			status = 0;
952	struct device		*dev = NULL;
953
954	if (!desc) {
955		pr_warn("%s: invalid GPIO\n", __func__);
956		return;
957	}
958
959	mutex_lock(&sysfs_lock);
960
961	if (test_bit(FLAG_EXPORT, &desc->flags)) {
962
963		dev = class_find_device(&gpio_class, NULL, desc, match_export);
964		if (dev) {
965			gpio_setup_irq(desc, dev, 0);
966			clear_bit(FLAG_EXPORT, &desc->flags);
967		} else
968			status = -ENODEV;
969	}
970
971	mutex_unlock(&sysfs_lock);
972
973	if (dev) {
974		device_unregister(dev);
975		put_device(dev);
976	}
977
978	if (status)
979		pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc),
980			 status);
981}
982
983void gpio_unexport(unsigned gpio)
984{
985	gpiod_unexport(gpio_to_desc(gpio));
986}
987EXPORT_SYMBOL_GPL(gpio_unexport);
988
989static int gpiochip_export(struct gpio_chip *chip)
990{
991	int		status;
992	struct device	*dev;
993
994	/* Many systems register gpio chips for SOC support very early,
995	 * before driver model support is available.  In those cases we
996	 * export this later, in gpiolib_sysfs_init() ... here we just
997	 * verify that _some_ field of gpio_class got initialized.
998	 */
999	if (!gpio_class.p)
1000		return 0;
1001
1002	/* use chip->base for the ID; it's already known to be unique */
1003	mutex_lock(&sysfs_lock);
1004	dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip,
1005				"gpiochip%d", chip->base);
1006	if (!IS_ERR(dev)) {
1007		status = sysfs_create_group(&dev->kobj,
1008				&gpiochip_attr_group);
1009	} else
1010		status = PTR_ERR(dev);
1011	chip->exported = (status == 0);
1012	mutex_unlock(&sysfs_lock);
1013
1014	if (status) {
1015		unsigned long	flags;
1016		unsigned	gpio;
1017
1018		spin_lock_irqsave(&gpio_lock, flags);
1019		gpio = 0;
1020		while (gpio < chip->ngpio)
1021			chip->desc[gpio++].chip = NULL;
1022		spin_unlock_irqrestore(&gpio_lock, flags);
1023
1024		pr_debug("%s: chip %s status %d\n", __func__,
1025				chip->label, status);
1026	}
1027
1028	return status;
1029}
1030
1031static void gpiochip_unexport(struct gpio_chip *chip)
1032{
1033	int			status;
1034	struct device		*dev;
1035
1036	mutex_lock(&sysfs_lock);
1037	dev = class_find_device(&gpio_class, NULL, chip, match_export);
1038	if (dev) {
1039		put_device(dev);
1040		device_unregister(dev);
1041		chip->exported = 0;
1042		status = 0;
1043	} else
1044		status = -ENODEV;
1045	mutex_unlock(&sysfs_lock);
1046
1047	if (status)
1048		pr_debug("%s: chip %s status %d\n", __func__,
1049				chip->label, status);
1050}
1051
1052static int __init gpiolib_sysfs_init(void)
1053{
1054	int		status;
1055	unsigned long	flags;
1056	struct gpio_chip *chip;
1057
1058	status = class_register(&gpio_class);
1059	if (status < 0)
1060		return status;
1061
1062	/* Scan and register the gpio_chips which registered very
1063	 * early (e.g. before the class_register above was called).
1064	 *
1065	 * We run before arch_initcall() so chip->dev nodes can have
1066	 * registered, and so arch_initcall() can always gpio_export().
1067	 */
1068	spin_lock_irqsave(&gpio_lock, flags);
1069	list_for_each_entry(chip, &gpio_chips, list) {
1070		if (!chip || chip->exported)
1071			continue;
1072
1073		spin_unlock_irqrestore(&gpio_lock, flags);
1074		status = gpiochip_export(chip);
1075		spin_lock_irqsave(&gpio_lock, flags);
1076	}
1077	spin_unlock_irqrestore(&gpio_lock, flags);
1078
1079
1080	return status;
1081}
1082postcore_initcall(gpiolib_sysfs_init);
1083
1084#else
1085static inline int gpiochip_export(struct gpio_chip *chip)
1086{
1087	return 0;
1088}
1089
1090static inline void gpiochip_unexport(struct gpio_chip *chip)
1091{
1092}
1093
1094static inline int gpiod_export(struct gpio_desc *desc,
1095			       bool direction_may_change)
1096{
1097	return -ENOSYS;
1098}
1099
1100static inline int gpiod_export_link(struct device *dev, const char *name,
1101				    struct gpio_desc *desc)
1102{
1103	return -ENOSYS;
1104}
1105
1106static inline int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value)
1107{
1108	return -ENOSYS;
1109}
1110
1111static inline void gpiod_unexport(struct gpio_desc *desc)
1112{
1113}
1114
1115#endif /* CONFIG_GPIO_SYSFS */
1116
1117/*
1118 * Add a new chip to the global chips list, keeping the list of chips sorted
1119 * by base order.
1120 *
1121 * Return -EBUSY if the new chip overlaps with some other chip's integer
1122 * space.
1123 */
1124static int gpiochip_add_to_list(struct gpio_chip *chip)
1125{
1126	struct list_head *pos = &gpio_chips;
1127	struct gpio_chip *_chip;
1128	int err = 0;
1129
1130	/* find where to insert our chip */
1131	list_for_each(pos, &gpio_chips) {
1132		_chip = list_entry(pos, struct gpio_chip, list);
1133		/* shall we insert before _chip? */
1134		if (_chip->base >= chip->base + chip->ngpio)
1135			break;
1136	}
1137
1138	/* are we stepping on the chip right before? */
1139	if (pos != &gpio_chips && pos->prev != &gpio_chips) {
1140		_chip = list_entry(pos->prev, struct gpio_chip, list);
1141		if (_chip->base + _chip->ngpio > chip->base) {
1142			dev_err(chip->dev,
1143			       "GPIO integer space overlap, cannot add chip\n");
1144			err = -EBUSY;
1145		}
1146	}
1147
1148	if (!err)
1149		list_add_tail(&chip->list, pos);
1150
1151	return err;
1152}
1153
1154/**
1155 * gpiochip_add() - register a gpio_chip
1156 * @chip: the chip to register, with chip->base initialized
1157 * Context: potentially before irqs or kmalloc will work
1158 *
1159 * Returns a negative errno if the chip can't be registered, such as
1160 * because the chip->base is invalid or already associated with a
1161 * different chip.  Otherwise it returns zero as a success code.
1162 *
1163 * When gpiochip_add() is called very early during boot, so that GPIOs
1164 * can be freely used, the chip->dev device must be registered before
1165 * the gpio framework's arch_initcall().  Otherwise sysfs initialization
1166 * for GPIOs will fail rudely.
1167 *
1168 * If chip->base is negative, this requests dynamic assignment of
1169 * a range of valid GPIOs.
1170 */
1171int gpiochip_add(struct gpio_chip *chip)
1172{
1173	unsigned long	flags;
1174	int		status = 0;
1175	unsigned	id;
1176	int		base = chip->base;
1177
1178	if ((!gpio_is_valid(base) || !gpio_is_valid(base + chip->ngpio - 1))
1179			&& base >= 0) {
1180		status = -EINVAL;
1181		goto fail;
1182	}
1183
1184	spin_lock_irqsave(&gpio_lock, flags);
1185
1186	if (base < 0) {
1187		base = gpiochip_find_base(chip->ngpio);
1188		if (base < 0) {
1189			status = base;
1190			goto unlock;
1191		}
1192		chip->base = base;
1193	}
1194
1195	status = gpiochip_add_to_list(chip);
1196
1197	if (status == 0) {
1198		chip->desc = &gpio_desc[chip->base];
1199
1200		for (id = 0; id < chip->ngpio; id++) {
1201			struct gpio_desc *desc = &chip->desc[id];
1202			desc->chip = chip;
1203
1204			/* REVISIT:  most hardware initializes GPIOs as
1205			 * inputs (often with pullups enabled) so power
1206			 * usage is minimized.  Linux code should set the
1207			 * gpio direction first thing; but until it does,
1208			 * and in case chip->get_direction is not set,
1209			 * we may expose the wrong direction in sysfs.
1210			 */
1211			desc->flags = !chip->direction_input
1212				? (1 << FLAG_IS_OUT)
1213				: 0;
1214		}
1215	}
1216
1217	spin_unlock_irqrestore(&gpio_lock, flags);
1218
1219#ifdef CONFIG_PINCTRL
1220	INIT_LIST_HEAD(&chip->pin_ranges);
1221#endif
1222
1223	of_gpiochip_add(chip);
1224
1225	if (status)
1226		goto fail;
1227
1228	status = gpiochip_export(chip);
1229	if (status)
1230		goto fail;
1231
1232	pr_debug("gpiochip_add: registered GPIOs %d to %d on device: %s\n",
1233		chip->base, chip->base + chip->ngpio - 1,
1234		chip->label ? : "generic");
1235
1236	return 0;
1237
1238unlock:
1239	spin_unlock_irqrestore(&gpio_lock, flags);
1240fail:
1241	/* failures here can mean systems won't boot... */
1242	pr_err("gpiochip_add: gpios %d..%d (%s) failed to register\n",
1243		chip->base, chip->base + chip->ngpio - 1,
1244		chip->label ? : "generic");
1245	return status;
1246}
1247EXPORT_SYMBOL_GPL(gpiochip_add);
1248
1249/**
1250 * gpiochip_remove() - unregister a gpio_chip
1251 * @chip: the chip to unregister
1252 *
1253 * A gpio_chip with any GPIOs still requested may not be removed.
1254 */
1255int gpiochip_remove(struct gpio_chip *chip)
1256{
1257	unsigned long	flags;
1258	int		status = 0;
1259	unsigned	id;
1260
1261	spin_lock_irqsave(&gpio_lock, flags);
1262
1263	gpiochip_remove_pin_ranges(chip);
1264	of_gpiochip_remove(chip);
1265
1266	for (id = 0; id < chip->ngpio; id++) {
1267		if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags)) {
1268			status = -EBUSY;
1269			break;
1270		}
1271	}
1272	if (status == 0) {
1273		for (id = 0; id < chip->ngpio; id++)
1274			chip->desc[id].chip = NULL;
1275
1276		list_del(&chip->list);
1277	}
1278
1279	spin_unlock_irqrestore(&gpio_lock, flags);
1280
1281	if (status == 0)
1282		gpiochip_unexport(chip);
1283
1284	return status;
1285}
1286EXPORT_SYMBOL_GPL(gpiochip_remove);
1287
1288/**
1289 * gpiochip_find() - iterator for locating a specific gpio_chip
1290 * @data: data to pass to match function
1291 * @callback: Callback function to check gpio_chip
1292 *
1293 * Similar to bus_find_device.  It returns a reference to a gpio_chip as
1294 * determined by a user supplied @match callback.  The callback should return
1295 * 0 if the device doesn't match and non-zero if it does.  If the callback is
1296 * non-zero, this function will return to the caller and not iterate over any
1297 * more gpio_chips.
1298 */
1299struct gpio_chip *gpiochip_find(void *data,
1300				int (*match)(struct gpio_chip *chip,
1301					     void *data))
1302{
1303	struct gpio_chip *chip;
1304	unsigned long flags;
1305
1306	spin_lock_irqsave(&gpio_lock, flags);
1307	list_for_each_entry(chip, &gpio_chips, list)
1308		if (match(chip, data))
1309			break;
1310
1311	/* No match? */
1312	if (&chip->list == &gpio_chips)
1313		chip = NULL;
1314	spin_unlock_irqrestore(&gpio_lock, flags);
1315
1316	return chip;
1317}
1318EXPORT_SYMBOL_GPL(gpiochip_find);
1319
1320#ifdef CONFIG_PINCTRL
1321
1322/**
1323 * gpiochip_add_pin_range() - add a range for GPIO <-> pin mapping
1324 * @chip: the gpiochip to add the range for
1325 * @pinctrl_name: the dev_name() of the pin controller to map to
1326 * @gpio_offset: the start offset in the current gpio_chip number space
1327 * @pin_offset: the start offset in the pin controller number space
1328 * @npins: the number of pins from the offset of each pin space (GPIO and
1329 *	pin controller) to accumulate in this range
1330 */
1331int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
1332			   unsigned int gpio_offset, unsigned int pin_offset,
1333			   unsigned int npins)
1334{
1335	struct gpio_pin_range *pin_range;
1336	int ret;
1337
1338	pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL);
1339	if (!pin_range) {
1340		pr_err("%s: GPIO chip: failed to allocate pin ranges\n",
1341				chip->label);
1342		return -ENOMEM;
1343	}
1344
1345	/* Use local offset as range ID */
1346	pin_range->range.id = gpio_offset;
1347	pin_range->range.gc = chip;
1348	pin_range->range.name = chip->label;
1349	pin_range->range.base = chip->base + gpio_offset;
1350	pin_range->range.pin_base = pin_offset;
1351	pin_range->range.npins = npins;
1352	pin_range->pctldev = pinctrl_find_and_add_gpio_range(pinctl_name,
1353			&pin_range->range);
1354	if (IS_ERR(pin_range->pctldev)) {
1355		ret = PTR_ERR(pin_range->pctldev);
1356		pr_err("%s: GPIO chip: could not create pin range\n",
1357		       chip->label);
1358		kfree(pin_range);
1359		return ret;
1360	}
1361	pr_debug("GPIO chip %s: created GPIO range %d->%d ==> %s PIN %d->%d\n",
1362		 chip->label, gpio_offset, gpio_offset + npins - 1,
1363		 pinctl_name,
1364		 pin_offset, pin_offset + npins - 1);
1365
1366	list_add_tail(&pin_range->node, &chip->pin_ranges);
1367
1368	return 0;
1369}
1370EXPORT_SYMBOL_GPL(gpiochip_add_pin_range);
1371
1372/**
1373 * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings
1374 * @chip: the chip to remove all the mappings for
1375 */
1376void gpiochip_remove_pin_ranges(struct gpio_chip *chip)
1377{
1378	struct gpio_pin_range *pin_range, *tmp;
1379
1380	list_for_each_entry_safe(pin_range, tmp, &chip->pin_ranges, node) {
1381		list_del(&pin_range->node);
1382		pinctrl_remove_gpio_range(pin_range->pctldev,
1383				&pin_range->range);
1384		kfree(pin_range);
1385	}
1386}
1387EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges);
1388
1389#endif /* CONFIG_PINCTRL */
1390
1391/* These "optional" allocation calls help prevent drivers from stomping
1392 * on each other, and help provide better diagnostics in debugfs.
1393 * They're called even less than the "set direction" calls.
1394 */
1395static int gpiod_request(struct gpio_desc *desc, const char *label)
1396{
1397	struct gpio_chip	*chip;
1398	int			status = -EPROBE_DEFER;
1399	unsigned long		flags;
1400
1401	if (!desc || !desc->chip) {
1402		pr_warn("%s: invalid GPIO\n", __func__);
1403		return -EINVAL;
1404	}
1405
1406	spin_lock_irqsave(&gpio_lock, flags);
1407
1408	chip = desc->chip;
1409
1410	if (!try_module_get(chip->owner))
1411		goto done;
1412
1413	/* NOTE:  gpio_request() can be called in early boot,
1414	 * before IRQs are enabled, for non-sleeping (SOC) GPIOs.
1415	 */
1416
1417	if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
1418		desc_set_label(desc, label ? : "?");
1419		status = 0;
1420	} else {
1421		status = -EBUSY;
1422		module_put(chip->owner);
1423		goto done;
1424	}
1425
1426	if (chip->request) {
1427		/* chip->request may sleep */
1428		spin_unlock_irqrestore(&gpio_lock, flags);
1429		status = chip->request(chip, gpio_chip_hwgpio(desc));
1430		spin_lock_irqsave(&gpio_lock, flags);
1431
1432		if (status < 0) {
1433			desc_set_label(desc, NULL);
1434			module_put(chip->owner);
1435			clear_bit(FLAG_REQUESTED, &desc->flags);
1436			goto done;
1437		}
1438	}
1439	if (chip->get_direction) {
1440		/* chip->get_direction may sleep */
1441		spin_unlock_irqrestore(&gpio_lock, flags);
1442		gpiod_get_direction(desc);
1443		spin_lock_irqsave(&gpio_lock, flags);
1444	}
1445done:
1446	if (status)
1447		pr_debug("_gpio_request: gpio-%d (%s) status %d\n",
1448			 desc_to_gpio(desc), label ? : "?", status);
1449	spin_unlock_irqrestore(&gpio_lock, flags);
1450	return status;
1451}
1452
1453int gpio_request(unsigned gpio, const char *label)
1454{
1455	return gpiod_request(gpio_to_desc(gpio), label);
1456}
1457EXPORT_SYMBOL_GPL(gpio_request);
1458
1459static void gpiod_free(struct gpio_desc *desc)
1460{
1461	unsigned long		flags;
1462	struct gpio_chip	*chip;
1463
1464	might_sleep();
1465
1466	if (!desc) {
1467		WARN_ON(extra_checks);
1468		return;
1469	}
1470
1471	gpiod_unexport(desc);
1472
1473	spin_lock_irqsave(&gpio_lock, flags);
1474
1475	chip = desc->chip;
1476	if (chip && test_bit(FLAG_REQUESTED, &desc->flags)) {
1477		if (chip->free) {
1478			spin_unlock_irqrestore(&gpio_lock, flags);
1479			might_sleep_if(chip->can_sleep);
1480			chip->free(chip, gpio_chip_hwgpio(desc));
1481			spin_lock_irqsave(&gpio_lock, flags);
1482		}
1483		desc_set_label(desc, NULL);
1484		module_put(desc->chip->owner);
1485		clear_bit(FLAG_ACTIVE_LOW, &desc->flags);
1486		clear_bit(FLAG_REQUESTED, &desc->flags);
1487		clear_bit(FLAG_OPEN_DRAIN, &desc->flags);
1488		clear_bit(FLAG_OPEN_SOURCE, &desc->flags);
1489	} else
1490		WARN_ON(extra_checks);
1491
1492	spin_unlock_irqrestore(&gpio_lock, flags);
1493}
1494
1495void gpio_free(unsigned gpio)
1496{
1497	gpiod_free(gpio_to_desc(gpio));
1498}
1499EXPORT_SYMBOL_GPL(gpio_free);
1500
1501/**
1502 * gpio_request_one - request a single GPIO with initial configuration
1503 * @gpio:	the GPIO number
1504 * @flags:	GPIO configuration as specified by GPIOF_*
1505 * @label:	a literal description string of this GPIO
1506 */
1507int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)
1508{
1509	struct gpio_desc *desc;
1510	int err;
1511
1512	desc = gpio_to_desc(gpio);
1513
1514	err = gpiod_request(desc, label);
1515	if (err)
1516		return err;
1517
1518	if (flags & GPIOF_OPEN_DRAIN)
1519		set_bit(FLAG_OPEN_DRAIN, &desc->flags);
1520
1521	if (flags & GPIOF_OPEN_SOURCE)
1522		set_bit(FLAG_OPEN_SOURCE, &desc->flags);
1523
1524	if (flags & GPIOF_DIR_IN)
1525		err = gpiod_direction_input(desc);
1526	else
1527		err = gpiod_direction_output(desc,
1528				(flags & GPIOF_INIT_HIGH) ? 1 : 0);
1529
1530	if (err)
1531		goto free_gpio;
1532
1533	if (flags & GPIOF_EXPORT) {
1534		err = gpiod_export(desc, flags & GPIOF_EXPORT_CHANGEABLE);
1535		if (err)
1536			goto free_gpio;
1537	}
1538
1539	return 0;
1540
1541 free_gpio:
1542	gpiod_free(desc);
1543	return err;
1544}
1545EXPORT_SYMBOL_GPL(gpio_request_one);
1546
1547/**
1548 * gpio_request_array - request multiple GPIOs in a single call
1549 * @array:	array of the 'struct gpio'
1550 * @num:	how many GPIOs in the array
1551 */
1552int gpio_request_array(const struct gpio *array, size_t num)
1553{
1554	int i, err;
1555
1556	for (i = 0; i < num; i++, array++) {
1557		err = gpio_request_one(array->gpio, array->flags, array->label);
1558		if (err)
1559			goto err_free;
1560	}
1561	return 0;
1562
1563err_free:
1564	while (i--)
1565		gpio_free((--array)->gpio);
1566	return err;
1567}
1568EXPORT_SYMBOL_GPL(gpio_request_array);
1569
1570/**
1571 * gpio_free_array - release multiple GPIOs in a single call
1572 * @array:	array of the 'struct gpio'
1573 * @num:	how many GPIOs in the array
1574 */
1575void gpio_free_array(const struct gpio *array, size_t num)
1576{
1577	while (num--)
1578		gpio_free((array++)->gpio);
1579}
1580EXPORT_SYMBOL_GPL(gpio_free_array);
1581
1582/**
1583 * gpiochip_is_requested - return string iff signal was requested
1584 * @chip: controller managing the signal
1585 * @offset: of signal within controller's 0..(ngpio - 1) range
1586 *
1587 * Returns NULL if the GPIO is not currently requested, else a string.
1588 * If debugfs support is enabled, the string returned is the label passed
1589 * to gpio_request(); otherwise it is a meaningless constant.
1590 *
1591 * This function is for use by GPIO controller drivers.  The label can
1592 * help with diagnostics, and knowing that the signal is used as a GPIO
1593 * can help avoid accidentally multiplexing it to another controller.
1594 */
1595const char *gpiochip_is_requested(struct gpio_chip *chip, unsigned offset)
1596{
1597	struct gpio_desc *desc;
1598
1599	if (!GPIO_OFFSET_VALID(chip, offset))
1600		return NULL;
1601
1602	desc = &chip->desc[offset];
1603
1604	if (test_bit(FLAG_REQUESTED, &desc->flags) == 0)
1605		return NULL;
1606#ifdef CONFIG_DEBUG_FS
1607	return desc->label;
1608#else
1609	return "?";
1610#endif
1611}
1612EXPORT_SYMBOL_GPL(gpiochip_is_requested);
1613
1614
1615/* Drivers MUST set GPIO direction before making get/set calls.  In
1616 * some cases this is done in early boot, before IRQs are enabled.
1617 *
1618 * As a rule these aren't called more than once (except for drivers
1619 * using the open-drain emulation idiom) so these are natural places
1620 * to accumulate extra debugging checks.  Note that we can't (yet)
1621 * rely on gpio_request() having been called beforehand.
1622 */
1623
1624static int gpiod_direction_input(struct gpio_desc *desc)
1625{
1626	unsigned long		flags;
1627	struct gpio_chip	*chip;
1628	int			status = -EINVAL;
1629	int			offset;
1630
1631	if (!desc || !desc->chip) {
1632		pr_warn("%s: invalid GPIO\n", __func__);
1633		return -EINVAL;
1634	}
1635
1636	chip = desc->chip;
1637	if (!chip->get || !chip->direction_input) {
1638		pr_warn("%s: missing get() or direction_input() operations\n",
1639			__func__);
1640		return -EIO;
1641	}
1642
1643	spin_lock_irqsave(&gpio_lock, flags);
1644
1645	status = gpio_ensure_requested(desc);
1646	if (status < 0)
1647		goto fail;
1648
1649	/* now we know the gpio is valid and chip won't vanish */
1650
1651	spin_unlock_irqrestore(&gpio_lock, flags);
1652
1653	might_sleep_if(chip->can_sleep);
1654
1655	offset = gpio_chip_hwgpio(desc);
1656	if (status) {
1657		status = chip->request(chip, offset);
1658		if (status < 0) {
1659			pr_debug("GPIO-%d: chip request fail, %d\n",
1660				desc_to_gpio(desc), status);
1661			/* and it's not available to anyone else ...
1662			 * gpio_request() is the fully clean solution.
1663			 */
1664			goto lose;
1665		}
1666	}
1667
1668	status = chip->direction_input(chip, offset);
1669	if (status == 0)
1670		clear_bit(FLAG_IS_OUT, &desc->flags);
1671
1672	trace_gpio_direction(desc_to_gpio(desc), 1, status);
1673lose:
1674	return status;
1675fail:
1676	spin_unlock_irqrestore(&gpio_lock, flags);
1677	if (status)
1678		pr_debug("%s: gpio-%d status %d\n", __func__,
1679			 desc_to_gpio(desc), status);
1680	return status;
1681}
1682
1683int gpio_direction_input(unsigned gpio)
1684{
1685	return gpiod_direction_input(gpio_to_desc(gpio));
1686}
1687EXPORT_SYMBOL_GPL(gpio_direction_input);
1688
1689static int gpiod_direction_output(struct gpio_desc *desc, int value)
1690{
1691	unsigned long		flags;
1692	struct gpio_chip	*chip;
1693	int			status = -EINVAL;
1694	int offset;
1695
1696	if (!desc || !desc->chip) {
1697		pr_warn("%s: invalid GPIO\n", __func__);
1698		return -EINVAL;
1699	}
1700
1701	/* Open drain pin should not be driven to 1 */
1702	if (value && test_bit(FLAG_OPEN_DRAIN,  &desc->flags))
1703		return gpiod_direction_input(desc);
1704
1705	/* Open source pin should not be driven to 0 */
1706	if (!value && test_bit(FLAG_OPEN_SOURCE,  &desc->flags))
1707		return gpiod_direction_input(desc);
1708
1709	chip = desc->chip;
1710	if (!chip->set || !chip->direction_output) {
1711		pr_warn("%s: missing set() or direction_output() operations\n",
1712			__func__);
1713		return -EIO;
1714	}
1715
1716	spin_lock_irqsave(&gpio_lock, flags);
1717
1718	status = gpio_ensure_requested(desc);
1719	if (status < 0)
1720		goto fail;
1721
1722	/* now we know the gpio is valid and chip won't vanish */
1723
1724	spin_unlock_irqrestore(&gpio_lock, flags);
1725
1726	might_sleep_if(chip->can_sleep);
1727
1728	offset = gpio_chip_hwgpio(desc);
1729	if (status) {
1730		status = chip->request(chip, offset);
1731		if (status < 0) {
1732			pr_debug("GPIO-%d: chip request fail, %d\n",
1733				desc_to_gpio(desc), status);
1734			/* and it's not available to anyone else ...
1735			 * gpio_request() is the fully clean solution.
1736			 */
1737			goto lose;
1738		}
1739	}
1740
1741	status = chip->direction_output(chip, offset, value);
1742	if (status == 0)
1743		set_bit(FLAG_IS_OUT, &desc->flags);
1744	trace_gpio_value(desc_to_gpio(desc), 0, value);
1745	trace_gpio_direction(desc_to_gpio(desc), 0, status);
1746lose:
1747	return status;
1748fail:
1749	spin_unlock_irqrestore(&gpio_lock, flags);
1750	if (status)
1751		pr_debug("%s: gpio-%d status %d\n", __func__,
1752			 desc_to_gpio(desc), status);
1753	return status;
1754}
1755
1756int gpio_direction_output(unsigned gpio, int value)
1757{
1758	return gpiod_direction_output(gpio_to_desc(gpio), value);
1759}
1760EXPORT_SYMBOL_GPL(gpio_direction_output);
1761
1762/**
1763 * gpio_set_debounce - sets @debounce time for a @gpio
1764 * @gpio: the gpio to set debounce time
1765 * @debounce: debounce time is microseconds
1766 *
1767 * returns -ENOTSUPP if the controller does not support setting
1768 * debounce.
1769 */
1770static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce)
1771{
1772	unsigned long		flags;
1773	struct gpio_chip	*chip;
1774	int			status = -EINVAL;
1775	int			offset;
1776
1777	if (!desc || !desc->chip) {
1778		pr_warn("%s: invalid GPIO\n", __func__);
1779		return -EINVAL;
1780	}
1781
1782	chip = desc->chip;
1783	if (!chip->set || !chip->set_debounce) {
1784		pr_debug("%s: missing set() or set_debounce() operations\n",
1785			__func__);
1786		return -ENOTSUPP;
1787	}
1788
1789	spin_lock_irqsave(&gpio_lock, flags);
1790
1791	status = gpio_ensure_requested(desc);
1792	if (status < 0)
1793		goto fail;
1794
1795	/* now we know the gpio is valid and chip won't vanish */
1796
1797	spin_unlock_irqrestore(&gpio_lock, flags);
1798
1799	might_sleep_if(chip->can_sleep);
1800
1801	offset = gpio_chip_hwgpio(desc);
1802	return chip->set_debounce(chip, offset, debounce);
1803
1804fail:
1805	spin_unlock_irqrestore(&gpio_lock, flags);
1806	if (status)
1807		pr_debug("%s: gpio-%d status %d\n", __func__,
1808			 desc_to_gpio(desc), status);
1809
1810	return status;
1811}
1812
1813int gpio_set_debounce(unsigned gpio, unsigned debounce)
1814{
1815	return gpiod_set_debounce(gpio_to_desc(gpio), debounce);
1816}
1817EXPORT_SYMBOL_GPL(gpio_set_debounce);
1818
1819/* I/O calls are only valid after configuration completed; the relevant
1820 * "is this a valid GPIO" error checks should already have been done.
1821 *
1822 * "Get" operations are often inlinable as reading a pin value register,
1823 * and masking the relevant bit in that register.
1824 *
1825 * When "set" operations are inlinable, they involve writing that mask to
1826 * one register to set a low value, or a different register to set it high.
1827 * Otherwise locking is needed, so there may be little value to inlining.
1828 *
1829 *------------------------------------------------------------------------
1830 *
1831 * IMPORTANT!!!  The hot paths -- get/set value -- assume that callers
1832 * have requested the GPIO.  That can include implicit requesting by
1833 * a direction setting call.  Marking a gpio as requested locks its chip
1834 * in memory, guaranteeing that these table lookups need no more locking
1835 * and that gpiochip_remove() will fail.
1836 *
1837 * REVISIT when debugging, consider adding some instrumentation to ensure
1838 * that the GPIO was actually requested.
1839 */
1840
1841/**
1842 * __gpio_get_value() - return a gpio's value
1843 * @gpio: gpio whose value will be returned
1844 * Context: any
1845 *
1846 * This is used directly or indirectly to implement gpio_get_value().
1847 * It returns the zero or nonzero value provided by the associated
1848 * gpio_chip.get() method; or zero if no such method is provided.
1849 */
1850static int gpiod_get_value(const struct gpio_desc *desc)
1851{
1852	struct gpio_chip	*chip;
1853	int value;
1854	int offset;
1855
1856	if (!desc)
1857		return 0;
1858	chip = desc->chip;
1859	offset = gpio_chip_hwgpio(desc);
1860	/* Should be using gpio_get_value_cansleep() */
1861	WARN_ON(chip->can_sleep);
1862	value = chip->get ? chip->get(chip, offset) : 0;
1863	trace_gpio_value(desc_to_gpio(desc), 1, value);
1864	return value;
1865}
1866
1867int __gpio_get_value(unsigned gpio)
1868{
1869	return gpiod_get_value(gpio_to_desc(gpio));
1870}
1871EXPORT_SYMBOL_GPL(__gpio_get_value);
1872
1873/*
1874 *  _gpio_set_open_drain_value() - Set the open drain gpio's value.
1875 * @gpio: Gpio whose state need to be set.
1876 * @chip: Gpio chip.
1877 * @value: Non-zero for setting it HIGH otherise it will set to LOW.
1878 */
1879static void _gpio_set_open_drain_value(struct gpio_desc *desc, int value)
1880{
1881	int err = 0;
1882	struct gpio_chip *chip = desc->chip;
1883	int offset = gpio_chip_hwgpio(desc);
1884
1885	if (value) {
1886		err = chip->direction_input(chip, offset);
1887		if (!err)
1888			clear_bit(FLAG_IS_OUT, &desc->flags);
1889	} else {
1890		err = chip->direction_output(chip, offset, 0);
1891		if (!err)
1892			set_bit(FLAG_IS_OUT, &desc->flags);
1893	}
1894	trace_gpio_direction(desc_to_gpio(desc), value, err);
1895	if (err < 0)
1896		pr_err("%s: Error in set_value for open drain gpio%d err %d\n",
1897					__func__, desc_to_gpio(desc), err);
1898}
1899
1900/*
1901 *  _gpio_set_open_source() - Set the open source gpio's value.
1902 * @gpio: Gpio whose state need to be set.
1903 * @chip: Gpio chip.
1904 * @value: Non-zero for setting it HIGH otherise it will set to LOW.
1905 */
1906static void _gpio_set_open_source_value(struct gpio_desc *desc, int value)
1907{
1908	int err = 0;
1909	struct gpio_chip *chip = desc->chip;
1910	int offset = gpio_chip_hwgpio(desc);
1911
1912	if (value) {
1913		err = chip->direction_output(chip, offset, 1);
1914		if (!err)
1915			set_bit(FLAG_IS_OUT, &desc->flags);
1916	} else {
1917		err = chip->direction_input(chip, offset);
1918		if (!err)
1919			clear_bit(FLAG_IS_OUT, &desc->flags);
1920	}
1921	trace_gpio_direction(desc_to_gpio(desc), !value, err);
1922	if (err < 0)
1923		pr_err("%s: Error in set_value for open source gpio%d err %d\n",
1924					__func__, desc_to_gpio(desc), err);
1925}
1926
1927/**
1928 * __gpio_set_value() - assign a gpio's value
1929 * @gpio: gpio whose value will be assigned
1930 * @value: value to assign
1931 * Context: any
1932 *
1933 * This is used directly or indirectly to implement gpio_set_value().
1934 * It invokes the associated gpio_chip.set() method.
1935 */
1936static void gpiod_set_value(struct gpio_desc *desc, int value)
1937{
1938	struct gpio_chip	*chip;
1939
1940	if (!desc)
1941		return;
1942	chip = desc->chip;
1943	/* Should be using gpio_set_value_cansleep() */
1944	WARN_ON(chip->can_sleep);
1945	trace_gpio_value(desc_to_gpio(desc), 0, value);
1946	if (test_bit(FLAG_OPEN_DRAIN, &desc->flags))
1947		_gpio_set_open_drain_value(desc, value);
1948	else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags))
1949		_gpio_set_open_source_value(desc, value);
1950	else
1951		chip->set(chip, gpio_chip_hwgpio(desc), value);
1952}
1953
1954void __gpio_set_value(unsigned gpio, int value)
1955{
1956	return gpiod_set_value(gpio_to_desc(gpio), value);
1957}
1958EXPORT_SYMBOL_GPL(__gpio_set_value);
1959
1960/**
1961 * __gpio_cansleep() - report whether gpio value access will sleep
1962 * @gpio: gpio in question
1963 * Context: any
1964 *
1965 * This is used directly or indirectly to implement gpio_cansleep().  It
1966 * returns nonzero if access reading or writing the GPIO value can sleep.
1967 */
1968static int gpiod_cansleep(const struct gpio_desc *desc)
1969{
1970	if (!desc)
1971		return 0;
1972	/* only call this on GPIOs that are valid! */
1973	return desc->chip->can_sleep;
1974}
1975
1976int __gpio_cansleep(unsigned gpio)
1977{
1978	return gpiod_cansleep(gpio_to_desc(gpio));
1979}
1980EXPORT_SYMBOL_GPL(__gpio_cansleep);
1981
1982/**
1983 * __gpio_to_irq() - return the IRQ corresponding to a GPIO
1984 * @gpio: gpio whose IRQ will be returned (already requested)
1985 * Context: any
1986 *
1987 * This is used directly or indirectly to implement gpio_to_irq().
1988 * It returns the number of the IRQ signaled by this (input) GPIO,
1989 * or a negative errno.
1990 */
1991static int gpiod_to_irq(const struct gpio_desc *desc)
1992{
1993	struct gpio_chip	*chip;
1994	int			offset;
1995
1996	if (!desc)
1997		return -EINVAL;
1998	chip = desc->chip;
1999	offset = gpio_chip_hwgpio(desc);
2000	return chip->to_irq ? chip->to_irq(chip, offset) : -ENXIO;
2001}
2002
2003int __gpio_to_irq(unsigned gpio)
2004{
2005	return gpiod_to_irq(gpio_to_desc(gpio));
2006}
2007EXPORT_SYMBOL_GPL(__gpio_to_irq);
2008
2009
2010/* There's no value in making it easy to inline GPIO calls that may sleep.
2011 * Common examples include ones connected to I2C or SPI chips.
2012 */
2013
2014static int gpiod_get_value_cansleep(const struct gpio_desc *desc)
2015{
2016	struct gpio_chip	*chip;
2017	int value;
2018	int offset;
2019
2020	might_sleep_if(extra_checks);
2021	if (!desc)
2022		return 0;
2023	chip = desc->chip;
2024	offset = gpio_chip_hwgpio(desc);
2025	value = chip->get ? chip->get(chip, offset) : 0;
2026	trace_gpio_value(desc_to_gpio(desc), 1, value);
2027	return value;
2028}
2029
2030int gpio_get_value_cansleep(unsigned gpio)
2031{
2032	return gpiod_get_value_cansleep(gpio_to_desc(gpio));
2033}
2034EXPORT_SYMBOL_GPL(gpio_get_value_cansleep);
2035
2036static void gpiod_set_value_cansleep(struct gpio_desc *desc, int value)
2037{
2038	struct gpio_chip	*chip;
2039
2040	might_sleep_if(extra_checks);
2041	if (!desc)
2042		return;
2043	chip = desc->chip;
2044	trace_gpio_value(desc_to_gpio(desc), 0, value);
2045	if (test_bit(FLAG_OPEN_DRAIN,  &desc->flags))
2046		_gpio_set_open_drain_value(desc, value);
2047	else if (test_bit(FLAG_OPEN_SOURCE,  &desc->flags))
2048		_gpio_set_open_source_value(desc, value);
2049	else
2050		chip->set(chip, gpio_chip_hwgpio(desc), value);
2051}
2052
2053void gpio_set_value_cansleep(unsigned gpio, int value)
2054{
2055	return gpiod_set_value_cansleep(gpio_to_desc(gpio), value);
2056}
2057EXPORT_SYMBOL_GPL(gpio_set_value_cansleep);
2058
2059#ifdef CONFIG_DEBUG_FS
2060
2061static void gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip)
2062{
2063	unsigned		i;
2064	unsigned		gpio = chip->base;
2065	struct gpio_desc	*gdesc = &chip->desc[0];
2066	int			is_out;
2067
2068	for (i = 0; i < chip->ngpio; i++, gpio++, gdesc++) {
2069		if (!test_bit(FLAG_REQUESTED, &gdesc->flags))
2070			continue;
2071
2072		gpiod_get_direction(gdesc);
2073		is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
2074		seq_printf(s, " gpio-%-3d (%-20.20s) %s %s",
2075			gpio, gdesc->label,
2076			is_out ? "out" : "in ",
2077			chip->get
2078				? (chip->get(chip, i) ? "hi" : "lo")
2079				: "?  ");
2080		seq_printf(s, "\n");
2081	}
2082}
2083
2084static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos)
2085{
2086	unsigned long flags;
2087	struct gpio_chip *chip = NULL;
2088	loff_t index = *pos;
2089
2090	s->private = "";
2091
2092	spin_lock_irqsave(&gpio_lock, flags);
2093	list_for_each_entry(chip, &gpio_chips, list)
2094		if (index-- == 0) {
2095			spin_unlock_irqrestore(&gpio_lock, flags);
2096			return chip;
2097		}
2098	spin_unlock_irqrestore(&gpio_lock, flags);
2099
2100	return NULL;
2101}
2102
2103static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos)
2104{
2105	unsigned long flags;
2106	struct gpio_chip *chip = v;
2107	void *ret = NULL;
2108
2109	spin_lock_irqsave(&gpio_lock, flags);
2110	if (list_is_last(&chip->list, &gpio_chips))
2111		ret = NULL;
2112	else
2113		ret = list_entry(chip->list.next, struct gpio_chip, list);
2114	spin_unlock_irqrestore(&gpio_lock, flags);
2115
2116	s->private = "\n";
2117	++*pos;
2118
2119	return ret;
2120}
2121
2122static void gpiolib_seq_stop(struct seq_file *s, void *v)
2123{
2124}
2125
2126static int gpiolib_seq_show(struct seq_file *s, void *v)
2127{
2128	struct gpio_chip *chip = v;
2129	struct device *dev;
2130
2131	seq_printf(s, "%sGPIOs %d-%d", (char *)s->private,
2132			chip->base, chip->base + chip->ngpio - 1);
2133	dev = chip->dev;
2134	if (dev)
2135		seq_printf(s, ", %s/%s", dev->bus ? dev->bus->name : "no-bus",
2136			dev_name(dev));
2137	if (chip->label)
2138		seq_printf(s, ", %s", chip->label);
2139	if (chip->can_sleep)
2140		seq_printf(s, ", can sleep");
2141	seq_printf(s, ":\n");
2142
2143	if (chip->dbg_show)
2144		chip->dbg_show(s, chip);
2145	else
2146		gpiolib_dbg_show(s, chip);
2147
2148	return 0;
2149}
2150
2151static const struct seq_operations gpiolib_seq_ops = {
2152	.start = gpiolib_seq_start,
2153	.next = gpiolib_seq_next,
2154	.stop = gpiolib_seq_stop,
2155	.show = gpiolib_seq_show,
2156};
2157
2158static int gpiolib_open(struct inode *inode, struct file *file)
2159{
2160	return seq_open(file, &gpiolib_seq_ops);
2161}
2162
2163static const struct file_operations gpiolib_operations = {
2164	.owner		= THIS_MODULE,
2165	.open		= gpiolib_open,
2166	.read		= seq_read,
2167	.llseek		= seq_lseek,
2168	.release	= seq_release,
2169};
2170
2171static int __init gpiolib_debugfs_init(void)
2172{
2173	/* /sys/kernel/debug/gpio */
2174	(void) debugfs_create_file("gpio", S_IFREG | S_IRUGO,
2175				NULL, NULL, &gpiolib_operations);
2176	return 0;
2177}
2178subsys_initcall(gpiolib_debugfs_init);
2179
2180#endif	/* DEBUG_FS */
2181