• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include <linux/acpi.h>
16 #include <linux/gpio/driver.h>
17 #include <linux/gpio/machine.h>
18 
19 #include "gpiolib.h"
20 
21 #define CREATE_TRACE_POINTS
22 #include <trace/events/gpio.h>
23 
24 /* Implementation infrastructure for GPIO interfaces.
25  *
26  * The GPIO programming interface allows for inlining speed-critical
27  * get/set operations for common cases, so that access to SOC-integrated
28  * GPIOs can sometimes cost 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  */
48 DEFINE_SPINLOCK(gpio_lock);
49 
50 static struct gpio_desc gpio_desc[ARCH_NR_GPIOS];
51 
52 #define GPIO_OFFSET_VALID(chip, offset) (offset >= 0 && offset < chip->ngpio)
53 
54 static DEFINE_MUTEX(gpio_lookup_lock);
55 static LIST_HEAD(gpio_lookup_list);
56 LIST_HEAD(gpio_chips);
57 
desc_set_label(struct gpio_desc * d,const char * label)58 static inline void desc_set_label(struct gpio_desc *d, const char *label)
59 {
60 	d->label = label;
61 }
62 
63 /**
64  * Convert a GPIO number to its descriptor
65  */
gpio_to_desc(unsigned gpio)66 struct gpio_desc *gpio_to_desc(unsigned gpio)
67 {
68 	if (WARN(!gpio_is_valid(gpio), "invalid GPIO %d\n", gpio))
69 		return NULL;
70 	else
71 		return &gpio_desc[gpio];
72 }
73 EXPORT_SYMBOL_GPL(gpio_to_desc);
74 
75 /**
76  * Get the GPIO descriptor corresponding to the given hw number for this chip.
77  */
gpiochip_get_desc(struct gpio_chip * chip,u16 hwnum)78 struct gpio_desc *gpiochip_get_desc(struct gpio_chip *chip,
79 				    u16 hwnum)
80 {
81 	if (hwnum >= chip->ngpio)
82 		return ERR_PTR(-EINVAL);
83 
84 	return &chip->desc[hwnum];
85 }
86 
87 /**
88  * Convert a GPIO descriptor to the integer namespace.
89  * This should disappear in the future but is needed since we still
90  * use GPIO numbers for error messages and sysfs nodes
91  */
desc_to_gpio(const struct gpio_desc * desc)92 int desc_to_gpio(const struct gpio_desc *desc)
93 {
94 	return desc - &gpio_desc[0];
95 }
96 EXPORT_SYMBOL_GPL(desc_to_gpio);
97 
98 
99 /**
100  * gpiod_to_chip - Return the GPIO chip to which a GPIO descriptor belongs
101  * @desc:	descriptor to return the chip of
102  */
gpiod_to_chip(const struct gpio_desc * desc)103 struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc)
104 {
105 	return desc ? desc->chip : NULL;
106 }
107 EXPORT_SYMBOL_GPL(gpiod_to_chip);
108 
109 /* dynamic allocation of GPIOs, e.g. on a hotplugged device */
gpiochip_find_base(int ngpio)110 static int gpiochip_find_base(int ngpio)
111 {
112 	struct gpio_chip *chip;
113 	int base = ARCH_NR_GPIOS - ngpio;
114 
115 	list_for_each_entry_reverse(chip, &gpio_chips, list) {
116 		/* found a free space? */
117 		if (chip->base + chip->ngpio <= base)
118 			break;
119 		else
120 			/* nope, check the space right before the chip */
121 			base = chip->base - ngpio;
122 	}
123 
124 	if (gpio_is_valid(base)) {
125 		pr_debug("%s: found new base at %d\n", __func__, base);
126 		return base;
127 	} else {
128 		pr_err("%s: cannot find free range\n", __func__);
129 		return -ENOSPC;
130 	}
131 }
132 
133 /**
134  * gpiod_get_direction - return the current direction of a GPIO
135  * @desc:	GPIO to get the direction of
136  *
137  * Return GPIOF_DIR_IN or GPIOF_DIR_OUT, or an error code in case of error.
138  *
139  * This function may sleep if gpiod_cansleep() is true.
140  */
gpiod_get_direction(const struct gpio_desc * desc)141 int gpiod_get_direction(const struct gpio_desc *desc)
142 {
143 	struct gpio_chip	*chip;
144 	unsigned		offset;
145 	int			status = -EINVAL;
146 
147 	chip = gpiod_to_chip(desc);
148 	offset = gpio_chip_hwgpio(desc);
149 
150 	if (!chip->get_direction)
151 		return status;
152 
153 	status = chip->get_direction(chip, offset);
154 	if (status > 0) {
155 		/* GPIOF_DIR_IN, or other positive */
156 		status = 1;
157 		/* FLAG_IS_OUT is just a cache of the result of get_direction(),
158 		 * so it does not affect constness per se */
159 		clear_bit(FLAG_IS_OUT, &((struct gpio_desc *)desc)->flags);
160 	}
161 	if (status == 0) {
162 		/* GPIOF_DIR_OUT */
163 		set_bit(FLAG_IS_OUT, &((struct gpio_desc *)desc)->flags);
164 	}
165 	return status;
166 }
167 EXPORT_SYMBOL_GPL(gpiod_get_direction);
168 
169 /*
170  * Add a new chip to the global chips list, keeping the list of chips sorted
171  * by base order.
172  *
173  * Return -EBUSY if the new chip overlaps with some other chip's integer
174  * space.
175  */
gpiochip_add_to_list(struct gpio_chip * chip)176 static int gpiochip_add_to_list(struct gpio_chip *chip)
177 {
178 	struct list_head *pos = &gpio_chips;
179 	struct gpio_chip *_chip;
180 	int err = 0;
181 
182 	/* find where to insert our chip */
183 	list_for_each(pos, &gpio_chips) {
184 		_chip = list_entry(pos, struct gpio_chip, list);
185 		/* shall we insert before _chip? */
186 		if (_chip->base >= chip->base + chip->ngpio)
187 			break;
188 	}
189 
190 	/* are we stepping on the chip right before? */
191 	if (pos != &gpio_chips && pos->prev != &gpio_chips) {
192 		_chip = list_entry(pos->prev, struct gpio_chip, list);
193 		if (_chip->base + _chip->ngpio > chip->base) {
194 			dev_err(chip->dev,
195 			       "GPIO integer space overlap, cannot add chip\n");
196 			err = -EBUSY;
197 		}
198 	}
199 
200 	if (!err)
201 		list_add_tail(&chip->list, pos);
202 
203 	return err;
204 }
205 
206 /**
207  * gpiochip_add() - register a gpio_chip
208  * @chip: the chip to register, with chip->base initialized
209  * Context: potentially before irqs or kmalloc will work
210  *
211  * Returns a negative errno if the chip can't be registered, such as
212  * because the chip->base is invalid or already associated with a
213  * different chip.  Otherwise it returns zero as a success code.
214  *
215  * When gpiochip_add() is called very early during boot, so that GPIOs
216  * can be freely used, the chip->dev device must be registered before
217  * the gpio framework's arch_initcall().  Otherwise sysfs initialization
218  * for GPIOs will fail rudely.
219  *
220  * If chip->base is negative, this requests dynamic assignment of
221  * a range of valid GPIOs.
222  */
gpiochip_add(struct gpio_chip * chip)223 int gpiochip_add(struct gpio_chip *chip)
224 {
225 	unsigned long	flags;
226 	int		status = 0;
227 	unsigned	id;
228 	int		base = chip->base;
229 
230 	if ((!gpio_is_valid(base) || !gpio_is_valid(base + chip->ngpio - 1))
231 			&& base >= 0) {
232 		status = -EINVAL;
233 		goto fail;
234 	}
235 
236 	spin_lock_irqsave(&gpio_lock, flags);
237 
238 	if (base < 0) {
239 		base = gpiochip_find_base(chip->ngpio);
240 		if (base < 0) {
241 			status = base;
242 			goto unlock;
243 		}
244 		chip->base = base;
245 	}
246 
247 	status = gpiochip_add_to_list(chip);
248 
249 	if (status == 0) {
250 		chip->desc = &gpio_desc[chip->base];
251 
252 		for (id = 0; id < chip->ngpio; id++) {
253 			struct gpio_desc *desc = &chip->desc[id];
254 			desc->chip = chip;
255 
256 			/* REVISIT:  most hardware initializes GPIOs as
257 			 * inputs (often with pullups enabled) so power
258 			 * usage is minimized.  Linux code should set the
259 			 * gpio direction first thing; but until it does,
260 			 * and in case chip->get_direction is not set,
261 			 * we may expose the wrong direction in sysfs.
262 			 */
263 			desc->flags = !chip->direction_input
264 				? (1 << FLAG_IS_OUT)
265 				: 0;
266 		}
267 	}
268 
269 	spin_unlock_irqrestore(&gpio_lock, flags);
270 
271 	if (status)
272 		goto fail;
273 
274 #ifdef CONFIG_PINCTRL
275 	INIT_LIST_HEAD(&chip->pin_ranges);
276 #endif
277 
278 	of_gpiochip_add(chip);
279 	acpi_gpiochip_add(chip);
280 
281 	status = gpiochip_export(chip);
282 	if (status) {
283 		acpi_gpiochip_remove(chip);
284 		of_gpiochip_remove(chip);
285 		goto fail;
286 	}
287 
288 	pr_debug("%s: registered GPIOs %d to %d on device: %s\n", __func__,
289 		chip->base, chip->base + chip->ngpio - 1,
290 		chip->label ? : "generic");
291 
292 	return 0;
293 
294 unlock:
295 	spin_unlock_irqrestore(&gpio_lock, flags);
296 fail:
297 	/* failures here can mean systems won't boot... */
298 	pr_err("%s: GPIOs %d..%d (%s) failed to register\n", __func__,
299 		chip->base, chip->base + chip->ngpio - 1,
300 		chip->label ? : "generic");
301 	return status;
302 }
303 EXPORT_SYMBOL_GPL(gpiochip_add);
304 
305 /* Forward-declaration */
306 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip);
307 
308 /**
309  * gpiochip_remove() - unregister a gpio_chip
310  * @chip: the chip to unregister
311  *
312  * A gpio_chip with any GPIOs still requested may not be removed.
313  */
gpiochip_remove(struct gpio_chip * chip)314 void gpiochip_remove(struct gpio_chip *chip)
315 {
316 	unsigned long	flags;
317 	unsigned	id;
318 
319 	gpiochip_irqchip_remove(chip);
320 
321 	acpi_gpiochip_remove(chip);
322 	gpiochip_remove_pin_ranges(chip);
323 	of_gpiochip_remove(chip);
324 
325 	spin_lock_irqsave(&gpio_lock, flags);
326 	for (id = 0; id < chip->ngpio; id++) {
327 		if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags))
328 			dev_crit(chip->dev, "REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED\n");
329 	}
330 	for (id = 0; id < chip->ngpio; id++)
331 		chip->desc[id].chip = NULL;
332 
333 	list_del(&chip->list);
334 	spin_unlock_irqrestore(&gpio_lock, flags);
335 	gpiochip_unexport(chip);
336 }
337 EXPORT_SYMBOL_GPL(gpiochip_remove);
338 
339 /**
340  * gpiochip_find() - iterator for locating a specific gpio_chip
341  * @data: data to pass to match function
342  * @callback: Callback function to check gpio_chip
343  *
344  * Similar to bus_find_device.  It returns a reference to a gpio_chip as
345  * determined by a user supplied @match callback.  The callback should return
346  * 0 if the device doesn't match and non-zero if it does.  If the callback is
347  * non-zero, this function will return to the caller and not iterate over any
348  * more gpio_chips.
349  */
gpiochip_find(void * data,int (* match)(struct gpio_chip * chip,void * data))350 struct gpio_chip *gpiochip_find(void *data,
351 				int (*match)(struct gpio_chip *chip,
352 					     void *data))
353 {
354 	struct gpio_chip *chip;
355 	unsigned long flags;
356 
357 	spin_lock_irqsave(&gpio_lock, flags);
358 	list_for_each_entry(chip, &gpio_chips, list)
359 		if (chip && match(chip, data))
360 			break;
361 
362 	/* No match? */
363 	if (&chip->list == &gpio_chips)
364 		chip = NULL;
365 	spin_unlock_irqrestore(&gpio_lock, flags);
366 
367 	return chip;
368 }
369 EXPORT_SYMBOL_GPL(gpiochip_find);
370 
gpiochip_match_name(struct gpio_chip * chip,void * data)371 static int gpiochip_match_name(struct gpio_chip *chip, void *data)
372 {
373 	const char *name = data;
374 
375 	return !strcmp(chip->label, name);
376 }
377 
find_chip_by_name(const char * name)378 static struct gpio_chip *find_chip_by_name(const char *name)
379 {
380 	return gpiochip_find((void *)name, gpiochip_match_name);
381 }
382 
383 #ifdef CONFIG_GPIOLIB_IRQCHIP
384 
385 /*
386  * The following is irqchip helper code for gpiochips.
387  */
388 
389 /**
390  * gpiochip_set_chained_irqchip() - sets a chained irqchip to a gpiochip
391  * @gpiochip: the gpiochip to set the irqchip chain to
392  * @irqchip: the irqchip to chain to the gpiochip
393  * @parent_irq: the irq number corresponding to the parent IRQ for this
394  * chained irqchip
395  * @parent_handler: the parent interrupt handler for the accumulated IRQ
396  * coming out of the gpiochip. If the interrupt is nested rather than
397  * cascaded, pass NULL in this handler argument
398  */
gpiochip_set_chained_irqchip(struct gpio_chip * gpiochip,struct irq_chip * irqchip,int parent_irq,irq_flow_handler_t parent_handler)399 void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip,
400 				  struct irq_chip *irqchip,
401 				  int parent_irq,
402 				  irq_flow_handler_t parent_handler)
403 {
404 	unsigned int offset;
405 
406 	if (!gpiochip->irqdomain) {
407 		chip_err(gpiochip, "called %s before setting up irqchip\n",
408 			 __func__);
409 		return;
410 	}
411 
412 	if (parent_handler) {
413 		if (gpiochip->can_sleep) {
414 			chip_err(gpiochip,
415 				 "you cannot have chained interrupts on a "
416 				 "chip that may sleep\n");
417 			return;
418 		}
419 		/*
420 		 * The parent irqchip is already using the chip_data for this
421 		 * irqchip, so our callbacks simply use the handler_data.
422 		 */
423 		irq_set_handler_data(parent_irq, gpiochip);
424 		irq_set_chained_handler(parent_irq, parent_handler);
425 	}
426 
427 	/* Set the parent IRQ for all affected IRQs */
428 	for (offset = 0; offset < gpiochip->ngpio; offset++)
429 		irq_set_parent(irq_find_mapping(gpiochip->irqdomain, offset),
430 			       parent_irq);
431 }
432 EXPORT_SYMBOL_GPL(gpiochip_set_chained_irqchip);
433 
434 /*
435  * This lock class tells lockdep that GPIO irqs are in a different
436  * category than their parents, so it won't report false recursion.
437  */
438 static struct lock_class_key gpiochip_irq_lock_class;
439 
440 /**
441  * gpiochip_irq_map() - maps an IRQ into a GPIO irqchip
442  * @d: the irqdomain used by this irqchip
443  * @irq: the global irq number used by this GPIO irqchip irq
444  * @hwirq: the local IRQ/GPIO line offset on this gpiochip
445  *
446  * This function will set up the mapping for a certain IRQ line on a
447  * gpiochip by assigning the gpiochip as chip data, and using the irqchip
448  * stored inside the gpiochip.
449  */
gpiochip_irq_map(struct irq_domain * d,unsigned int irq,irq_hw_number_t hwirq)450 static int gpiochip_irq_map(struct irq_domain *d, unsigned int irq,
451 			    irq_hw_number_t hwirq)
452 {
453 	struct gpio_chip *chip = d->host_data;
454 
455 	irq_set_chip_data(irq, chip);
456 	irq_set_lockdep_class(irq, &gpiochip_irq_lock_class);
457 	irq_set_chip_and_handler(irq, chip->irqchip, chip->irq_handler);
458 	/* Chips that can sleep need nested thread handlers */
459 	if (chip->can_sleep && !chip->irq_not_threaded)
460 		irq_set_nested_thread(irq, 1);
461 #ifdef CONFIG_ARM
462 	set_irq_flags(irq, IRQF_VALID);
463 #else
464 	irq_set_noprobe(irq);
465 #endif
466 	/*
467 	 * No set-up of the hardware will happen if IRQ_TYPE_NONE
468 	 * is passed as default type.
469 	 */
470 	if (chip->irq_default_type != IRQ_TYPE_NONE)
471 		irq_set_irq_type(irq, chip->irq_default_type);
472 
473 	return 0;
474 }
475 
gpiochip_irq_unmap(struct irq_domain * d,unsigned int irq)476 static void gpiochip_irq_unmap(struct irq_domain *d, unsigned int irq)
477 {
478 	struct gpio_chip *chip = d->host_data;
479 
480 #ifdef CONFIG_ARM
481 	set_irq_flags(irq, 0);
482 #endif
483 	if (chip->can_sleep)
484 		irq_set_nested_thread(irq, 0);
485 	irq_set_chip_and_handler(irq, NULL, NULL);
486 	irq_set_chip_data(irq, NULL);
487 }
488 
489 static const struct irq_domain_ops gpiochip_domain_ops = {
490 	.map	= gpiochip_irq_map,
491 	.unmap	= gpiochip_irq_unmap,
492 	/* Virtually all GPIO irqchips are twocell:ed */
493 	.xlate	= irq_domain_xlate_twocell,
494 };
495 
gpiochip_irq_reqres(struct irq_data * d)496 static int gpiochip_irq_reqres(struct irq_data *d)
497 {
498 	struct gpio_chip *chip = irq_data_get_irq_chip_data(d);
499 
500 	if (gpio_lock_as_irq(chip, d->hwirq)) {
501 		chip_err(chip,
502 			"unable to lock HW IRQ %lu for IRQ\n",
503 			d->hwirq);
504 		return -EINVAL;
505 	}
506 	return 0;
507 }
508 
gpiochip_irq_relres(struct irq_data * d)509 static void gpiochip_irq_relres(struct irq_data *d)
510 {
511 	struct gpio_chip *chip = irq_data_get_irq_chip_data(d);
512 
513 	gpio_unlock_as_irq(chip, d->hwirq);
514 }
515 
gpiochip_to_irq(struct gpio_chip * chip,unsigned offset)516 static int gpiochip_to_irq(struct gpio_chip *chip, unsigned offset)
517 {
518 	return irq_find_mapping(chip->irqdomain, offset);
519 }
520 
521 /**
522  * gpiochip_irqchip_remove() - removes an irqchip added to a gpiochip
523  * @gpiochip: the gpiochip to remove the irqchip from
524  *
525  * This is called only from gpiochip_remove()
526  */
gpiochip_irqchip_remove(struct gpio_chip * gpiochip)527 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip)
528 {
529 	unsigned int offset;
530 
531 	acpi_gpiochip_free_interrupts(gpiochip);
532 
533 	/* Remove all IRQ mappings and delete the domain */
534 	if (gpiochip->irqdomain) {
535 		for (offset = 0; offset < gpiochip->ngpio; offset++)
536 			irq_dispose_mapping(
537 				irq_find_mapping(gpiochip->irqdomain, offset));
538 		irq_domain_remove(gpiochip->irqdomain);
539 	}
540 
541 	if (gpiochip->irqchip) {
542 		gpiochip->irqchip->irq_request_resources = NULL;
543 		gpiochip->irqchip->irq_release_resources = NULL;
544 		gpiochip->irqchip = NULL;
545 	}
546 }
547 
548 /**
549  * gpiochip_irqchip_add() - adds an irqchip to a gpiochip
550  * @gpiochip: the gpiochip to add the irqchip to
551  * @irqchip: the irqchip to add to the gpiochip
552  * @first_irq: if not dynamically assigned, the base (first) IRQ to
553  * allocate gpiochip irqs from
554  * @handler: the irq handler to use (often a predefined irq core function)
555  * @type: the default type for IRQs on this irqchip, pass IRQ_TYPE_NONE
556  * to have the core avoid setting up any default type in the hardware.
557  *
558  * This function closely associates a certain irqchip with a certain
559  * gpiochip, providing an irq domain to translate the local IRQs to
560  * global irqs in the gpiolib core, and making sure that the gpiochip
561  * is passed as chip data to all related functions. Driver callbacks
562  * need to use container_of() to get their local state containers back
563  * from the gpiochip passed as chip data. An irqdomain will be stored
564  * in the gpiochip that shall be used by the driver to handle IRQ number
565  * translation. The gpiochip will need to be initialized and registered
566  * before calling this function.
567  *
568  * This function will handle two cell:ed simple IRQs and assumes all
569  * the pins on the gpiochip can generate a unique IRQ. Everything else
570  * need to be open coded.
571  */
gpiochip_irqchip_add(struct gpio_chip * gpiochip,struct irq_chip * irqchip,unsigned int first_irq,irq_flow_handler_t handler,unsigned int type)572 int gpiochip_irqchip_add(struct gpio_chip *gpiochip,
573 			 struct irq_chip *irqchip,
574 			 unsigned int first_irq,
575 			 irq_flow_handler_t handler,
576 			 unsigned int type)
577 {
578 	struct device_node *of_node;
579 	unsigned int offset;
580 	unsigned irq_base = 0;
581 
582 	if (!gpiochip || !irqchip)
583 		return -EINVAL;
584 
585 	if (!gpiochip->dev) {
586 		pr_err("missing gpiochip .dev parent pointer\n");
587 		return -EINVAL;
588 	}
589 	of_node = gpiochip->dev->of_node;
590 #ifdef CONFIG_OF_GPIO
591 	/*
592 	 * If the gpiochip has an assigned OF node this takes precendence
593 	 * FIXME: get rid of this and use gpiochip->dev->of_node everywhere
594 	 */
595 	if (gpiochip->of_node)
596 		of_node = gpiochip->of_node;
597 #endif
598 	gpiochip->irqchip = irqchip;
599 	gpiochip->irq_handler = handler;
600 	gpiochip->irq_default_type = type;
601 	gpiochip->to_irq = gpiochip_to_irq;
602 	gpiochip->irqdomain = irq_domain_add_simple(of_node,
603 					gpiochip->ngpio, first_irq,
604 					&gpiochip_domain_ops, gpiochip);
605 	if (!gpiochip->irqdomain) {
606 		gpiochip->irqchip = NULL;
607 		return -EINVAL;
608 	}
609 	irqchip->irq_request_resources = gpiochip_irq_reqres;
610 	irqchip->irq_release_resources = gpiochip_irq_relres;
611 
612 	/*
613 	 * Prepare the mapping since the irqchip shall be orthogonal to
614 	 * any gpiochip calls. If the first_irq was zero, this is
615 	 * necessary to allocate descriptors for all IRQs.
616 	 */
617 	for (offset = 0; offset < gpiochip->ngpio; offset++) {
618 		irq_base = irq_create_mapping(gpiochip->irqdomain, offset);
619 		if (offset == 0)
620 			/*
621 			 * Store the base into the gpiochip to be used when
622 			 * unmapping the irqs.
623 			 */
624 			gpiochip->irq_base = irq_base;
625 	}
626 
627 	acpi_gpiochip_request_interrupts(gpiochip);
628 
629 	return 0;
630 }
631 EXPORT_SYMBOL_GPL(gpiochip_irqchip_add);
632 
633 #else /* CONFIG_GPIOLIB_IRQCHIP */
634 
gpiochip_irqchip_remove(struct gpio_chip * gpiochip)635 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) {}
636 
637 #endif /* CONFIG_GPIOLIB_IRQCHIP */
638 
639 #ifdef CONFIG_PINCTRL
640 
641 /**
642  * gpiochip_add_pingroup_range() - add a range for GPIO <-> pin mapping
643  * @chip: the gpiochip to add the range for
644  * @pinctrl: the dev_name() of the pin controller to map to
645  * @gpio_offset: the start offset in the current gpio_chip number space
646  * @pin_group: name of the pin group inside the pin controller
647  */
gpiochip_add_pingroup_range(struct gpio_chip * chip,struct pinctrl_dev * pctldev,unsigned int gpio_offset,const char * pin_group)648 int gpiochip_add_pingroup_range(struct gpio_chip *chip,
649 			struct pinctrl_dev *pctldev,
650 			unsigned int gpio_offset, const char *pin_group)
651 {
652 	struct gpio_pin_range *pin_range;
653 	int ret;
654 
655 	pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL);
656 	if (!pin_range) {
657 		chip_err(chip, "failed to allocate pin ranges\n");
658 		return -ENOMEM;
659 	}
660 
661 	/* Use local offset as range ID */
662 	pin_range->range.id = gpio_offset;
663 	pin_range->range.gc = chip;
664 	pin_range->range.name = chip->label;
665 	pin_range->range.base = chip->base + gpio_offset;
666 	pin_range->pctldev = pctldev;
667 
668 	ret = pinctrl_get_group_pins(pctldev, pin_group,
669 					&pin_range->range.pins,
670 					&pin_range->range.npins);
671 	if (ret < 0) {
672 		kfree(pin_range);
673 		return ret;
674 	}
675 
676 	pinctrl_add_gpio_range(pctldev, &pin_range->range);
677 
678 	chip_dbg(chip, "created GPIO range %d->%d ==> %s PINGRP %s\n",
679 		 gpio_offset, gpio_offset + pin_range->range.npins - 1,
680 		 pinctrl_dev_get_devname(pctldev), pin_group);
681 
682 	list_add_tail(&pin_range->node, &chip->pin_ranges);
683 
684 	return 0;
685 }
686 EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
687 
688 /**
689  * gpiochip_add_pin_range() - add a range for GPIO <-> pin mapping
690  * @chip: the gpiochip to add the range for
691  * @pinctrl_name: the dev_name() of the pin controller to map to
692  * @gpio_offset: the start offset in the current gpio_chip number space
693  * @pin_offset: the start offset in the pin controller number space
694  * @npins: the number of pins from the offset of each pin space (GPIO and
695  *	pin controller) to accumulate in this range
696  */
gpiochip_add_pin_range(struct gpio_chip * chip,const char * pinctl_name,unsigned int gpio_offset,unsigned int pin_offset,unsigned int npins)697 int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
698 			   unsigned int gpio_offset, unsigned int pin_offset,
699 			   unsigned int npins)
700 {
701 	struct gpio_pin_range *pin_range;
702 	int ret;
703 
704 	pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL);
705 	if (!pin_range) {
706 		chip_err(chip, "failed to allocate pin ranges\n");
707 		return -ENOMEM;
708 	}
709 
710 	/* Use local offset as range ID */
711 	pin_range->range.id = gpio_offset;
712 	pin_range->range.gc = chip;
713 	pin_range->range.name = chip->label;
714 	pin_range->range.base = chip->base + gpio_offset;
715 	pin_range->range.pin_base = pin_offset;
716 	pin_range->range.npins = npins;
717 	pin_range->pctldev = pinctrl_find_and_add_gpio_range(pinctl_name,
718 			&pin_range->range);
719 	if (IS_ERR(pin_range->pctldev)) {
720 		ret = PTR_ERR(pin_range->pctldev);
721 		chip_err(chip, "could not create pin range\n");
722 		kfree(pin_range);
723 		return ret;
724 	}
725 	chip_dbg(chip, "created GPIO range %d->%d ==> %s PIN %d->%d\n",
726 		 gpio_offset, gpio_offset + npins - 1,
727 		 pinctl_name,
728 		 pin_offset, pin_offset + npins - 1);
729 
730 	list_add_tail(&pin_range->node, &chip->pin_ranges);
731 
732 	return 0;
733 }
734 EXPORT_SYMBOL_GPL(gpiochip_add_pin_range);
735 
736 /**
737  * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings
738  * @chip: the chip to remove all the mappings for
739  */
gpiochip_remove_pin_ranges(struct gpio_chip * chip)740 void gpiochip_remove_pin_ranges(struct gpio_chip *chip)
741 {
742 	struct gpio_pin_range *pin_range, *tmp;
743 
744 	list_for_each_entry_safe(pin_range, tmp, &chip->pin_ranges, node) {
745 		list_del(&pin_range->node);
746 		pinctrl_remove_gpio_range(pin_range->pctldev,
747 				&pin_range->range);
748 		kfree(pin_range);
749 	}
750 }
751 EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges);
752 
753 #endif /* CONFIG_PINCTRL */
754 
755 /* These "optional" allocation calls help prevent drivers from stomping
756  * on each other, and help provide better diagnostics in debugfs.
757  * They're called even less than the "set direction" calls.
758  */
__gpiod_request(struct gpio_desc * desc,const char * label)759 static int __gpiod_request(struct gpio_desc *desc, const char *label)
760 {
761 	struct gpio_chip	*chip = desc->chip;
762 	int			status;
763 	unsigned long		flags;
764 
765 	spin_lock_irqsave(&gpio_lock, flags);
766 
767 	/* NOTE:  gpio_request() can be called in early boot,
768 	 * before IRQs are enabled, for non-sleeping (SOC) GPIOs.
769 	 */
770 
771 	if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
772 		desc_set_label(desc, label ? : "?");
773 		status = 0;
774 	} else {
775 		status = -EBUSY;
776 		goto done;
777 	}
778 
779 	if (chip->request) {
780 		/* chip->request may sleep */
781 		spin_unlock_irqrestore(&gpio_lock, flags);
782 		status = chip->request(chip, gpio_chip_hwgpio(desc));
783 		spin_lock_irqsave(&gpio_lock, flags);
784 
785 		if (status < 0) {
786 			desc_set_label(desc, NULL);
787 			clear_bit(FLAG_REQUESTED, &desc->flags);
788 			goto done;
789 		}
790 	}
791 	if (chip->get_direction) {
792 		/* chip->get_direction may sleep */
793 		spin_unlock_irqrestore(&gpio_lock, flags);
794 		gpiod_get_direction(desc);
795 		spin_lock_irqsave(&gpio_lock, flags);
796 	}
797 done:
798 	spin_unlock_irqrestore(&gpio_lock, flags);
799 	return status;
800 }
801 
gpiod_request(struct gpio_desc * desc,const char * label)802 int gpiod_request(struct gpio_desc *desc, const char *label)
803 {
804 	int status = -EPROBE_DEFER;
805 	struct gpio_chip *chip;
806 
807 	if (!desc) {
808 		pr_warn("%s: invalid GPIO\n", __func__);
809 		return -EINVAL;
810 	}
811 
812 	chip = desc->chip;
813 	if (!chip)
814 		goto done;
815 
816 	if (try_module_get(chip->owner)) {
817 		status = __gpiod_request(desc, label);
818 		if (status < 0)
819 			module_put(chip->owner);
820 	}
821 
822 done:
823 	if (status)
824 		gpiod_dbg(desc, "%s: status %d\n", __func__, status);
825 
826 	return status;
827 }
828 
__gpiod_free(struct gpio_desc * desc)829 static bool __gpiod_free(struct gpio_desc *desc)
830 {
831 	bool			ret = false;
832 	unsigned long		flags;
833 	struct gpio_chip	*chip;
834 
835 	might_sleep();
836 
837 	gpiod_unexport(desc);
838 
839 	spin_lock_irqsave(&gpio_lock, flags);
840 
841 	chip = desc->chip;
842 	if (chip && test_bit(FLAG_REQUESTED, &desc->flags)) {
843 		if (chip->free) {
844 			spin_unlock_irqrestore(&gpio_lock, flags);
845 			might_sleep_if(chip->can_sleep);
846 			chip->free(chip, gpio_chip_hwgpio(desc));
847 			spin_lock_irqsave(&gpio_lock, flags);
848 		}
849 		desc_set_label(desc, NULL);
850 		clear_bit(FLAG_ACTIVE_LOW, &desc->flags);
851 		clear_bit(FLAG_REQUESTED, &desc->flags);
852 		clear_bit(FLAG_OPEN_DRAIN, &desc->flags);
853 		clear_bit(FLAG_OPEN_SOURCE, &desc->flags);
854 		ret = true;
855 	}
856 
857 	spin_unlock_irqrestore(&gpio_lock, flags);
858 	return ret;
859 }
860 
gpiod_free(struct gpio_desc * desc)861 void gpiod_free(struct gpio_desc *desc)
862 {
863 	if (desc && __gpiod_free(desc))
864 		module_put(desc->chip->owner);
865 	else
866 		WARN_ON(extra_checks);
867 }
868 
869 /**
870  * gpiochip_is_requested - return string iff signal was requested
871  * @chip: controller managing the signal
872  * @offset: of signal within controller's 0..(ngpio - 1) range
873  *
874  * Returns NULL if the GPIO is not currently requested, else a string.
875  * The string returned is the label passed to gpio_request(); if none has been
876  * passed it is a meaningless, non-NULL constant.
877  *
878  * This function is for use by GPIO controller drivers.  The label can
879  * help with diagnostics, and knowing that the signal is used as a GPIO
880  * can help avoid accidentally multiplexing it to another controller.
881  */
gpiochip_is_requested(struct gpio_chip * chip,unsigned offset)882 const char *gpiochip_is_requested(struct gpio_chip *chip, unsigned offset)
883 {
884 	struct gpio_desc *desc;
885 
886 	if (!GPIO_OFFSET_VALID(chip, offset))
887 		return NULL;
888 
889 	desc = &chip->desc[offset];
890 
891 	if (test_bit(FLAG_REQUESTED, &desc->flags) == 0)
892 		return NULL;
893 	return desc->label;
894 }
895 EXPORT_SYMBOL_GPL(gpiochip_is_requested);
896 
897 /**
898  * gpiochip_request_own_desc - Allow GPIO chip to request its own descriptor
899  * @desc: GPIO descriptor to request
900  * @label: label for the GPIO
901  *
902  * Function allows GPIO chip drivers to request and use their own GPIO
903  * descriptors via gpiolib API. Difference to gpiod_request() is that this
904  * function will not increase reference count of the GPIO chip module. This
905  * allows the GPIO chip module to be unloaded as needed (we assume that the
906  * GPIO chip driver handles freeing the GPIOs it has requested).
907  */
gpiochip_request_own_desc(struct gpio_chip * chip,u16 hwnum,const char * label)908 struct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *chip, u16 hwnum,
909 					    const char *label)
910 {
911 	struct gpio_desc *desc = gpiochip_get_desc(chip, hwnum);
912 	int err;
913 
914 	if (IS_ERR(desc)) {
915 		chip_err(chip, "failed to get GPIO descriptor\n");
916 		return desc;
917 	}
918 
919 	err = __gpiod_request(desc, label);
920 	if (err < 0)
921 		return ERR_PTR(err);
922 
923 	return desc;
924 }
925 EXPORT_SYMBOL_GPL(gpiochip_request_own_desc);
926 
927 /**
928  * gpiochip_free_own_desc - Free GPIO requested by the chip driver
929  * @desc: GPIO descriptor to free
930  *
931  * Function frees the given GPIO requested previously with
932  * gpiochip_request_own_desc().
933  */
gpiochip_free_own_desc(struct gpio_desc * desc)934 void gpiochip_free_own_desc(struct gpio_desc *desc)
935 {
936 	if (desc)
937 		__gpiod_free(desc);
938 }
939 EXPORT_SYMBOL_GPL(gpiochip_free_own_desc);
940 
941 /* Drivers MUST set GPIO direction before making get/set calls.  In
942  * some cases this is done in early boot, before IRQs are enabled.
943  *
944  * As a rule these aren't called more than once (except for drivers
945  * using the open-drain emulation idiom) so these are natural places
946  * to accumulate extra debugging checks.  Note that we can't (yet)
947  * rely on gpio_request() having been called beforehand.
948  */
949 
950 /**
951  * gpiod_direction_input - set the GPIO direction to input
952  * @desc:	GPIO to set to input
953  *
954  * Set the direction of the passed GPIO to input, such as gpiod_get_value() can
955  * be called safely on it.
956  *
957  * Return 0 in case of success, else an error code.
958  */
gpiod_direction_input(struct gpio_desc * desc)959 int gpiod_direction_input(struct gpio_desc *desc)
960 {
961 	struct gpio_chip	*chip;
962 	int			status = -EINVAL;
963 
964 	if (!desc || !desc->chip) {
965 		pr_warn("%s: invalid GPIO\n", __func__);
966 		return -EINVAL;
967 	}
968 
969 	chip = desc->chip;
970 	if (!chip->get || !chip->direction_input) {
971 		gpiod_warn(desc,
972 			"%s: missing get() or direction_input() operations\n",
973 			__func__);
974 		return -EIO;
975 	}
976 
977 	status = chip->direction_input(chip, gpio_chip_hwgpio(desc));
978 	if (status == 0)
979 		clear_bit(FLAG_IS_OUT, &desc->flags);
980 
981 	trace_gpio_direction(desc_to_gpio(desc), 1, status);
982 
983 	return status;
984 }
985 EXPORT_SYMBOL_GPL(gpiod_direction_input);
986 
_gpiod_direction_output_raw(struct gpio_desc * desc,int value)987 static int _gpiod_direction_output_raw(struct gpio_desc *desc, int value)
988 {
989 	struct gpio_chip	*chip;
990 	int			status = -EINVAL;
991 
992 	/* GPIOs used for IRQs shall not be set as output */
993 	if (test_bit(FLAG_USED_AS_IRQ, &desc->flags)) {
994 		gpiod_err(desc,
995 			  "%s: tried to set a GPIO tied to an IRQ as output\n",
996 			  __func__);
997 		return -EIO;
998 	}
999 
1000 	/* Open drain pin should not be driven to 1 */
1001 	if (value && test_bit(FLAG_OPEN_DRAIN,  &desc->flags))
1002 		return gpiod_direction_input(desc);
1003 
1004 	/* Open source pin should not be driven to 0 */
1005 	if (!value && test_bit(FLAG_OPEN_SOURCE,  &desc->flags))
1006 		return gpiod_direction_input(desc);
1007 
1008 	chip = desc->chip;
1009 	if (!chip->set || !chip->direction_output) {
1010 		gpiod_warn(desc,
1011 		       "%s: missing set() or direction_output() operations\n",
1012 		       __func__);
1013 		return -EIO;
1014 	}
1015 
1016 	status = chip->direction_output(chip, gpio_chip_hwgpio(desc), value);
1017 	if (status == 0)
1018 		set_bit(FLAG_IS_OUT, &desc->flags);
1019 	trace_gpio_value(desc_to_gpio(desc), 0, value);
1020 	trace_gpio_direction(desc_to_gpio(desc), 0, status);
1021 	return status;
1022 }
1023 
1024 /**
1025  * gpiod_direction_output_raw - set the GPIO direction to output
1026  * @desc:	GPIO to set to output
1027  * @value:	initial output value of the GPIO
1028  *
1029  * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
1030  * be called safely on it. The initial value of the output must be specified
1031  * as raw value on the physical line without regard for the ACTIVE_LOW status.
1032  *
1033  * Return 0 in case of success, else an error code.
1034  */
gpiod_direction_output_raw(struct gpio_desc * desc,int value)1035 int gpiod_direction_output_raw(struct gpio_desc *desc, int value)
1036 {
1037 	if (!desc || !desc->chip) {
1038 		pr_warn("%s: invalid GPIO\n", __func__);
1039 		return -EINVAL;
1040 	}
1041 	return _gpiod_direction_output_raw(desc, value);
1042 }
1043 EXPORT_SYMBOL_GPL(gpiod_direction_output_raw);
1044 
1045 /**
1046  * gpiod_direction_output - set the GPIO direction to output
1047  * @desc:	GPIO to set to output
1048  * @value:	initial output value of the GPIO
1049  *
1050  * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
1051  * be called safely on it. The initial value of the output must be specified
1052  * as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
1053  * account.
1054  *
1055  * Return 0 in case of success, else an error code.
1056  */
gpiod_direction_output(struct gpio_desc * desc,int value)1057 int gpiod_direction_output(struct gpio_desc *desc, int value)
1058 {
1059 	if (!desc || !desc->chip) {
1060 		pr_warn("%s: invalid GPIO\n", __func__);
1061 		return -EINVAL;
1062 	}
1063 	if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
1064 		value = !value;
1065 	return _gpiod_direction_output_raw(desc, value);
1066 }
1067 EXPORT_SYMBOL_GPL(gpiod_direction_output);
1068 
1069 /**
1070  * gpiod_set_debounce - sets @debounce time for a @gpio
1071  * @gpio: the gpio to set debounce time
1072  * @debounce: debounce time is microseconds
1073  *
1074  * returns -ENOTSUPP if the controller does not support setting
1075  * debounce.
1076  */
gpiod_set_debounce(struct gpio_desc * desc,unsigned debounce)1077 int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce)
1078 {
1079 	struct gpio_chip	*chip;
1080 
1081 	if (!desc || !desc->chip) {
1082 		pr_warn("%s: invalid GPIO\n", __func__);
1083 		return -EINVAL;
1084 	}
1085 
1086 	chip = desc->chip;
1087 	if (!chip->set || !chip->set_debounce) {
1088 		gpiod_dbg(desc,
1089 			  "%s: missing set() or set_debounce() operations\n",
1090 			  __func__);
1091 		return -ENOTSUPP;
1092 	}
1093 
1094 	return chip->set_debounce(chip, gpio_chip_hwgpio(desc), debounce);
1095 }
1096 EXPORT_SYMBOL_GPL(gpiod_set_debounce);
1097 
1098 /**
1099  * gpiod_is_active_low - test whether a GPIO is active-low or not
1100  * @desc: the gpio descriptor to test
1101  *
1102  * Returns 1 if the GPIO is active-low, 0 otherwise.
1103  */
gpiod_is_active_low(const struct gpio_desc * desc)1104 int gpiod_is_active_low(const struct gpio_desc *desc)
1105 {
1106 	return test_bit(FLAG_ACTIVE_LOW, &desc->flags);
1107 }
1108 EXPORT_SYMBOL_GPL(gpiod_is_active_low);
1109 
1110 /* I/O calls are only valid after configuration completed; the relevant
1111  * "is this a valid GPIO" error checks should already have been done.
1112  *
1113  * "Get" operations are often inlinable as reading a pin value register,
1114  * and masking the relevant bit in that register.
1115  *
1116  * When "set" operations are inlinable, they involve writing that mask to
1117  * one register to set a low value, or a different register to set it high.
1118  * Otherwise locking is needed, so there may be little value to inlining.
1119  *
1120  *------------------------------------------------------------------------
1121  *
1122  * IMPORTANT!!!  The hot paths -- get/set value -- assume that callers
1123  * have requested the GPIO.  That can include implicit requesting by
1124  * a direction setting call.  Marking a gpio as requested locks its chip
1125  * in memory, guaranteeing that these table lookups need no more locking
1126  * and that gpiochip_remove() will fail.
1127  *
1128  * REVISIT when debugging, consider adding some instrumentation to ensure
1129  * that the GPIO was actually requested.
1130  */
1131 
_gpiod_get_raw_value(const struct gpio_desc * desc)1132 static bool _gpiod_get_raw_value(const struct gpio_desc *desc)
1133 {
1134 	struct gpio_chip	*chip;
1135 	bool value;
1136 	int offset;
1137 
1138 	chip = desc->chip;
1139 	offset = gpio_chip_hwgpio(desc);
1140 	value = chip->get ? chip->get(chip, offset) : false;
1141 	trace_gpio_value(desc_to_gpio(desc), 1, value);
1142 	return value;
1143 }
1144 
1145 /**
1146  * gpiod_get_raw_value() - return a gpio's raw value
1147  * @desc: gpio whose value will be returned
1148  *
1149  * Return the GPIO's raw value, i.e. the value of the physical line disregarding
1150  * its ACTIVE_LOW status.
1151  *
1152  * This function should be called from contexts where we cannot sleep, and will
1153  * complain if the GPIO chip functions potentially sleep.
1154  */
gpiod_get_raw_value(const struct gpio_desc * desc)1155 int gpiod_get_raw_value(const struct gpio_desc *desc)
1156 {
1157 	if (!desc)
1158 		return 0;
1159 	/* Should be using gpio_get_value_cansleep() */
1160 	WARN_ON(desc->chip->can_sleep);
1161 	return _gpiod_get_raw_value(desc);
1162 }
1163 EXPORT_SYMBOL_GPL(gpiod_get_raw_value);
1164 
1165 /**
1166  * gpiod_get_value() - return a gpio's value
1167  * @desc: gpio whose value will be returned
1168  *
1169  * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into
1170  * account.
1171  *
1172  * This function should be called from contexts where we cannot sleep, and will
1173  * complain if the GPIO chip functions potentially sleep.
1174  */
gpiod_get_value(const struct gpio_desc * desc)1175 int gpiod_get_value(const struct gpio_desc *desc)
1176 {
1177 	int value;
1178 	if (!desc)
1179 		return 0;
1180 	/* Should be using gpio_get_value_cansleep() */
1181 	WARN_ON(desc->chip->can_sleep);
1182 
1183 	value = _gpiod_get_raw_value(desc);
1184 	if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
1185 		value = !value;
1186 
1187 	return value;
1188 }
1189 EXPORT_SYMBOL_GPL(gpiod_get_value);
1190 
1191 /*
1192  *  _gpio_set_open_drain_value() - Set the open drain gpio's value.
1193  * @desc: gpio descriptor whose state need to be set.
1194  * @value: Non-zero for setting it HIGH otherise it will set to LOW.
1195  */
_gpio_set_open_drain_value(struct gpio_desc * desc,bool value)1196 static void _gpio_set_open_drain_value(struct gpio_desc *desc, bool value)
1197 {
1198 	int err = 0;
1199 	struct gpio_chip *chip = desc->chip;
1200 	int offset = gpio_chip_hwgpio(desc);
1201 
1202 	if (value) {
1203 		err = chip->direction_input(chip, offset);
1204 		if (!err)
1205 			clear_bit(FLAG_IS_OUT, &desc->flags);
1206 	} else {
1207 		err = chip->direction_output(chip, offset, 0);
1208 		if (!err)
1209 			set_bit(FLAG_IS_OUT, &desc->flags);
1210 	}
1211 	trace_gpio_direction(desc_to_gpio(desc), value, err);
1212 	if (err < 0)
1213 		gpiod_err(desc,
1214 			  "%s: Error in set_value for open drain err %d\n",
1215 			  __func__, err);
1216 }
1217 
1218 /*
1219  *  _gpio_set_open_source_value() - Set the open source gpio's value.
1220  * @desc: gpio descriptor whose state need to be set.
1221  * @value: Non-zero for setting it HIGH otherise it will set to LOW.
1222  */
_gpio_set_open_source_value(struct gpio_desc * desc,bool value)1223 static void _gpio_set_open_source_value(struct gpio_desc *desc, bool value)
1224 {
1225 	int err = 0;
1226 	struct gpio_chip *chip = desc->chip;
1227 	int offset = gpio_chip_hwgpio(desc);
1228 
1229 	if (value) {
1230 		err = chip->direction_output(chip, offset, 1);
1231 		if (!err)
1232 			set_bit(FLAG_IS_OUT, &desc->flags);
1233 	} else {
1234 		err = chip->direction_input(chip, offset);
1235 		if (!err)
1236 			clear_bit(FLAG_IS_OUT, &desc->flags);
1237 	}
1238 	trace_gpio_direction(desc_to_gpio(desc), !value, err);
1239 	if (err < 0)
1240 		gpiod_err(desc,
1241 			  "%s: Error in set_value for open source err %d\n",
1242 			  __func__, err);
1243 }
1244 
_gpiod_set_raw_value(struct gpio_desc * desc,bool value)1245 static void _gpiod_set_raw_value(struct gpio_desc *desc, bool value)
1246 {
1247 	struct gpio_chip	*chip;
1248 
1249 	chip = desc->chip;
1250 	trace_gpio_value(desc_to_gpio(desc), 0, value);
1251 	if (test_bit(FLAG_OPEN_DRAIN, &desc->flags))
1252 		_gpio_set_open_drain_value(desc, value);
1253 	else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags))
1254 		_gpio_set_open_source_value(desc, value);
1255 	else
1256 		chip->set(chip, gpio_chip_hwgpio(desc), value);
1257 }
1258 
1259 /**
1260  * gpiod_set_raw_value() - assign a gpio's raw value
1261  * @desc: gpio whose value will be assigned
1262  * @value: value to assign
1263  *
1264  * Set the raw value of the GPIO, i.e. the value of its physical line without
1265  * regard for its ACTIVE_LOW status.
1266  *
1267  * This function should be called from contexts where we cannot sleep, and will
1268  * complain if the GPIO chip functions potentially sleep.
1269  */
gpiod_set_raw_value(struct gpio_desc * desc,int value)1270 void gpiod_set_raw_value(struct gpio_desc *desc, int value)
1271 {
1272 	if (!desc)
1273 		return;
1274 	/* Should be using gpio_set_value_cansleep() */
1275 	WARN_ON(desc->chip->can_sleep);
1276 	_gpiod_set_raw_value(desc, value);
1277 }
1278 EXPORT_SYMBOL_GPL(gpiod_set_raw_value);
1279 
1280 /**
1281  * gpiod_set_value() - assign a gpio's value
1282  * @desc: gpio whose value will be assigned
1283  * @value: value to assign
1284  *
1285  * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
1286  * account
1287  *
1288  * This function should be called from contexts where we cannot sleep, and will
1289  * complain if the GPIO chip functions potentially sleep.
1290  */
gpiod_set_value(struct gpio_desc * desc,int value)1291 void gpiod_set_value(struct gpio_desc *desc, int value)
1292 {
1293 	if (!desc)
1294 		return;
1295 	/* Should be using gpio_set_value_cansleep() */
1296 	WARN_ON(desc->chip->can_sleep);
1297 	if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
1298 		value = !value;
1299 	_gpiod_set_raw_value(desc, value);
1300 }
1301 EXPORT_SYMBOL_GPL(gpiod_set_value);
1302 
1303 /**
1304  * gpiod_cansleep() - report whether gpio value access may sleep
1305  * @desc: gpio to check
1306  *
1307  */
gpiod_cansleep(const struct gpio_desc * desc)1308 int gpiod_cansleep(const struct gpio_desc *desc)
1309 {
1310 	if (!desc)
1311 		return 0;
1312 	return desc->chip->can_sleep;
1313 }
1314 EXPORT_SYMBOL_GPL(gpiod_cansleep);
1315 
1316 /**
1317  * gpiod_to_irq() - return the IRQ corresponding to a GPIO
1318  * @desc: gpio whose IRQ will be returned (already requested)
1319  *
1320  * Return the IRQ corresponding to the passed GPIO, or an error code in case of
1321  * error.
1322  */
gpiod_to_irq(const struct gpio_desc * desc)1323 int gpiod_to_irq(const struct gpio_desc *desc)
1324 {
1325 	struct gpio_chip	*chip;
1326 	int			offset;
1327 
1328 	if (!desc)
1329 		return -EINVAL;
1330 	chip = desc->chip;
1331 	offset = gpio_chip_hwgpio(desc);
1332 	return chip->to_irq ? chip->to_irq(chip, offset) : -ENXIO;
1333 }
1334 EXPORT_SYMBOL_GPL(gpiod_to_irq);
1335 
1336 /**
1337  * gpio_lock_as_irq() - lock a GPIO to be used as IRQ
1338  * @chip: the chip the GPIO to lock belongs to
1339  * @offset: the offset of the GPIO to lock as IRQ
1340  *
1341  * This is used directly by GPIO drivers that want to lock down
1342  * a certain GPIO line to be used for IRQs.
1343  */
gpio_lock_as_irq(struct gpio_chip * chip,unsigned int offset)1344 int gpio_lock_as_irq(struct gpio_chip *chip, unsigned int offset)
1345 {
1346 	if (offset >= chip->ngpio)
1347 		return -EINVAL;
1348 
1349 	if (test_bit(FLAG_IS_OUT, &chip->desc[offset].flags)) {
1350 		chip_err(chip,
1351 			  "%s: tried to flag a GPIO set as output for IRQ\n",
1352 			  __func__);
1353 		return -EIO;
1354 	}
1355 
1356 	set_bit(FLAG_USED_AS_IRQ, &chip->desc[offset].flags);
1357 	return 0;
1358 }
1359 EXPORT_SYMBOL_GPL(gpio_lock_as_irq);
1360 
1361 /**
1362  * gpio_unlock_as_irq() - unlock a GPIO used as IRQ
1363  * @chip: the chip the GPIO to lock belongs to
1364  * @offset: the offset of the GPIO to lock as IRQ
1365  *
1366  * This is used directly by GPIO drivers that want to indicate
1367  * that a certain GPIO is no longer used exclusively for IRQ.
1368  */
gpio_unlock_as_irq(struct gpio_chip * chip,unsigned int offset)1369 void gpio_unlock_as_irq(struct gpio_chip *chip, unsigned int offset)
1370 {
1371 	if (offset >= chip->ngpio)
1372 		return;
1373 
1374 	clear_bit(FLAG_USED_AS_IRQ, &chip->desc[offset].flags);
1375 }
1376 EXPORT_SYMBOL_GPL(gpio_unlock_as_irq);
1377 
1378 /**
1379  * gpiod_get_raw_value_cansleep() - return a gpio's raw value
1380  * @desc: gpio whose value will be returned
1381  *
1382  * Return the GPIO's raw value, i.e. the value of the physical line disregarding
1383  * its ACTIVE_LOW status.
1384  *
1385  * This function is to be called from contexts that can sleep.
1386  */
gpiod_get_raw_value_cansleep(const struct gpio_desc * desc)1387 int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc)
1388 {
1389 	might_sleep_if(extra_checks);
1390 	if (!desc)
1391 		return 0;
1392 	return _gpiod_get_raw_value(desc);
1393 }
1394 EXPORT_SYMBOL_GPL(gpiod_get_raw_value_cansleep);
1395 
1396 /**
1397  * gpiod_get_value_cansleep() - return a gpio's value
1398  * @desc: gpio whose value will be returned
1399  *
1400  * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into
1401  * account.
1402  *
1403  * This function is to be called from contexts that can sleep.
1404  */
gpiod_get_value_cansleep(const struct gpio_desc * desc)1405 int gpiod_get_value_cansleep(const struct gpio_desc *desc)
1406 {
1407 	int value;
1408 
1409 	might_sleep_if(extra_checks);
1410 	if (!desc)
1411 		return 0;
1412 
1413 	value = _gpiod_get_raw_value(desc);
1414 	if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
1415 		value = !value;
1416 
1417 	return value;
1418 }
1419 EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep);
1420 
1421 /**
1422  * gpiod_set_raw_value_cansleep() - assign a gpio's raw value
1423  * @desc: gpio whose value will be assigned
1424  * @value: value to assign
1425  *
1426  * Set the raw value of the GPIO, i.e. the value of its physical line without
1427  * regard for its ACTIVE_LOW status.
1428  *
1429  * This function is to be called from contexts that can sleep.
1430  */
gpiod_set_raw_value_cansleep(struct gpio_desc * desc,int value)1431 void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value)
1432 {
1433 	might_sleep_if(extra_checks);
1434 	if (!desc)
1435 		return;
1436 	_gpiod_set_raw_value(desc, value);
1437 }
1438 EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep);
1439 
1440 /**
1441  * gpiod_set_value_cansleep() - assign a gpio's value
1442  * @desc: gpio whose value will be assigned
1443  * @value: value to assign
1444  *
1445  * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
1446  * account
1447  *
1448  * This function is to be called from contexts that can sleep.
1449  */
gpiod_set_value_cansleep(struct gpio_desc * desc,int value)1450 void gpiod_set_value_cansleep(struct gpio_desc *desc, int value)
1451 {
1452 	might_sleep_if(extra_checks);
1453 	if (!desc)
1454 		return;
1455 
1456 	if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
1457 		value = !value;
1458 	_gpiod_set_raw_value(desc, value);
1459 }
1460 EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep);
1461 
1462 /**
1463  * gpiod_add_lookup_table() - register GPIO device consumers
1464  * @table: table of consumers to register
1465  */
gpiod_add_lookup_table(struct gpiod_lookup_table * table)1466 void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
1467 {
1468 	mutex_lock(&gpio_lookup_lock);
1469 
1470 	list_add_tail(&table->list, &gpio_lookup_list);
1471 
1472 	mutex_unlock(&gpio_lookup_lock);
1473 }
1474 
of_find_gpio(struct device * dev,const char * con_id,unsigned int idx,enum gpio_lookup_flags * flags)1475 static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
1476 				      unsigned int idx,
1477 				      enum gpio_lookup_flags *flags)
1478 {
1479 	static const char *suffixes[] = { "gpios", "gpio" };
1480 	char prop_name[32]; /* 32 is max size of property name */
1481 	enum of_gpio_flags of_flags;
1482 	struct gpio_desc *desc;
1483 	unsigned int i;
1484 
1485 	for (i = 0; i < ARRAY_SIZE(suffixes); i++) {
1486 		if (con_id)
1487 			snprintf(prop_name, 32, "%s-%s", con_id, suffixes[i]);
1488 		else
1489 			snprintf(prop_name, 32, "%s", suffixes[i]);
1490 
1491 		desc = of_get_named_gpiod_flags(dev->of_node, prop_name, idx,
1492 						&of_flags);
1493 		if (!IS_ERR(desc) || (PTR_ERR(desc) == -EPROBE_DEFER))
1494 			break;
1495 	}
1496 
1497 	if (IS_ERR(desc))
1498 		return desc;
1499 
1500 	if (of_flags & OF_GPIO_ACTIVE_LOW)
1501 		*flags |= GPIO_ACTIVE_LOW;
1502 
1503 	return desc;
1504 }
1505 
acpi_find_gpio(struct device * dev,const char * con_id,unsigned int idx,enum gpio_lookup_flags * flags)1506 static struct gpio_desc *acpi_find_gpio(struct device *dev, const char *con_id,
1507 					unsigned int idx,
1508 					enum gpio_lookup_flags *flags)
1509 {
1510 	struct acpi_gpio_info info;
1511 	struct gpio_desc *desc;
1512 
1513 	desc = acpi_get_gpiod_by_index(dev, idx, &info);
1514 	if (IS_ERR(desc))
1515 		return desc;
1516 
1517 	if (info.gpioint && info.active_low)
1518 		*flags |= GPIO_ACTIVE_LOW;
1519 
1520 	return desc;
1521 }
1522 
gpiod_find_lookup_table(struct device * dev)1523 static struct gpiod_lookup_table *gpiod_find_lookup_table(struct device *dev)
1524 {
1525 	const char *dev_id = dev ? dev_name(dev) : NULL;
1526 	struct gpiod_lookup_table *table;
1527 
1528 	mutex_lock(&gpio_lookup_lock);
1529 
1530 	list_for_each_entry(table, &gpio_lookup_list, list) {
1531 		if (table->dev_id && dev_id) {
1532 			/*
1533 			 * Valid strings on both ends, must be identical to have
1534 			 * a match
1535 			 */
1536 			if (!strcmp(table->dev_id, dev_id))
1537 				goto found;
1538 		} else {
1539 			/*
1540 			 * One of the pointers is NULL, so both must be to have
1541 			 * a match
1542 			 */
1543 			if (dev_id == table->dev_id)
1544 				goto found;
1545 		}
1546 	}
1547 	table = NULL;
1548 
1549 found:
1550 	mutex_unlock(&gpio_lookup_lock);
1551 	return table;
1552 }
1553 
gpiod_find(struct device * dev,const char * con_id,unsigned int idx,enum gpio_lookup_flags * flags)1554 static struct gpio_desc *gpiod_find(struct device *dev, const char *con_id,
1555 				    unsigned int idx,
1556 				    enum gpio_lookup_flags *flags)
1557 {
1558 	struct gpio_desc *desc = ERR_PTR(-ENOENT);
1559 	struct gpiod_lookup_table *table;
1560 	struct gpiod_lookup *p;
1561 
1562 	table = gpiod_find_lookup_table(dev);
1563 	if (!table)
1564 		return desc;
1565 
1566 	for (p = &table->table[0]; p->chip_label; p++) {
1567 		struct gpio_chip *chip;
1568 
1569 		/* idx must always match exactly */
1570 		if (p->idx != idx)
1571 			continue;
1572 
1573 		/* If the lookup entry has a con_id, require exact match */
1574 		if (p->con_id && (!con_id || strcmp(p->con_id, con_id)))
1575 			continue;
1576 
1577 		chip = find_chip_by_name(p->chip_label);
1578 
1579 		if (!chip) {
1580 			dev_err(dev, "cannot find GPIO chip %s\n",
1581 				p->chip_label);
1582 			return ERR_PTR(-ENODEV);
1583 		}
1584 
1585 		if (chip->ngpio <= p->chip_hwnum) {
1586 			dev_err(dev,
1587 				"requested GPIO %d is out of range [0..%d] for chip %s\n",
1588 				idx, chip->ngpio, chip->label);
1589 			return ERR_PTR(-EINVAL);
1590 		}
1591 
1592 		desc = gpiochip_get_desc(chip, p->chip_hwnum);
1593 		*flags = p->flags;
1594 
1595 		return desc;
1596 	}
1597 
1598 	return desc;
1599 }
1600 
1601 /**
1602  * gpiod_get - obtain a GPIO for a given GPIO function
1603  * @dev:	GPIO consumer, can be NULL for system-global GPIOs
1604  * @con_id:	function within the GPIO consumer
1605  * @flags:	optional GPIO initialization flags
1606  *
1607  * Return the GPIO descriptor corresponding to the function con_id of device
1608  * dev, -ENOENT if no GPIO has been assigned to the requested function, or
1609  * another IS_ERR() code if an error occured while trying to acquire the GPIO.
1610  */
__gpiod_get(struct device * dev,const char * con_id,enum gpiod_flags flags)1611 struct gpio_desc *__must_check __gpiod_get(struct device *dev, const char *con_id,
1612 					 enum gpiod_flags flags)
1613 {
1614 	return gpiod_get_index(dev, con_id, 0, flags);
1615 }
1616 EXPORT_SYMBOL_GPL(__gpiod_get);
1617 
1618 /**
1619  * gpiod_get_optional - obtain an optional GPIO for a given GPIO function
1620  * @dev: GPIO consumer, can be NULL for system-global GPIOs
1621  * @con_id: function within the GPIO consumer
1622  * @flags: optional GPIO initialization flags
1623  *
1624  * This is equivalent to gpiod_get(), except that when no GPIO was assigned to
1625  * the requested function it will return NULL. This is convenient for drivers
1626  * that need to handle optional GPIOs.
1627  */
__gpiod_get_optional(struct device * dev,const char * con_id,enum gpiod_flags flags)1628 struct gpio_desc *__must_check __gpiod_get_optional(struct device *dev,
1629 						  const char *con_id,
1630 						  enum gpiod_flags flags)
1631 {
1632 	return gpiod_get_index_optional(dev, con_id, 0, flags);
1633 }
1634 EXPORT_SYMBOL_GPL(__gpiod_get_optional);
1635 
1636 /**
1637  * gpiod_get_index - obtain a GPIO from a multi-index GPIO function
1638  * @dev:	GPIO consumer, can be NULL for system-global GPIOs
1639  * @con_id:	function within the GPIO consumer
1640  * @idx:	index of the GPIO to obtain in the consumer
1641  * @flags:	optional GPIO initialization flags
1642  *
1643  * This variant of gpiod_get() allows to access GPIOs other than the first
1644  * defined one for functions that define several GPIOs.
1645  *
1646  * Return a valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the
1647  * requested function and/or index, or another IS_ERR() code if an error
1648  * occured while trying to acquire the GPIO.
1649  */
__gpiod_get_index(struct device * dev,const char * con_id,unsigned int idx,enum gpiod_flags flags)1650 struct gpio_desc *__must_check __gpiod_get_index(struct device *dev,
1651 					       const char *con_id,
1652 					       unsigned int idx,
1653 					       enum gpiod_flags flags)
1654 {
1655 	struct gpio_desc *desc = NULL;
1656 	int status;
1657 	enum gpio_lookup_flags lookupflags = 0;
1658 
1659 	dev_dbg(dev, "GPIO lookup for consumer %s\n", con_id);
1660 
1661 	/* Using device tree? */
1662 	if (IS_ENABLED(CONFIG_OF) && dev && dev->of_node) {
1663 		dev_dbg(dev, "using device tree for GPIO lookup\n");
1664 		desc = of_find_gpio(dev, con_id, idx, &lookupflags);
1665 	} else if (IS_ENABLED(CONFIG_ACPI) && dev && ACPI_HANDLE(dev)) {
1666 		dev_dbg(dev, "using ACPI for GPIO lookup\n");
1667 		desc = acpi_find_gpio(dev, con_id, idx, &lookupflags);
1668 	}
1669 
1670 	/*
1671 	 * Either we are not using DT or ACPI, or their lookup did not return
1672 	 * a result. In that case, use platform lookup as a fallback.
1673 	 */
1674 	if (!desc || desc == ERR_PTR(-ENOENT)) {
1675 		dev_dbg(dev, "using lookup tables for GPIO lookup\n");
1676 		desc = gpiod_find(dev, con_id, idx, &lookupflags);
1677 	}
1678 
1679 	if (IS_ERR(desc)) {
1680 		dev_dbg(dev, "lookup for GPIO %s failed\n", con_id);
1681 		return desc;
1682 	}
1683 
1684 	status = gpiod_request(desc, con_id);
1685 
1686 	if (status < 0)
1687 		return ERR_PTR(status);
1688 
1689 	if (lookupflags & GPIO_ACTIVE_LOW)
1690 		set_bit(FLAG_ACTIVE_LOW, &desc->flags);
1691 	if (lookupflags & GPIO_OPEN_DRAIN)
1692 		set_bit(FLAG_OPEN_DRAIN, &desc->flags);
1693 	if (lookupflags & GPIO_OPEN_SOURCE)
1694 		set_bit(FLAG_OPEN_SOURCE, &desc->flags);
1695 
1696 	/* No particular flag request, return here... */
1697 	if (!(flags & GPIOD_FLAGS_BIT_DIR_SET))
1698 		return desc;
1699 
1700 	/* Process flags */
1701 	if (flags & GPIOD_FLAGS_BIT_DIR_OUT)
1702 		status = gpiod_direction_output(desc,
1703 					      flags & GPIOD_FLAGS_BIT_DIR_VAL);
1704 	else
1705 		status = gpiod_direction_input(desc);
1706 
1707 	if (status < 0) {
1708 		dev_dbg(dev, "setup of GPIO %s failed\n", con_id);
1709 		gpiod_put(desc);
1710 		return ERR_PTR(status);
1711 	}
1712 
1713 	return desc;
1714 }
1715 EXPORT_SYMBOL_GPL(__gpiod_get_index);
1716 
1717 /**
1718  * gpiod_get_index_optional - obtain an optional GPIO from a multi-index GPIO
1719  *                            function
1720  * @dev: GPIO consumer, can be NULL for system-global GPIOs
1721  * @con_id: function within the GPIO consumer
1722  * @index: index of the GPIO to obtain in the consumer
1723  * @flags: optional GPIO initialization flags
1724  *
1725  * This is equivalent to gpiod_get_index(), except that when no GPIO with the
1726  * specified index was assigned to the requested function it will return NULL.
1727  * This is convenient for drivers that need to handle optional GPIOs.
1728  */
__gpiod_get_index_optional(struct device * dev,const char * con_id,unsigned int index,enum gpiod_flags flags)1729 struct gpio_desc *__must_check __gpiod_get_index_optional(struct device *dev,
1730 							const char *con_id,
1731 							unsigned int index,
1732 							enum gpiod_flags flags)
1733 {
1734 	struct gpio_desc *desc;
1735 
1736 	desc = gpiod_get_index(dev, con_id, index, flags);
1737 	if (IS_ERR(desc)) {
1738 		if (PTR_ERR(desc) == -ENOENT)
1739 			return NULL;
1740 	}
1741 
1742 	return desc;
1743 }
1744 EXPORT_SYMBOL_GPL(__gpiod_get_index_optional);
1745 
1746 /**
1747  * gpiod_put - dispose of a GPIO descriptor
1748  * @desc:	GPIO descriptor to dispose of
1749  *
1750  * No descriptor can be used after gpiod_put() has been called on it.
1751  */
gpiod_put(struct gpio_desc * desc)1752 void gpiod_put(struct gpio_desc *desc)
1753 {
1754 	gpiod_free(desc);
1755 }
1756 EXPORT_SYMBOL_GPL(gpiod_put);
1757 
1758 #ifdef CONFIG_DEBUG_FS
1759 
gpiolib_dbg_show(struct seq_file * s,struct gpio_chip * chip)1760 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip)
1761 {
1762 	unsigned		i;
1763 	unsigned		gpio = chip->base;
1764 	struct gpio_desc	*gdesc = &chip->desc[0];
1765 	int			is_out;
1766 	int			is_irq;
1767 
1768 	for (i = 0; i < chip->ngpio; i++, gpio++, gdesc++) {
1769 		if (!test_bit(FLAG_REQUESTED, &gdesc->flags))
1770 			continue;
1771 
1772 		gpiod_get_direction(gdesc);
1773 		is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
1774 		is_irq = test_bit(FLAG_USED_AS_IRQ, &gdesc->flags);
1775 		seq_printf(s, " gpio-%-3d (%-20.20s) %s %s %s",
1776 			gpio, gdesc->label,
1777 			is_out ? "out" : "in ",
1778 			chip->get
1779 				? (chip->get(chip, i) ? "hi" : "lo")
1780 				: "?  ",
1781 			is_irq ? "IRQ" : "   ");
1782 		seq_printf(s, "\n");
1783 	}
1784 }
1785 
gpiolib_seq_start(struct seq_file * s,loff_t * pos)1786 static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos)
1787 {
1788 	unsigned long flags;
1789 	struct gpio_chip *chip = NULL;
1790 	loff_t index = *pos;
1791 
1792 	s->private = "";
1793 
1794 	spin_lock_irqsave(&gpio_lock, flags);
1795 	list_for_each_entry(chip, &gpio_chips, list)
1796 		if (index-- == 0) {
1797 			spin_unlock_irqrestore(&gpio_lock, flags);
1798 			return chip;
1799 		}
1800 	spin_unlock_irqrestore(&gpio_lock, flags);
1801 
1802 	return NULL;
1803 }
1804 
gpiolib_seq_next(struct seq_file * s,void * v,loff_t * pos)1805 static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos)
1806 {
1807 	unsigned long flags;
1808 	struct gpio_chip *chip = v;
1809 	void *ret = NULL;
1810 
1811 	spin_lock_irqsave(&gpio_lock, flags);
1812 	if (list_is_last(&chip->list, &gpio_chips))
1813 		ret = NULL;
1814 	else
1815 		ret = list_entry(chip->list.next, struct gpio_chip, list);
1816 	spin_unlock_irqrestore(&gpio_lock, flags);
1817 
1818 	s->private = "\n";
1819 	++*pos;
1820 
1821 	return ret;
1822 }
1823 
gpiolib_seq_stop(struct seq_file * s,void * v)1824 static void gpiolib_seq_stop(struct seq_file *s, void *v)
1825 {
1826 }
1827 
gpiolib_seq_show(struct seq_file * s,void * v)1828 static int gpiolib_seq_show(struct seq_file *s, void *v)
1829 {
1830 	struct gpio_chip *chip = v;
1831 	struct device *dev;
1832 
1833 	seq_printf(s, "%sGPIOs %d-%d", (char *)s->private,
1834 			chip->base, chip->base + chip->ngpio - 1);
1835 	dev = chip->dev;
1836 	if (dev)
1837 		seq_printf(s, ", %s/%s", dev->bus ? dev->bus->name : "no-bus",
1838 			dev_name(dev));
1839 	if (chip->label)
1840 		seq_printf(s, ", %s", chip->label);
1841 	if (chip->can_sleep)
1842 		seq_printf(s, ", can sleep");
1843 	seq_printf(s, ":\n");
1844 
1845 	if (chip->dbg_show)
1846 		chip->dbg_show(s, chip);
1847 	else
1848 		gpiolib_dbg_show(s, chip);
1849 
1850 	return 0;
1851 }
1852 
1853 static const struct seq_operations gpiolib_seq_ops = {
1854 	.start = gpiolib_seq_start,
1855 	.next = gpiolib_seq_next,
1856 	.stop = gpiolib_seq_stop,
1857 	.show = gpiolib_seq_show,
1858 };
1859 
gpiolib_open(struct inode * inode,struct file * file)1860 static int gpiolib_open(struct inode *inode, struct file *file)
1861 {
1862 	return seq_open(file, &gpiolib_seq_ops);
1863 }
1864 
1865 static const struct file_operations gpiolib_operations = {
1866 	.owner		= THIS_MODULE,
1867 	.open		= gpiolib_open,
1868 	.read		= seq_read,
1869 	.llseek		= seq_lseek,
1870 	.release	= seq_release,
1871 };
1872 
gpiolib_debugfs_init(void)1873 static int __init gpiolib_debugfs_init(void)
1874 {
1875 	/* /sys/kernel/debug/gpio */
1876 	(void) debugfs_create_file("gpio", S_IFREG | S_IRUGO,
1877 				NULL, NULL, &gpiolib_operations);
1878 	return 0;
1879 }
1880 subsys_initcall(gpiolib_debugfs_init);
1881 
1882 #endif	/* DEBUG_FS */
1883