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