Merge branch 'exit-cleanups-for-v5.15' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.git] / drivers / gpio / gpiolib.c
1 // SPDX-License-Identifier: GPL-2.0
2
3 #include <linux/bitmap.h>
4 #include <linux/kernel.h>
5 #include <linux/module.h>
6 #include <linux/interrupt.h>
7 #include <linux/irq.h>
8 #include <linux/spinlock.h>
9 #include <linux/list.h>
10 #include <linux/device.h>
11 #include <linux/err.h>
12 #include <linux/debugfs.h>
13 #include <linux/seq_file.h>
14 #include <linux/gpio.h>
15 #include <linux/idr.h>
16 #include <linux/slab.h>
17 #include <linux/acpi.h>
18 #include <linux/gpio/driver.h>
19 #include <linux/gpio/machine.h>
20 #include <linux/pinctrl/consumer.h>
21 #include <linux/fs.h>
22 #include <linux/compat.h>
23 #include <linux/file.h>
24 #include <uapi/linux/gpio.h>
25
26 #include "gpiolib.h"
27 #include "gpiolib-of.h"
28 #include "gpiolib-acpi.h"
29 #include "gpiolib-cdev.h"
30 #include "gpiolib-sysfs.h"
31
32 #define CREATE_TRACE_POINTS
33 #include <trace/events/gpio.h>
34
35 /* Implementation infrastructure for GPIO interfaces.
36  *
37  * The GPIO programming interface allows for inlining speed-critical
38  * get/set operations for common cases, so that access to SOC-integrated
39  * GPIOs can sometimes cost only an instruction or two per bit.
40  */
41
42
43 /* When debugging, extend minimal trust to callers and platform code.
44  * Also emit diagnostic messages that may help initial bringup, when
45  * board setup or driver bugs are most common.
46  *
47  * Otherwise, minimize overhead in what may be bitbanging codepaths.
48  */
49 #ifdef  DEBUG
50 #define extra_checks    1
51 #else
52 #define extra_checks    0
53 #endif
54
55 /* Device and char device-related information */
56 static DEFINE_IDA(gpio_ida);
57 static dev_t gpio_devt;
58 #define GPIO_DEV_MAX 256 /* 256 GPIO chip devices supported */
59 static int gpio_bus_match(struct device *dev, struct device_driver *drv);
60 static struct bus_type gpio_bus_type = {
61         .name = "gpio",
62         .match = gpio_bus_match,
63 };
64
65 /*
66  * Number of GPIOs to use for the fast path in set array
67  */
68 #define FASTPATH_NGPIO CONFIG_GPIOLIB_FASTPATH_LIMIT
69
70 /* gpio_lock prevents conflicts during gpio_desc[] table updates.
71  * While any GPIO is requested, its gpio_chip is not removable;
72  * each GPIO's "requested" flag serves as a lock and refcount.
73  */
74 DEFINE_SPINLOCK(gpio_lock);
75
76 static DEFINE_MUTEX(gpio_lookup_lock);
77 static LIST_HEAD(gpio_lookup_list);
78 LIST_HEAD(gpio_devices);
79
80 static DEFINE_MUTEX(gpio_machine_hogs_mutex);
81 static LIST_HEAD(gpio_machine_hogs);
82
83 static void gpiochip_free_hogs(struct gpio_chip *gc);
84 static int gpiochip_add_irqchip(struct gpio_chip *gc,
85                                 struct lock_class_key *lock_key,
86                                 struct lock_class_key *request_key);
87 static void gpiochip_irqchip_remove(struct gpio_chip *gc);
88 static int gpiochip_irqchip_init_hw(struct gpio_chip *gc);
89 static int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc);
90 static void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc);
91
92 static bool gpiolib_initialized;
93
94 static inline void desc_set_label(struct gpio_desc *d, const char *label)
95 {
96         d->label = label;
97 }
98
99 /**
100  * gpio_to_desc - Convert a GPIO number to its descriptor
101  * @gpio: global GPIO number
102  *
103  * Returns:
104  * The GPIO descriptor associated with the given GPIO, or %NULL if no GPIO
105  * with the given number exists in the system.
106  */
107 struct gpio_desc *gpio_to_desc(unsigned gpio)
108 {
109         struct gpio_device *gdev;
110         unsigned long flags;
111
112         spin_lock_irqsave(&gpio_lock, flags);
113
114         list_for_each_entry(gdev, &gpio_devices, list) {
115                 if (gdev->base <= gpio &&
116                     gdev->base + gdev->ngpio > gpio) {
117                         spin_unlock_irqrestore(&gpio_lock, flags);
118                         return &gdev->descs[gpio - gdev->base];
119                 }
120         }
121
122         spin_unlock_irqrestore(&gpio_lock, flags);
123
124         if (!gpio_is_valid(gpio))
125                 pr_warn("invalid GPIO %d\n", gpio);
126
127         return NULL;
128 }
129 EXPORT_SYMBOL_GPL(gpio_to_desc);
130
131 /**
132  * gpiochip_get_desc - get the GPIO descriptor corresponding to the given
133  *                     hardware number for this chip
134  * @gc: GPIO chip
135  * @hwnum: hardware number of the GPIO for this chip
136  *
137  * Returns:
138  * A pointer to the GPIO descriptor or ``ERR_PTR(-EINVAL)`` if no GPIO exists
139  * in the given chip for the specified hardware number.
140  */
141 struct gpio_desc *gpiochip_get_desc(struct gpio_chip *gc,
142                                     unsigned int hwnum)
143 {
144         struct gpio_device *gdev = gc->gpiodev;
145
146         if (hwnum >= gdev->ngpio)
147                 return ERR_PTR(-EINVAL);
148
149         return &gdev->descs[hwnum];
150 }
151 EXPORT_SYMBOL_GPL(gpiochip_get_desc);
152
153 /**
154  * desc_to_gpio - convert a GPIO descriptor to the integer namespace
155  * @desc: GPIO descriptor
156  *
157  * This should disappear in the future but is needed since we still
158  * use GPIO numbers for error messages and sysfs nodes.
159  *
160  * Returns:
161  * The global GPIO number for the GPIO specified by its descriptor.
162  */
163 int desc_to_gpio(const struct gpio_desc *desc)
164 {
165         return desc->gdev->base + (desc - &desc->gdev->descs[0]);
166 }
167 EXPORT_SYMBOL_GPL(desc_to_gpio);
168
169
170 /**
171  * gpiod_to_chip - Return the GPIO chip to which a GPIO descriptor belongs
172  * @desc:       descriptor to return the chip of
173  */
174 struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc)
175 {
176         if (!desc || !desc->gdev)
177                 return NULL;
178         return desc->gdev->chip;
179 }
180 EXPORT_SYMBOL_GPL(gpiod_to_chip);
181
182 /* dynamic allocation of GPIOs, e.g. on a hotplugged device */
183 static int gpiochip_find_base(int ngpio)
184 {
185         struct gpio_device *gdev;
186         int base = ARCH_NR_GPIOS - ngpio;
187
188         list_for_each_entry_reverse(gdev, &gpio_devices, list) {
189                 /* found a free space? */
190                 if (gdev->base + gdev->ngpio <= base)
191                         break;
192                 else
193                         /* nope, check the space right before the chip */
194                         base = gdev->base - ngpio;
195         }
196
197         if (gpio_is_valid(base)) {
198                 pr_debug("%s: found new base at %d\n", __func__, base);
199                 return base;
200         } else {
201                 pr_err("%s: cannot find free range\n", __func__);
202                 return -ENOSPC;
203         }
204 }
205
206 /**
207  * gpiod_get_direction - return the current direction of a GPIO
208  * @desc:       GPIO to get the direction of
209  *
210  * Returns 0 for output, 1 for input, or an error code in case of error.
211  *
212  * This function may sleep if gpiod_cansleep() is true.
213  */
214 int gpiod_get_direction(struct gpio_desc *desc)
215 {
216         struct gpio_chip *gc;
217         unsigned int offset;
218         int ret;
219
220         gc = gpiod_to_chip(desc);
221         offset = gpio_chip_hwgpio(desc);
222
223         /*
224          * Open drain emulation using input mode may incorrectly report
225          * input here, fix that up.
226          */
227         if (test_bit(FLAG_OPEN_DRAIN, &desc->flags) &&
228             test_bit(FLAG_IS_OUT, &desc->flags))
229                 return 0;
230
231         if (!gc->get_direction)
232                 return -ENOTSUPP;
233
234         ret = gc->get_direction(gc, offset);
235         if (ret < 0)
236                 return ret;
237
238         /* GPIOF_DIR_IN or other positive, otherwise GPIOF_DIR_OUT */
239         if (ret > 0)
240                 ret = 1;
241
242         assign_bit(FLAG_IS_OUT, &desc->flags, !ret);
243
244         return ret;
245 }
246 EXPORT_SYMBOL_GPL(gpiod_get_direction);
247
248 /*
249  * Add a new chip to the global chips list, keeping the list of chips sorted
250  * by range(means [base, base + ngpio - 1]) order.
251  *
252  * Return -EBUSY if the new chip overlaps with some other chip's integer
253  * space.
254  */
255 static int gpiodev_add_to_list(struct gpio_device *gdev)
256 {
257         struct gpio_device *prev, *next;
258
259         if (list_empty(&gpio_devices)) {
260                 /* initial entry in list */
261                 list_add_tail(&gdev->list, &gpio_devices);
262                 return 0;
263         }
264
265         next = list_entry(gpio_devices.next, struct gpio_device, list);
266         if (gdev->base + gdev->ngpio <= next->base) {
267                 /* add before first entry */
268                 list_add(&gdev->list, &gpio_devices);
269                 return 0;
270         }
271
272         prev = list_entry(gpio_devices.prev, struct gpio_device, list);
273         if (prev->base + prev->ngpio <= gdev->base) {
274                 /* add behind last entry */
275                 list_add_tail(&gdev->list, &gpio_devices);
276                 return 0;
277         }
278
279         list_for_each_entry_safe(prev, next, &gpio_devices, list) {
280                 /* at the end of the list */
281                 if (&next->list == &gpio_devices)
282                         break;
283
284                 /* add between prev and next */
285                 if (prev->base + prev->ngpio <= gdev->base
286                                 && gdev->base + gdev->ngpio <= next->base) {
287                         list_add(&gdev->list, &prev->list);
288                         return 0;
289                 }
290         }
291
292         dev_err(&gdev->dev, "GPIO integer space overlap, cannot add chip\n");
293         return -EBUSY;
294 }
295
296 /*
297  * Convert a GPIO name to its descriptor
298  * Note that there is no guarantee that GPIO names are globally unique!
299  * Hence this function will return, if it exists, a reference to the first GPIO
300  * line found that matches the given name.
301  */
302 static struct gpio_desc *gpio_name_to_desc(const char * const name)
303 {
304         struct gpio_device *gdev;
305         unsigned long flags;
306
307         if (!name)
308                 return NULL;
309
310         spin_lock_irqsave(&gpio_lock, flags);
311
312         list_for_each_entry(gdev, &gpio_devices, list) {
313                 int i;
314
315                 for (i = 0; i != gdev->ngpio; ++i) {
316                         struct gpio_desc *desc = &gdev->descs[i];
317
318                         if (!desc->name)
319                                 continue;
320
321                         if (!strcmp(desc->name, name)) {
322                                 spin_unlock_irqrestore(&gpio_lock, flags);
323                                 return desc;
324                         }
325                 }
326         }
327
328         spin_unlock_irqrestore(&gpio_lock, flags);
329
330         return NULL;
331 }
332
333 /*
334  * Take the names from gc->names and assign them to their GPIO descriptors.
335  * Warn if a name is already used for a GPIO line on a different GPIO chip.
336  *
337  * Note that:
338  *   1. Non-unique names are still accepted,
339  *   2. Name collisions within the same GPIO chip are not reported.
340  */
341 static int gpiochip_set_desc_names(struct gpio_chip *gc)
342 {
343         struct gpio_device *gdev = gc->gpiodev;
344         int i;
345
346         /* First check all names if they are unique */
347         for (i = 0; i != gc->ngpio; ++i) {
348                 struct gpio_desc *gpio;
349
350                 gpio = gpio_name_to_desc(gc->names[i]);
351                 if (gpio)
352                         dev_warn(&gdev->dev,
353                                  "Detected name collision for GPIO name '%s'\n",
354                                  gc->names[i]);
355         }
356
357         /* Then add all names to the GPIO descriptors */
358         for (i = 0; i != gc->ngpio; ++i)
359                 gdev->descs[i].name = gc->names[i];
360
361         return 0;
362 }
363
364 /*
365  * devprop_gpiochip_set_names - Set GPIO line names using device properties
366  * @chip: GPIO chip whose lines should be named, if possible
367  *
368  * Looks for device property "gpio-line-names" and if it exists assigns
369  * GPIO line names for the chip. The memory allocated for the assigned
370  * names belong to the underlying firmware node and should not be released
371  * by the caller.
372  */
373 static int devprop_gpiochip_set_names(struct gpio_chip *chip)
374 {
375         struct gpio_device *gdev = chip->gpiodev;
376         struct fwnode_handle *fwnode = dev_fwnode(&gdev->dev);
377         const char **names;
378         int ret, i;
379         int count;
380
381         count = fwnode_property_string_array_count(fwnode, "gpio-line-names");
382         if (count < 0)
383                 return 0;
384
385         if (count > gdev->ngpio) {
386                 dev_warn(&gdev->dev, "gpio-line-names is length %d but should be at most length %d",
387                          count, gdev->ngpio);
388                 count = gdev->ngpio;
389         }
390
391         names = kcalloc(count, sizeof(*names), GFP_KERNEL);
392         if (!names)
393                 return -ENOMEM;
394
395         ret = fwnode_property_read_string_array(fwnode, "gpio-line-names",
396                                                 names, count);
397         if (ret < 0) {
398                 dev_warn(&gdev->dev, "failed to read GPIO line names\n");
399                 kfree(names);
400                 return ret;
401         }
402
403         for (i = 0; i < count; i++)
404                 gdev->descs[i].name = names[i];
405
406         kfree(names);
407
408         return 0;
409 }
410
411 static unsigned long *gpiochip_allocate_mask(struct gpio_chip *gc)
412 {
413         unsigned long *p;
414
415         p = bitmap_alloc(gc->ngpio, GFP_KERNEL);
416         if (!p)
417                 return NULL;
418
419         /* Assume by default all GPIOs are valid */
420         bitmap_fill(p, gc->ngpio);
421
422         return p;
423 }
424
425 static int gpiochip_alloc_valid_mask(struct gpio_chip *gc)
426 {
427         if (!(of_gpio_need_valid_mask(gc) || gc->init_valid_mask))
428                 return 0;
429
430         gc->valid_mask = gpiochip_allocate_mask(gc);
431         if (!gc->valid_mask)
432                 return -ENOMEM;
433
434         return 0;
435 }
436
437 static int gpiochip_init_valid_mask(struct gpio_chip *gc)
438 {
439         if (gc->init_valid_mask)
440                 return gc->init_valid_mask(gc,
441                                            gc->valid_mask,
442                                            gc->ngpio);
443
444         return 0;
445 }
446
447 static void gpiochip_free_valid_mask(struct gpio_chip *gc)
448 {
449         bitmap_free(gc->valid_mask);
450         gc->valid_mask = NULL;
451 }
452
453 static int gpiochip_add_pin_ranges(struct gpio_chip *gc)
454 {
455         if (gc->add_pin_ranges)
456                 return gc->add_pin_ranges(gc);
457
458         return 0;
459 }
460
461 bool gpiochip_line_is_valid(const struct gpio_chip *gc,
462                                 unsigned int offset)
463 {
464         /* No mask means all valid */
465         if (likely(!gc->valid_mask))
466                 return true;
467         return test_bit(offset, gc->valid_mask);
468 }
469 EXPORT_SYMBOL_GPL(gpiochip_line_is_valid);
470
471 static void gpiodevice_release(struct device *dev)
472 {
473         struct gpio_device *gdev = container_of(dev, struct gpio_device, dev);
474         unsigned long flags;
475
476         spin_lock_irqsave(&gpio_lock, flags);
477         list_del(&gdev->list);
478         spin_unlock_irqrestore(&gpio_lock, flags);
479
480         ida_free(&gpio_ida, gdev->id);
481         kfree_const(gdev->label);
482         kfree(gdev->descs);
483         kfree(gdev);
484 }
485
486 #ifdef CONFIG_GPIO_CDEV
487 #define gcdev_register(gdev, devt)      gpiolib_cdev_register((gdev), (devt))
488 #define gcdev_unregister(gdev)          gpiolib_cdev_unregister((gdev))
489 #else
490 /*
491  * gpiolib_cdev_register() indirectly calls device_add(), which is still
492  * required even when cdev is not selected.
493  */
494 #define gcdev_register(gdev, devt)      device_add(&(gdev)->dev)
495 #define gcdev_unregister(gdev)          device_del(&(gdev)->dev)
496 #endif
497
498 static int gpiochip_setup_dev(struct gpio_device *gdev)
499 {
500         int ret;
501
502         ret = gcdev_register(gdev, gpio_devt);
503         if (ret)
504                 return ret;
505
506         ret = gpiochip_sysfs_register(gdev);
507         if (ret)
508                 goto err_remove_device;
509
510         /* From this point, the .release() function cleans up gpio_device */
511         gdev->dev.release = gpiodevice_release;
512         dev_dbg(&gdev->dev, "registered GPIOs %d to %d on %s\n", gdev->base,
513                 gdev->base + gdev->ngpio - 1, gdev->chip->label ? : "generic");
514
515         return 0;
516
517 err_remove_device:
518         gcdev_unregister(gdev);
519         return ret;
520 }
521
522 static void gpiochip_machine_hog(struct gpio_chip *gc, struct gpiod_hog *hog)
523 {
524         struct gpio_desc *desc;
525         int rv;
526
527         desc = gpiochip_get_desc(gc, hog->chip_hwnum);
528         if (IS_ERR(desc)) {
529                 chip_err(gc, "%s: unable to get GPIO desc: %ld\n", __func__,
530                          PTR_ERR(desc));
531                 return;
532         }
533
534         if (test_bit(FLAG_IS_HOGGED, &desc->flags))
535                 return;
536
537         rv = gpiod_hog(desc, hog->line_name, hog->lflags, hog->dflags);
538         if (rv)
539                 gpiod_err(desc, "%s: unable to hog GPIO line (%s:%u): %d\n",
540                           __func__, gc->label, hog->chip_hwnum, rv);
541 }
542
543 static void machine_gpiochip_add(struct gpio_chip *gc)
544 {
545         struct gpiod_hog *hog;
546
547         mutex_lock(&gpio_machine_hogs_mutex);
548
549         list_for_each_entry(hog, &gpio_machine_hogs, list) {
550                 if (!strcmp(gc->label, hog->chip_label))
551                         gpiochip_machine_hog(gc, hog);
552         }
553
554         mutex_unlock(&gpio_machine_hogs_mutex);
555 }
556
557 static void gpiochip_setup_devs(void)
558 {
559         struct gpio_device *gdev;
560         int ret;
561
562         list_for_each_entry(gdev, &gpio_devices, list) {
563                 ret = gpiochip_setup_dev(gdev);
564                 if (ret)
565                         dev_err(&gdev->dev,
566                                 "Failed to initialize gpio device (%d)\n", ret);
567         }
568 }
569
570 int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
571                                struct lock_class_key *lock_key,
572                                struct lock_class_key *request_key)
573 {
574         struct fwnode_handle *fwnode = gc->parent ? dev_fwnode(gc->parent) : NULL;
575         unsigned long   flags;
576         int             ret = 0;
577         unsigned        i;
578         int             base = gc->base;
579         struct gpio_device *gdev;
580
581         /*
582          * First: allocate and populate the internal stat container, and
583          * set up the struct device.
584          */
585         gdev = kzalloc(sizeof(*gdev), GFP_KERNEL);
586         if (!gdev)
587                 return -ENOMEM;
588         gdev->dev.bus = &gpio_bus_type;
589         gdev->dev.parent = gc->parent;
590         gdev->chip = gc;
591         gc->gpiodev = gdev;
592
593         of_gpio_dev_init(gc, gdev);
594         acpi_gpio_dev_init(gc, gdev);
595
596         /*
597          * Assign fwnode depending on the result of the previous calls,
598          * if none of them succeed, assign it to the parent's one.
599          */
600         gdev->dev.fwnode = dev_fwnode(&gdev->dev) ?: fwnode;
601
602         gdev->id = ida_alloc(&gpio_ida, GFP_KERNEL);
603         if (gdev->id < 0) {
604                 ret = gdev->id;
605                 goto err_free_gdev;
606         }
607
608         ret = dev_set_name(&gdev->dev, GPIOCHIP_NAME "%d", gdev->id);
609         if (ret)
610                 goto err_free_ida;
611
612         device_initialize(&gdev->dev);
613         if (gc->parent && gc->parent->driver)
614                 gdev->owner = gc->parent->driver->owner;
615         else if (gc->owner)
616                 /* TODO: remove chip->owner */
617                 gdev->owner = gc->owner;
618         else
619                 gdev->owner = THIS_MODULE;
620
621         gdev->descs = kcalloc(gc->ngpio, sizeof(gdev->descs[0]), GFP_KERNEL);
622         if (!gdev->descs) {
623                 ret = -ENOMEM;
624                 goto err_free_dev_name;
625         }
626
627         if (gc->ngpio == 0) {
628                 chip_err(gc, "tried to insert a GPIO chip with zero lines\n");
629                 ret = -EINVAL;
630                 goto err_free_descs;
631         }
632
633         if (gc->ngpio > FASTPATH_NGPIO)
634                 chip_warn(gc, "line cnt %u is greater than fast path cnt %u\n",
635                           gc->ngpio, FASTPATH_NGPIO);
636
637         gdev->label = kstrdup_const(gc->label ?: "unknown", GFP_KERNEL);
638         if (!gdev->label) {
639                 ret = -ENOMEM;
640                 goto err_free_descs;
641         }
642
643         gdev->ngpio = gc->ngpio;
644         gdev->data = data;
645
646         spin_lock_irqsave(&gpio_lock, flags);
647
648         /*
649          * TODO: this allocates a Linux GPIO number base in the global
650          * GPIO numberspace for this chip. In the long run we want to
651          * get *rid* of this numberspace and use only descriptors, but
652          * it may be a pipe dream. It will not happen before we get rid
653          * of the sysfs interface anyways.
654          */
655         if (base < 0) {
656                 base = gpiochip_find_base(gc->ngpio);
657                 if (base < 0) {
658                         ret = base;
659                         spin_unlock_irqrestore(&gpio_lock, flags);
660                         goto err_free_label;
661                 }
662                 /*
663                  * TODO: it should not be necessary to reflect the assigned
664                  * base outside of the GPIO subsystem. Go over drivers and
665                  * see if anyone makes use of this, else drop this and assign
666                  * a poison instead.
667                  */
668                 gc->base = base;
669         }
670         gdev->base = base;
671
672         ret = gpiodev_add_to_list(gdev);
673         if (ret) {
674                 spin_unlock_irqrestore(&gpio_lock, flags);
675                 goto err_free_label;
676         }
677
678         for (i = 0; i < gc->ngpio; i++)
679                 gdev->descs[i].gdev = gdev;
680
681         spin_unlock_irqrestore(&gpio_lock, flags);
682
683         BLOCKING_INIT_NOTIFIER_HEAD(&gdev->notifier);
684
685 #ifdef CONFIG_PINCTRL
686         INIT_LIST_HEAD(&gdev->pin_ranges);
687 #endif
688
689         if (gc->names)
690                 ret = gpiochip_set_desc_names(gc);
691         else
692                 ret = devprop_gpiochip_set_names(gc);
693         if (ret)
694                 goto err_remove_from_list;
695
696         ret = gpiochip_alloc_valid_mask(gc);
697         if (ret)
698                 goto err_remove_from_list;
699
700         ret = of_gpiochip_add(gc);
701         if (ret)
702                 goto err_free_gpiochip_mask;
703
704         ret = gpiochip_init_valid_mask(gc);
705         if (ret)
706                 goto err_remove_of_chip;
707
708         for (i = 0; i < gc->ngpio; i++) {
709                 struct gpio_desc *desc = &gdev->descs[i];
710
711                 if (gc->get_direction && gpiochip_line_is_valid(gc, i)) {
712                         assign_bit(FLAG_IS_OUT,
713                                    &desc->flags, !gc->get_direction(gc, i));
714                 } else {
715                         assign_bit(FLAG_IS_OUT,
716                                    &desc->flags, !gc->direction_input);
717                 }
718         }
719
720         ret = gpiochip_add_pin_ranges(gc);
721         if (ret)
722                 goto err_remove_of_chip;
723
724         acpi_gpiochip_add(gc);
725
726         machine_gpiochip_add(gc);
727
728         ret = gpiochip_irqchip_init_valid_mask(gc);
729         if (ret)
730                 goto err_remove_acpi_chip;
731
732         ret = gpiochip_irqchip_init_hw(gc);
733         if (ret)
734                 goto err_remove_acpi_chip;
735
736         ret = gpiochip_add_irqchip(gc, lock_key, request_key);
737         if (ret)
738                 goto err_remove_irqchip_mask;
739
740         /*
741          * By first adding the chardev, and then adding the device,
742          * we get a device node entry in sysfs under
743          * /sys/bus/gpio/devices/gpiochipN/dev that can be used for
744          * coldplug of device nodes and other udev business.
745          * We can do this only if gpiolib has been initialized.
746          * Otherwise, defer until later.
747          */
748         if (gpiolib_initialized) {
749                 ret = gpiochip_setup_dev(gdev);
750                 if (ret)
751                         goto err_remove_irqchip;
752         }
753         return 0;
754
755 err_remove_irqchip:
756         gpiochip_irqchip_remove(gc);
757 err_remove_irqchip_mask:
758         gpiochip_irqchip_free_valid_mask(gc);
759 err_remove_acpi_chip:
760         acpi_gpiochip_remove(gc);
761 err_remove_of_chip:
762         gpiochip_free_hogs(gc);
763         of_gpiochip_remove(gc);
764 err_free_gpiochip_mask:
765         gpiochip_remove_pin_ranges(gc);
766         gpiochip_free_valid_mask(gc);
767 err_remove_from_list:
768         spin_lock_irqsave(&gpio_lock, flags);
769         list_del(&gdev->list);
770         spin_unlock_irqrestore(&gpio_lock, flags);
771 err_free_label:
772         kfree_const(gdev->label);
773 err_free_descs:
774         kfree(gdev->descs);
775 err_free_dev_name:
776         kfree(dev_name(&gdev->dev));
777 err_free_ida:
778         ida_free(&gpio_ida, gdev->id);
779 err_free_gdev:
780         /* failures here can mean systems won't boot... */
781         if (ret != -EPROBE_DEFER) {
782                 pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,
783                        gdev->base, gdev->base + gdev->ngpio - 1,
784                        gc->label ? : "generic", ret);
785         }
786         kfree(gdev);
787         return ret;
788 }
789 EXPORT_SYMBOL_GPL(gpiochip_add_data_with_key);
790
791 /**
792  * gpiochip_get_data() - get per-subdriver data for the chip
793  * @gc: GPIO chip
794  *
795  * Returns:
796  * The per-subdriver data for the chip.
797  */
798 void *gpiochip_get_data(struct gpio_chip *gc)
799 {
800         return gc->gpiodev->data;
801 }
802 EXPORT_SYMBOL_GPL(gpiochip_get_data);
803
804 /**
805  * gpiochip_remove() - unregister a gpio_chip
806  * @gc: the chip to unregister
807  *
808  * A gpio_chip with any GPIOs still requested may not be removed.
809  */
810 void gpiochip_remove(struct gpio_chip *gc)
811 {
812         struct gpio_device *gdev = gc->gpiodev;
813         unsigned long   flags;
814         unsigned int    i;
815
816         /* FIXME: should the legacy sysfs handling be moved to gpio_device? */
817         gpiochip_sysfs_unregister(gdev);
818         gpiochip_free_hogs(gc);
819         /* Numb the device, cancelling all outstanding operations */
820         gdev->chip = NULL;
821         gpiochip_irqchip_remove(gc);
822         acpi_gpiochip_remove(gc);
823         of_gpiochip_remove(gc);
824         gpiochip_remove_pin_ranges(gc);
825         gpiochip_free_valid_mask(gc);
826         /*
827          * We accept no more calls into the driver from this point, so
828          * NULL the driver data pointer
829          */
830         gdev->data = NULL;
831
832         spin_lock_irqsave(&gpio_lock, flags);
833         for (i = 0; i < gdev->ngpio; i++) {
834                 if (gpiochip_is_requested(gc, i))
835                         break;
836         }
837         spin_unlock_irqrestore(&gpio_lock, flags);
838
839         if (i != gdev->ngpio)
840                 dev_crit(&gdev->dev,
841                          "REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED\n");
842
843         /*
844          * The gpiochip side puts its use of the device to rest here:
845          * if there are no userspace clients, the chardev and device will
846          * be removed, else it will be dangling until the last user is
847          * gone.
848          */
849         gcdev_unregister(gdev);
850         put_device(&gdev->dev);
851 }
852 EXPORT_SYMBOL_GPL(gpiochip_remove);
853
854 /**
855  * gpiochip_find() - iterator for locating a specific gpio_chip
856  * @data: data to pass to match function
857  * @match: Callback function to check gpio_chip
858  *
859  * Similar to bus_find_device.  It returns a reference to a gpio_chip as
860  * determined by a user supplied @match callback.  The callback should return
861  * 0 if the device doesn't match and non-zero if it does.  If the callback is
862  * non-zero, this function will return to the caller and not iterate over any
863  * more gpio_chips.
864  */
865 struct gpio_chip *gpiochip_find(void *data,
866                                 int (*match)(struct gpio_chip *gc,
867                                              void *data))
868 {
869         struct gpio_device *gdev;
870         struct gpio_chip *gc = NULL;
871         unsigned long flags;
872
873         spin_lock_irqsave(&gpio_lock, flags);
874         list_for_each_entry(gdev, &gpio_devices, list)
875                 if (gdev->chip && match(gdev->chip, data)) {
876                         gc = gdev->chip;
877                         break;
878                 }
879
880         spin_unlock_irqrestore(&gpio_lock, flags);
881
882         return gc;
883 }
884 EXPORT_SYMBOL_GPL(gpiochip_find);
885
886 static int gpiochip_match_name(struct gpio_chip *gc, void *data)
887 {
888         const char *name = data;
889
890         return !strcmp(gc->label, name);
891 }
892
893 static struct gpio_chip *find_chip_by_name(const char *name)
894 {
895         return gpiochip_find((void *)name, gpiochip_match_name);
896 }
897
898 #ifdef CONFIG_GPIOLIB_IRQCHIP
899
900 /*
901  * The following is irqchip helper code for gpiochips.
902  */
903
904 static int gpiochip_irqchip_init_hw(struct gpio_chip *gc)
905 {
906         struct gpio_irq_chip *girq = &gc->irq;
907
908         if (!girq->init_hw)
909                 return 0;
910
911         return girq->init_hw(gc);
912 }
913
914 static int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc)
915 {
916         struct gpio_irq_chip *girq = &gc->irq;
917
918         if (!girq->init_valid_mask)
919                 return 0;
920
921         girq->valid_mask = gpiochip_allocate_mask(gc);
922         if (!girq->valid_mask)
923                 return -ENOMEM;
924
925         girq->init_valid_mask(gc, girq->valid_mask, gc->ngpio);
926
927         return 0;
928 }
929
930 static void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc)
931 {
932         bitmap_free(gc->irq.valid_mask);
933         gc->irq.valid_mask = NULL;
934 }
935
936 bool gpiochip_irqchip_irq_valid(const struct gpio_chip *gc,
937                                 unsigned int offset)
938 {
939         if (!gpiochip_line_is_valid(gc, offset))
940                 return false;
941         /* No mask means all valid */
942         if (likely(!gc->irq.valid_mask))
943                 return true;
944         return test_bit(offset, gc->irq.valid_mask);
945 }
946 EXPORT_SYMBOL_GPL(gpiochip_irqchip_irq_valid);
947
948 #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
949
950 /**
951  * gpiochip_set_hierarchical_irqchip() - connects a hierarchical irqchip
952  * to a gpiochip
953  * @gc: the gpiochip to set the irqchip hierarchical handler to
954  * @irqchip: the irqchip to handle this level of the hierarchy, the interrupt
955  * will then percolate up to the parent
956  */
957 static void gpiochip_set_hierarchical_irqchip(struct gpio_chip *gc,
958                                               struct irq_chip *irqchip)
959 {
960         /* DT will deal with mapping each IRQ as we go along */
961         if (is_of_node(gc->irq.fwnode))
962                 return;
963
964         /*
965          * This is for legacy and boardfile "irqchip" fwnodes: allocate
966          * irqs upfront instead of dynamically since we don't have the
967          * dynamic type of allocation that hardware description languages
968          * provide. Once all GPIO drivers using board files are gone from
969          * the kernel we can delete this code, but for a transitional period
970          * it is necessary to keep this around.
971          */
972         if (is_fwnode_irqchip(gc->irq.fwnode)) {
973                 int i;
974                 int ret;
975
976                 for (i = 0; i < gc->ngpio; i++) {
977                         struct irq_fwspec fwspec;
978                         unsigned int parent_hwirq;
979                         unsigned int parent_type;
980                         struct gpio_irq_chip *girq = &gc->irq;
981
982                         /*
983                          * We call the child to parent translation function
984                          * only to check if the child IRQ is valid or not.
985                          * Just pick the rising edge type here as that is what
986                          * we likely need to support.
987                          */
988                         ret = girq->child_to_parent_hwirq(gc, i,
989                                                           IRQ_TYPE_EDGE_RISING,
990                                                           &parent_hwirq,
991                                                           &parent_type);
992                         if (ret) {
993                                 chip_err(gc, "skip set-up on hwirq %d\n",
994                                          i);
995                                 continue;
996                         }
997
998                         fwspec.fwnode = gc->irq.fwnode;
999                         /* This is the hwirq for the GPIO line side of things */
1000                         fwspec.param[0] = girq->child_offset_to_irq(gc, i);
1001                         /* Just pick something */
1002                         fwspec.param[1] = IRQ_TYPE_EDGE_RISING;
1003                         fwspec.param_count = 2;
1004                         ret = __irq_domain_alloc_irqs(gc->irq.domain,
1005                                                       /* just pick something */
1006                                                       -1,
1007                                                       1,
1008                                                       NUMA_NO_NODE,
1009                                                       &fwspec,
1010                                                       false,
1011                                                       NULL);
1012                         if (ret < 0) {
1013                                 chip_err(gc,
1014                                          "can not allocate irq for GPIO line %d parent hwirq %d in hierarchy domain: %d\n",
1015                                          i, parent_hwirq,
1016                                          ret);
1017                         }
1018                 }
1019         }
1020
1021         chip_err(gc, "%s unknown fwnode type proceed anyway\n", __func__);
1022
1023         return;
1024 }
1025
1026 static int gpiochip_hierarchy_irq_domain_translate(struct irq_domain *d,
1027                                                    struct irq_fwspec *fwspec,
1028                                                    unsigned long *hwirq,
1029                                                    unsigned int *type)
1030 {
1031         /* We support standard DT translation */
1032         if (is_of_node(fwspec->fwnode) && fwspec->param_count == 2) {
1033                 return irq_domain_translate_twocell(d, fwspec, hwirq, type);
1034         }
1035
1036         /* This is for board files and others not using DT */
1037         if (is_fwnode_irqchip(fwspec->fwnode)) {
1038                 int ret;
1039
1040                 ret = irq_domain_translate_twocell(d, fwspec, hwirq, type);
1041                 if (ret)
1042                         return ret;
1043                 WARN_ON(*type == IRQ_TYPE_NONE);
1044                 return 0;
1045         }
1046         return -EINVAL;
1047 }
1048
1049 static int gpiochip_hierarchy_irq_domain_alloc(struct irq_domain *d,
1050                                                unsigned int irq,
1051                                                unsigned int nr_irqs,
1052                                                void *data)
1053 {
1054         struct gpio_chip *gc = d->host_data;
1055         irq_hw_number_t hwirq;
1056         unsigned int type = IRQ_TYPE_NONE;
1057         struct irq_fwspec *fwspec = data;
1058         void *parent_arg;
1059         unsigned int parent_hwirq;
1060         unsigned int parent_type;
1061         struct gpio_irq_chip *girq = &gc->irq;
1062         int ret;
1063
1064         /*
1065          * The nr_irqs parameter is always one except for PCI multi-MSI
1066          * so this should not happen.
1067          */
1068         WARN_ON(nr_irqs != 1);
1069
1070         ret = gc->irq.child_irq_domain_ops.translate(d, fwspec, &hwirq, &type);
1071         if (ret)
1072                 return ret;
1073
1074         chip_dbg(gc, "allocate IRQ %d, hwirq %lu\n", irq,  hwirq);
1075
1076         ret = girq->child_to_parent_hwirq(gc, hwirq, type,
1077                                           &parent_hwirq, &parent_type);
1078         if (ret) {
1079                 chip_err(gc, "can't look up hwirq %lu\n", hwirq);
1080                 return ret;
1081         }
1082         chip_dbg(gc, "found parent hwirq %u\n", parent_hwirq);
1083
1084         /*
1085          * We set handle_bad_irq because the .set_type() should
1086          * always be invoked and set the right type of handler.
1087          */
1088         irq_domain_set_info(d,
1089                             irq,
1090                             hwirq,
1091                             gc->irq.chip,
1092                             gc,
1093                             girq->handler,
1094                             NULL, NULL);
1095         irq_set_probe(irq);
1096
1097         /* This parent only handles asserted level IRQs */
1098         parent_arg = girq->populate_parent_alloc_arg(gc, parent_hwirq, parent_type);
1099         if (!parent_arg)
1100                 return -ENOMEM;
1101
1102         chip_dbg(gc, "alloc_irqs_parent for %d parent hwirq %d\n",
1103                   irq, parent_hwirq);
1104         irq_set_lockdep_class(irq, gc->irq.lock_key, gc->irq.request_key);
1105         ret = irq_domain_alloc_irqs_parent(d, irq, 1, parent_arg);
1106         /*
1107          * If the parent irqdomain is msi, the interrupts have already
1108          * been allocated, so the EEXIST is good.
1109          */
1110         if (irq_domain_is_msi(d->parent) && (ret == -EEXIST))
1111                 ret = 0;
1112         if (ret)
1113                 chip_err(gc,
1114                          "failed to allocate parent hwirq %d for hwirq %lu\n",
1115                          parent_hwirq, hwirq);
1116
1117         kfree(parent_arg);
1118         return ret;
1119 }
1120
1121 static unsigned int gpiochip_child_offset_to_irq_noop(struct gpio_chip *gc,
1122                                                       unsigned int offset)
1123 {
1124         return offset;
1125 }
1126
1127 static void gpiochip_hierarchy_setup_domain_ops(struct irq_domain_ops *ops)
1128 {
1129         ops->activate = gpiochip_irq_domain_activate;
1130         ops->deactivate = gpiochip_irq_domain_deactivate;
1131         ops->alloc = gpiochip_hierarchy_irq_domain_alloc;
1132         ops->free = irq_domain_free_irqs_common;
1133
1134         /*
1135          * We only allow overriding the translate() function for
1136          * hierarchical chips, and this should only be done if the user
1137          * really need something other than 1:1 translation.
1138          */
1139         if (!ops->translate)
1140                 ops->translate = gpiochip_hierarchy_irq_domain_translate;
1141 }
1142
1143 static int gpiochip_hierarchy_add_domain(struct gpio_chip *gc)
1144 {
1145         if (!gc->irq.child_to_parent_hwirq ||
1146             !gc->irq.fwnode) {
1147                 chip_err(gc, "missing irqdomain vital data\n");
1148                 return -EINVAL;
1149         }
1150
1151         if (!gc->irq.child_offset_to_irq)
1152                 gc->irq.child_offset_to_irq = gpiochip_child_offset_to_irq_noop;
1153
1154         if (!gc->irq.populate_parent_alloc_arg)
1155                 gc->irq.populate_parent_alloc_arg =
1156                         gpiochip_populate_parent_fwspec_twocell;
1157
1158         gpiochip_hierarchy_setup_domain_ops(&gc->irq.child_irq_domain_ops);
1159
1160         gc->irq.domain = irq_domain_create_hierarchy(
1161                 gc->irq.parent_domain,
1162                 0,
1163                 gc->ngpio,
1164                 gc->irq.fwnode,
1165                 &gc->irq.child_irq_domain_ops,
1166                 gc);
1167
1168         if (!gc->irq.domain)
1169                 return -ENOMEM;
1170
1171         gpiochip_set_hierarchical_irqchip(gc, gc->irq.chip);
1172
1173         return 0;
1174 }
1175
1176 static bool gpiochip_hierarchy_is_hierarchical(struct gpio_chip *gc)
1177 {
1178         return !!gc->irq.parent_domain;
1179 }
1180
1181 void *gpiochip_populate_parent_fwspec_twocell(struct gpio_chip *gc,
1182                                              unsigned int parent_hwirq,
1183                                              unsigned int parent_type)
1184 {
1185         struct irq_fwspec *fwspec;
1186
1187         fwspec = kmalloc(sizeof(*fwspec), GFP_KERNEL);
1188         if (!fwspec)
1189                 return NULL;
1190
1191         fwspec->fwnode = gc->irq.parent_domain->fwnode;
1192         fwspec->param_count = 2;
1193         fwspec->param[0] = parent_hwirq;
1194         fwspec->param[1] = parent_type;
1195
1196         return fwspec;
1197 }
1198 EXPORT_SYMBOL_GPL(gpiochip_populate_parent_fwspec_twocell);
1199
1200 void *gpiochip_populate_parent_fwspec_fourcell(struct gpio_chip *gc,
1201                                               unsigned int parent_hwirq,
1202                                               unsigned int parent_type)
1203 {
1204         struct irq_fwspec *fwspec;
1205
1206         fwspec = kmalloc(sizeof(*fwspec), GFP_KERNEL);
1207         if (!fwspec)
1208                 return NULL;
1209
1210         fwspec->fwnode = gc->irq.parent_domain->fwnode;
1211         fwspec->param_count = 4;
1212         fwspec->param[0] = 0;
1213         fwspec->param[1] = parent_hwirq;
1214         fwspec->param[2] = 0;
1215         fwspec->param[3] = parent_type;
1216
1217         return fwspec;
1218 }
1219 EXPORT_SYMBOL_GPL(gpiochip_populate_parent_fwspec_fourcell);
1220
1221 #else
1222
1223 static int gpiochip_hierarchy_add_domain(struct gpio_chip *gc)
1224 {
1225         return -EINVAL;
1226 }
1227
1228 static bool gpiochip_hierarchy_is_hierarchical(struct gpio_chip *gc)
1229 {
1230         return false;
1231 }
1232
1233 #endif /* CONFIG_IRQ_DOMAIN_HIERARCHY */
1234
1235 /**
1236  * gpiochip_irq_map() - maps an IRQ into a GPIO irqchip
1237  * @d: the irqdomain used by this irqchip
1238  * @irq: the global irq number used by this GPIO irqchip irq
1239  * @hwirq: the local IRQ/GPIO line offset on this gpiochip
1240  *
1241  * This function will set up the mapping for a certain IRQ line on a
1242  * gpiochip by assigning the gpiochip as chip data, and using the irqchip
1243  * stored inside the gpiochip.
1244  */
1245 int gpiochip_irq_map(struct irq_domain *d, unsigned int irq,
1246                      irq_hw_number_t hwirq)
1247 {
1248         struct gpio_chip *gc = d->host_data;
1249         int ret = 0;
1250
1251         if (!gpiochip_irqchip_irq_valid(gc, hwirq))
1252                 return -ENXIO;
1253
1254         irq_set_chip_data(irq, gc);
1255         /*
1256          * This lock class tells lockdep that GPIO irqs are in a different
1257          * category than their parents, so it won't report false recursion.
1258          */
1259         irq_set_lockdep_class(irq, gc->irq.lock_key, gc->irq.request_key);
1260         irq_set_chip_and_handler(irq, gc->irq.chip, gc->irq.handler);
1261         /* Chips that use nested thread handlers have them marked */
1262         if (gc->irq.threaded)
1263                 irq_set_nested_thread(irq, 1);
1264         irq_set_noprobe(irq);
1265
1266         if (gc->irq.num_parents == 1)
1267                 ret = irq_set_parent(irq, gc->irq.parents[0]);
1268         else if (gc->irq.map)
1269                 ret = irq_set_parent(irq, gc->irq.map[hwirq]);
1270
1271         if (ret < 0)
1272                 return ret;
1273
1274         /*
1275          * No set-up of the hardware will happen if IRQ_TYPE_NONE
1276          * is passed as default type.
1277          */
1278         if (gc->irq.default_type != IRQ_TYPE_NONE)
1279                 irq_set_irq_type(irq, gc->irq.default_type);
1280
1281         return 0;
1282 }
1283 EXPORT_SYMBOL_GPL(gpiochip_irq_map);
1284
1285 void gpiochip_irq_unmap(struct irq_domain *d, unsigned int irq)
1286 {
1287         struct gpio_chip *gc = d->host_data;
1288
1289         if (gc->irq.threaded)
1290                 irq_set_nested_thread(irq, 0);
1291         irq_set_chip_and_handler(irq, NULL, NULL);
1292         irq_set_chip_data(irq, NULL);
1293 }
1294 EXPORT_SYMBOL_GPL(gpiochip_irq_unmap);
1295
1296 static const struct irq_domain_ops gpiochip_domain_ops = {
1297         .map    = gpiochip_irq_map,
1298         .unmap  = gpiochip_irq_unmap,
1299         /* Virtually all GPIO irqchips are twocell:ed */
1300         .xlate  = irq_domain_xlate_twocell,
1301 };
1302
1303 /*
1304  * TODO: move these activate/deactivate in under the hierarchicial
1305  * irqchip implementation as static once SPMI and SSBI (all external
1306  * users) are phased over.
1307  */
1308 /**
1309  * gpiochip_irq_domain_activate() - Lock a GPIO to be used as an IRQ
1310  * @domain: The IRQ domain used by this IRQ chip
1311  * @data: Outermost irq_data associated with the IRQ
1312  * @reserve: If set, only reserve an interrupt vector instead of assigning one
1313  *
1314  * This function is a wrapper that calls gpiochip_lock_as_irq() and is to be
1315  * used as the activate function for the &struct irq_domain_ops. The host_data
1316  * for the IRQ domain must be the &struct gpio_chip.
1317  */
1318 int gpiochip_irq_domain_activate(struct irq_domain *domain,
1319                                  struct irq_data *data, bool reserve)
1320 {
1321         struct gpio_chip *gc = domain->host_data;
1322
1323         return gpiochip_lock_as_irq(gc, data->hwirq);
1324 }
1325 EXPORT_SYMBOL_GPL(gpiochip_irq_domain_activate);
1326
1327 /**
1328  * gpiochip_irq_domain_deactivate() - Unlock a GPIO used as an IRQ
1329  * @domain: The IRQ domain used by this IRQ chip
1330  * @data: Outermost irq_data associated with the IRQ
1331  *
1332  * This function is a wrapper that will call gpiochip_unlock_as_irq() and is to
1333  * be used as the deactivate function for the &struct irq_domain_ops. The
1334  * host_data for the IRQ domain must be the &struct gpio_chip.
1335  */
1336 void gpiochip_irq_domain_deactivate(struct irq_domain *domain,
1337                                     struct irq_data *data)
1338 {
1339         struct gpio_chip *gc = domain->host_data;
1340
1341         return gpiochip_unlock_as_irq(gc, data->hwirq);
1342 }
1343 EXPORT_SYMBOL_GPL(gpiochip_irq_domain_deactivate);
1344
1345 static int gpiochip_to_irq(struct gpio_chip *gc, unsigned int offset)
1346 {
1347         struct irq_domain *domain = gc->irq.domain;
1348
1349         if (!gpiochip_irqchip_irq_valid(gc, offset))
1350                 return -ENXIO;
1351
1352 #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
1353         if (irq_domain_is_hierarchy(domain)) {
1354                 struct irq_fwspec spec;
1355
1356                 spec.fwnode = domain->fwnode;
1357                 spec.param_count = 2;
1358                 spec.param[0] = gc->irq.child_offset_to_irq(gc, offset);
1359                 spec.param[1] = IRQ_TYPE_NONE;
1360
1361                 return irq_create_fwspec_mapping(&spec);
1362         }
1363 #endif
1364
1365         return irq_create_mapping(domain, offset);
1366 }
1367
1368 static int gpiochip_irq_reqres(struct irq_data *d)
1369 {
1370         struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1371
1372         return gpiochip_reqres_irq(gc, d->hwirq);
1373 }
1374
1375 static void gpiochip_irq_relres(struct irq_data *d)
1376 {
1377         struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1378
1379         gpiochip_relres_irq(gc, d->hwirq);
1380 }
1381
1382 static void gpiochip_irq_mask(struct irq_data *d)
1383 {
1384         struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1385
1386         if (gc->irq.irq_mask)
1387                 gc->irq.irq_mask(d);
1388         gpiochip_disable_irq(gc, d->hwirq);
1389 }
1390
1391 static void gpiochip_irq_unmask(struct irq_data *d)
1392 {
1393         struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1394
1395         gpiochip_enable_irq(gc, d->hwirq);
1396         if (gc->irq.irq_unmask)
1397                 gc->irq.irq_unmask(d);
1398 }
1399
1400 static void gpiochip_irq_enable(struct irq_data *d)
1401 {
1402         struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1403
1404         gpiochip_enable_irq(gc, d->hwirq);
1405         gc->irq.irq_enable(d);
1406 }
1407
1408 static void gpiochip_irq_disable(struct irq_data *d)
1409 {
1410         struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1411
1412         gc->irq.irq_disable(d);
1413         gpiochip_disable_irq(gc, d->hwirq);
1414 }
1415
1416 static void gpiochip_set_irq_hooks(struct gpio_chip *gc)
1417 {
1418         struct irq_chip *irqchip = gc->irq.chip;
1419
1420         if (!irqchip->irq_request_resources &&
1421             !irqchip->irq_release_resources) {
1422                 irqchip->irq_request_resources = gpiochip_irq_reqres;
1423                 irqchip->irq_release_resources = gpiochip_irq_relres;
1424         }
1425         if (WARN_ON(gc->irq.irq_enable))
1426                 return;
1427         /* Check if the irqchip already has this hook... */
1428         if (irqchip->irq_enable == gpiochip_irq_enable ||
1429                 irqchip->irq_mask == gpiochip_irq_mask) {
1430                 /*
1431                  * ...and if so, give a gentle warning that this is bad
1432                  * practice.
1433                  */
1434                 chip_info(gc,
1435                           "detected irqchip that is shared with multiple gpiochips: please fix the driver.\n");
1436                 return;
1437         }
1438
1439         if (irqchip->irq_disable) {
1440                 gc->irq.irq_disable = irqchip->irq_disable;
1441                 irqchip->irq_disable = gpiochip_irq_disable;
1442         } else {
1443                 gc->irq.irq_mask = irqchip->irq_mask;
1444                 irqchip->irq_mask = gpiochip_irq_mask;
1445         }
1446
1447         if (irqchip->irq_enable) {
1448                 gc->irq.irq_enable = irqchip->irq_enable;
1449                 irqchip->irq_enable = gpiochip_irq_enable;
1450         } else {
1451                 gc->irq.irq_unmask = irqchip->irq_unmask;
1452                 irqchip->irq_unmask = gpiochip_irq_unmask;
1453         }
1454 }
1455
1456 /**
1457  * gpiochip_add_irqchip() - adds an IRQ chip to a GPIO chip
1458  * @gc: the GPIO chip to add the IRQ chip to
1459  * @lock_key: lockdep class for IRQ lock
1460  * @request_key: lockdep class for IRQ request
1461  */
1462 static int gpiochip_add_irqchip(struct gpio_chip *gc,
1463                                 struct lock_class_key *lock_key,
1464                                 struct lock_class_key *request_key)
1465 {
1466         struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
1467         struct irq_chip *irqchip = gc->irq.chip;
1468         unsigned int type;
1469         unsigned int i;
1470
1471         if (!irqchip)
1472                 return 0;
1473
1474         if (gc->irq.parent_handler && gc->can_sleep) {
1475                 chip_err(gc, "you cannot have chained interrupts on a chip that may sleep\n");
1476                 return -EINVAL;
1477         }
1478
1479         type = gc->irq.default_type;
1480
1481         /*
1482          * Specifying a default trigger is a terrible idea if DT or ACPI is
1483          * used to configure the interrupts, as you may end up with
1484          * conflicting triggers. Tell the user, and reset to NONE.
1485          */
1486         if (WARN(fwnode && type != IRQ_TYPE_NONE,
1487                  "%pfw: Ignoring %u default trigger\n", fwnode, type))
1488                 type = IRQ_TYPE_NONE;
1489
1490         if (gc->to_irq)
1491                 chip_warn(gc, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__);
1492
1493         gc->to_irq = gpiochip_to_irq;
1494         gc->irq.default_type = type;
1495         gc->irq.lock_key = lock_key;
1496         gc->irq.request_key = request_key;
1497
1498         /* If a parent irqdomain is provided, let's build a hierarchy */
1499         if (gpiochip_hierarchy_is_hierarchical(gc)) {
1500                 int ret = gpiochip_hierarchy_add_domain(gc);
1501                 if (ret)
1502                         return ret;
1503         } else {
1504                 /* Some drivers provide custom irqdomain ops */
1505                 gc->irq.domain = irq_domain_create_simple(fwnode,
1506                         gc->ngpio,
1507                         gc->irq.first,
1508                         gc->irq.domain_ops ?: &gpiochip_domain_ops,
1509                         gc);
1510                 if (!gc->irq.domain)
1511                         return -EINVAL;
1512         }
1513
1514         if (gc->irq.parent_handler) {
1515                 void *data = gc->irq.parent_handler_data ?: gc;
1516
1517                 for (i = 0; i < gc->irq.num_parents; i++) {
1518                         /*
1519                          * The parent IRQ chip is already using the chip_data
1520                          * for this IRQ chip, so our callbacks simply use the
1521                          * handler_data.
1522                          */
1523                         irq_set_chained_handler_and_data(gc->irq.parents[i],
1524                                                          gc->irq.parent_handler,
1525                                                          data);
1526                 }
1527         }
1528
1529         gpiochip_set_irq_hooks(gc);
1530
1531         acpi_gpiochip_request_interrupts(gc);
1532
1533         return 0;
1534 }
1535
1536 /**
1537  * gpiochip_irqchip_remove() - removes an irqchip added to a gpiochip
1538  * @gc: the gpiochip to remove the irqchip from
1539  *
1540  * This is called only from gpiochip_remove()
1541  */
1542 static void gpiochip_irqchip_remove(struct gpio_chip *gc)
1543 {
1544         struct irq_chip *irqchip = gc->irq.chip;
1545         unsigned int offset;
1546
1547         acpi_gpiochip_free_interrupts(gc);
1548
1549         if (irqchip && gc->irq.parent_handler) {
1550                 struct gpio_irq_chip *irq = &gc->irq;
1551                 unsigned int i;
1552
1553                 for (i = 0; i < irq->num_parents; i++)
1554                         irq_set_chained_handler_and_data(irq->parents[i],
1555                                                          NULL, NULL);
1556         }
1557
1558         /* Remove all IRQ mappings and delete the domain */
1559         if (gc->irq.domain) {
1560                 unsigned int irq;
1561
1562                 for (offset = 0; offset < gc->ngpio; offset++) {
1563                         if (!gpiochip_irqchip_irq_valid(gc, offset))
1564                                 continue;
1565
1566                         irq = irq_find_mapping(gc->irq.domain, offset);
1567                         irq_dispose_mapping(irq);
1568                 }
1569
1570                 irq_domain_remove(gc->irq.domain);
1571         }
1572
1573         if (irqchip) {
1574                 if (irqchip->irq_request_resources == gpiochip_irq_reqres) {
1575                         irqchip->irq_request_resources = NULL;
1576                         irqchip->irq_release_resources = NULL;
1577                 }
1578                 if (irqchip->irq_enable == gpiochip_irq_enable) {
1579                         irqchip->irq_enable = gc->irq.irq_enable;
1580                         irqchip->irq_disable = gc->irq.irq_disable;
1581                 }
1582         }
1583         gc->irq.irq_enable = NULL;
1584         gc->irq.irq_disable = NULL;
1585         gc->irq.chip = NULL;
1586
1587         gpiochip_irqchip_free_valid_mask(gc);
1588 }
1589
1590 /**
1591  * gpiochip_irqchip_add_domain() - adds an irqdomain to a gpiochip
1592  * @gc: the gpiochip to add the irqchip to
1593  * @domain: the irqdomain to add to the gpiochip
1594  *
1595  * This function adds an IRQ domain to the gpiochip.
1596  */
1597 int gpiochip_irqchip_add_domain(struct gpio_chip *gc,
1598                                 struct irq_domain *domain)
1599 {
1600         if (!domain)
1601                 return -EINVAL;
1602
1603         gc->to_irq = gpiochip_to_irq;
1604         gc->irq.domain = domain;
1605
1606         return 0;
1607 }
1608 EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_domain);
1609
1610 #else /* CONFIG_GPIOLIB_IRQCHIP */
1611
1612 static inline int gpiochip_add_irqchip(struct gpio_chip *gc,
1613                                        struct lock_class_key *lock_key,
1614                                        struct lock_class_key *request_key)
1615 {
1616         return 0;
1617 }
1618 static void gpiochip_irqchip_remove(struct gpio_chip *gc) {}
1619
1620 static inline int gpiochip_irqchip_init_hw(struct gpio_chip *gc)
1621 {
1622         return 0;
1623 }
1624
1625 static inline int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc)
1626 {
1627         return 0;
1628 }
1629 static inline void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc)
1630 { }
1631
1632 #endif /* CONFIG_GPIOLIB_IRQCHIP */
1633
1634 /**
1635  * gpiochip_generic_request() - request the gpio function for a pin
1636  * @gc: the gpiochip owning the GPIO
1637  * @offset: the offset of the GPIO to request for GPIO function
1638  */
1639 int gpiochip_generic_request(struct gpio_chip *gc, unsigned int offset)
1640 {
1641 #ifdef CONFIG_PINCTRL
1642         if (list_empty(&gc->gpiodev->pin_ranges))
1643                 return 0;
1644 #endif
1645
1646         return pinctrl_gpio_request(gc->gpiodev->base + offset);
1647 }
1648 EXPORT_SYMBOL_GPL(gpiochip_generic_request);
1649
1650 /**
1651  * gpiochip_generic_free() - free the gpio function from a pin
1652  * @gc: the gpiochip to request the gpio function for
1653  * @offset: the offset of the GPIO to free from GPIO function
1654  */
1655 void gpiochip_generic_free(struct gpio_chip *gc, unsigned int offset)
1656 {
1657 #ifdef CONFIG_PINCTRL
1658         if (list_empty(&gc->gpiodev->pin_ranges))
1659                 return;
1660 #endif
1661
1662         pinctrl_gpio_free(gc->gpiodev->base + offset);
1663 }
1664 EXPORT_SYMBOL_GPL(gpiochip_generic_free);
1665
1666 /**
1667  * gpiochip_generic_config() - apply configuration for a pin
1668  * @gc: the gpiochip owning the GPIO
1669  * @offset: the offset of the GPIO to apply the configuration
1670  * @config: the configuration to be applied
1671  */
1672 int gpiochip_generic_config(struct gpio_chip *gc, unsigned int offset,
1673                             unsigned long config)
1674 {
1675         return pinctrl_gpio_set_config(gc->gpiodev->base + offset, config);
1676 }
1677 EXPORT_SYMBOL_GPL(gpiochip_generic_config);
1678
1679 #ifdef CONFIG_PINCTRL
1680
1681 /**
1682  * gpiochip_add_pingroup_range() - add a range for GPIO <-> pin mapping
1683  * @gc: the gpiochip to add the range for
1684  * @pctldev: the pin controller to map to
1685  * @gpio_offset: the start offset in the current gpio_chip number space
1686  * @pin_group: name of the pin group inside the pin controller
1687  *
1688  * Calling this function directly from a DeviceTree-supported
1689  * pinctrl driver is DEPRECATED. Please see Section 2.1 of
1690  * Documentation/devicetree/bindings/gpio/gpio.txt on how to
1691  * bind pinctrl and gpio drivers via the "gpio-ranges" property.
1692  */
1693 int gpiochip_add_pingroup_range(struct gpio_chip *gc,
1694                         struct pinctrl_dev *pctldev,
1695                         unsigned int gpio_offset, const char *pin_group)
1696 {
1697         struct gpio_pin_range *pin_range;
1698         struct gpio_device *gdev = gc->gpiodev;
1699         int ret;
1700
1701         pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL);
1702         if (!pin_range) {
1703                 chip_err(gc, "failed to allocate pin ranges\n");
1704                 return -ENOMEM;
1705         }
1706
1707         /* Use local offset as range ID */
1708         pin_range->range.id = gpio_offset;
1709         pin_range->range.gc = gc;
1710         pin_range->range.name = gc->label;
1711         pin_range->range.base = gdev->base + gpio_offset;
1712         pin_range->pctldev = pctldev;
1713
1714         ret = pinctrl_get_group_pins(pctldev, pin_group,
1715                                         &pin_range->range.pins,
1716                                         &pin_range->range.npins);
1717         if (ret < 0) {
1718                 kfree(pin_range);
1719                 return ret;
1720         }
1721
1722         pinctrl_add_gpio_range(pctldev, &pin_range->range);
1723
1724         chip_dbg(gc, "created GPIO range %d->%d ==> %s PINGRP %s\n",
1725                  gpio_offset, gpio_offset + pin_range->range.npins - 1,
1726                  pinctrl_dev_get_devname(pctldev), pin_group);
1727
1728         list_add_tail(&pin_range->node, &gdev->pin_ranges);
1729
1730         return 0;
1731 }
1732 EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
1733
1734 /**
1735  * gpiochip_add_pin_range() - add a range for GPIO <-> pin mapping
1736  * @gc: the gpiochip to add the range for
1737  * @pinctl_name: the dev_name() of the pin controller to map to
1738  * @gpio_offset: the start offset in the current gpio_chip number space
1739  * @pin_offset: the start offset in the pin controller number space
1740  * @npins: the number of pins from the offset of each pin space (GPIO and
1741  *      pin controller) to accumulate in this range
1742  *
1743  * Returns:
1744  * 0 on success, or a negative error-code on failure.
1745  *
1746  * Calling this function directly from a DeviceTree-supported
1747  * pinctrl driver is DEPRECATED. Please see Section 2.1 of
1748  * Documentation/devicetree/bindings/gpio/gpio.txt on how to
1749  * bind pinctrl and gpio drivers via the "gpio-ranges" property.
1750  */
1751 int gpiochip_add_pin_range(struct gpio_chip *gc, const char *pinctl_name,
1752                            unsigned int gpio_offset, unsigned int pin_offset,
1753                            unsigned int npins)
1754 {
1755         struct gpio_pin_range *pin_range;
1756         struct gpio_device *gdev = gc->gpiodev;
1757         int ret;
1758
1759         pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL);
1760         if (!pin_range) {
1761                 chip_err(gc, "failed to allocate pin ranges\n");
1762                 return -ENOMEM;
1763         }
1764
1765         /* Use local offset as range ID */
1766         pin_range->range.id = gpio_offset;
1767         pin_range->range.gc = gc;
1768         pin_range->range.name = gc->label;
1769         pin_range->range.base = gdev->base + gpio_offset;
1770         pin_range->range.pin_base = pin_offset;
1771         pin_range->range.npins = npins;
1772         pin_range->pctldev = pinctrl_find_and_add_gpio_range(pinctl_name,
1773                         &pin_range->range);
1774         if (IS_ERR(pin_range->pctldev)) {
1775                 ret = PTR_ERR(pin_range->pctldev);
1776                 chip_err(gc, "could not create pin range\n");
1777                 kfree(pin_range);
1778                 return ret;
1779         }
1780         chip_dbg(gc, "created GPIO range %d->%d ==> %s PIN %d->%d\n",
1781                  gpio_offset, gpio_offset + npins - 1,
1782                  pinctl_name,
1783                  pin_offset, pin_offset + npins - 1);
1784
1785         list_add_tail(&pin_range->node, &gdev->pin_ranges);
1786
1787         return 0;
1788 }
1789 EXPORT_SYMBOL_GPL(gpiochip_add_pin_range);
1790
1791 /**
1792  * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings
1793  * @gc: the chip to remove all the mappings for
1794  */
1795 void gpiochip_remove_pin_ranges(struct gpio_chip *gc)
1796 {
1797         struct gpio_pin_range *pin_range, *tmp;
1798         struct gpio_device *gdev = gc->gpiodev;
1799
1800         list_for_each_entry_safe(pin_range, tmp, &gdev->pin_ranges, node) {
1801                 list_del(&pin_range->node);
1802                 pinctrl_remove_gpio_range(pin_range->pctldev,
1803                                 &pin_range->range);
1804                 kfree(pin_range);
1805         }
1806 }
1807 EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges);
1808
1809 #endif /* CONFIG_PINCTRL */
1810
1811 /* These "optional" allocation calls help prevent drivers from stomping
1812  * on each other, and help provide better diagnostics in debugfs.
1813  * They're called even less than the "set direction" calls.
1814  */
1815 static int gpiod_request_commit(struct gpio_desc *desc, const char *label)
1816 {
1817         struct gpio_chip        *gc = desc->gdev->chip;
1818         int                     ret;
1819         unsigned long           flags;
1820         unsigned                offset;
1821
1822         if (label) {
1823                 label = kstrdup_const(label, GFP_KERNEL);
1824                 if (!label)
1825                         return -ENOMEM;
1826         }
1827
1828         spin_lock_irqsave(&gpio_lock, flags);
1829
1830         /* NOTE:  gpio_request() can be called in early boot,
1831          * before IRQs are enabled, for non-sleeping (SOC) GPIOs.
1832          */
1833
1834         if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
1835                 desc_set_label(desc, label ? : "?");
1836         } else {
1837                 ret = -EBUSY;
1838                 goto out_free_unlock;
1839         }
1840
1841         if (gc->request) {
1842                 /* gc->request may sleep */
1843                 spin_unlock_irqrestore(&gpio_lock, flags);
1844                 offset = gpio_chip_hwgpio(desc);
1845                 if (gpiochip_line_is_valid(gc, offset))
1846                         ret = gc->request(gc, offset);
1847                 else
1848                         ret = -EINVAL;
1849                 spin_lock_irqsave(&gpio_lock, flags);
1850
1851                 if (ret) {
1852                         desc_set_label(desc, NULL);
1853                         clear_bit(FLAG_REQUESTED, &desc->flags);
1854                         goto out_free_unlock;
1855                 }
1856         }
1857         if (gc->get_direction) {
1858                 /* gc->get_direction may sleep */
1859                 spin_unlock_irqrestore(&gpio_lock, flags);
1860                 gpiod_get_direction(desc);
1861                 spin_lock_irqsave(&gpio_lock, flags);
1862         }
1863         spin_unlock_irqrestore(&gpio_lock, flags);
1864         return 0;
1865
1866 out_free_unlock:
1867         spin_unlock_irqrestore(&gpio_lock, flags);
1868         kfree_const(label);
1869         return ret;
1870 }
1871
1872 /*
1873  * This descriptor validation needs to be inserted verbatim into each
1874  * function taking a descriptor, so we need to use a preprocessor
1875  * macro to avoid endless duplication. If the desc is NULL it is an
1876  * optional GPIO and calls should just bail out.
1877  */
1878 static int validate_desc(const struct gpio_desc *desc, const char *func)
1879 {
1880         if (!desc)
1881                 return 0;
1882         if (IS_ERR(desc)) {
1883                 pr_warn("%s: invalid GPIO (errorpointer)\n", func);
1884                 return PTR_ERR(desc);
1885         }
1886         if (!desc->gdev) {
1887                 pr_warn("%s: invalid GPIO (no device)\n", func);
1888                 return -EINVAL;
1889         }
1890         if (!desc->gdev->chip) {
1891                 dev_warn(&desc->gdev->dev,
1892                          "%s: backing chip is gone\n", func);
1893                 return 0;
1894         }
1895         return 1;
1896 }
1897
1898 #define VALIDATE_DESC(desc) do { \
1899         int __valid = validate_desc(desc, __func__); \
1900         if (__valid <= 0) \
1901                 return __valid; \
1902         } while (0)
1903
1904 #define VALIDATE_DESC_VOID(desc) do { \
1905         int __valid = validate_desc(desc, __func__); \
1906         if (__valid <= 0) \
1907                 return; \
1908         } while (0)
1909
1910 int gpiod_request(struct gpio_desc *desc, const char *label)
1911 {
1912         int ret = -EPROBE_DEFER;
1913         struct gpio_device *gdev;
1914
1915         VALIDATE_DESC(desc);
1916         gdev = desc->gdev;
1917
1918         if (try_module_get(gdev->owner)) {
1919                 ret = gpiod_request_commit(desc, label);
1920                 if (ret)
1921                         module_put(gdev->owner);
1922                 else
1923                         get_device(&gdev->dev);
1924         }
1925
1926         if (ret)
1927                 gpiod_dbg(desc, "%s: status %d\n", __func__, ret);
1928
1929         return ret;
1930 }
1931
1932 static bool gpiod_free_commit(struct gpio_desc *desc)
1933 {
1934         bool                    ret = false;
1935         unsigned long           flags;
1936         struct gpio_chip        *gc;
1937
1938         might_sleep();
1939
1940         gpiod_unexport(desc);
1941
1942         spin_lock_irqsave(&gpio_lock, flags);
1943
1944         gc = desc->gdev->chip;
1945         if (gc && test_bit(FLAG_REQUESTED, &desc->flags)) {
1946                 if (gc->free) {
1947                         spin_unlock_irqrestore(&gpio_lock, flags);
1948                         might_sleep_if(gc->can_sleep);
1949                         gc->free(gc, gpio_chip_hwgpio(desc));
1950                         spin_lock_irqsave(&gpio_lock, flags);
1951                 }
1952                 kfree_const(desc->label);
1953                 desc_set_label(desc, NULL);
1954                 clear_bit(FLAG_ACTIVE_LOW, &desc->flags);
1955                 clear_bit(FLAG_REQUESTED, &desc->flags);
1956                 clear_bit(FLAG_OPEN_DRAIN, &desc->flags);
1957                 clear_bit(FLAG_OPEN_SOURCE, &desc->flags);
1958                 clear_bit(FLAG_PULL_UP, &desc->flags);
1959                 clear_bit(FLAG_PULL_DOWN, &desc->flags);
1960                 clear_bit(FLAG_BIAS_DISABLE, &desc->flags);
1961                 clear_bit(FLAG_EDGE_RISING, &desc->flags);
1962                 clear_bit(FLAG_EDGE_FALLING, &desc->flags);
1963                 clear_bit(FLAG_IS_HOGGED, &desc->flags);
1964 #ifdef CONFIG_OF_DYNAMIC
1965                 desc->hog = NULL;
1966 #endif
1967 #ifdef CONFIG_GPIO_CDEV
1968                 WRITE_ONCE(desc->debounce_period_us, 0);
1969 #endif
1970                 ret = true;
1971         }
1972
1973         spin_unlock_irqrestore(&gpio_lock, flags);
1974         blocking_notifier_call_chain(&desc->gdev->notifier,
1975                                      GPIOLINE_CHANGED_RELEASED, desc);
1976
1977         return ret;
1978 }
1979
1980 void gpiod_free(struct gpio_desc *desc)
1981 {
1982         if (desc && desc->gdev && gpiod_free_commit(desc)) {
1983                 module_put(desc->gdev->owner);
1984                 put_device(&desc->gdev->dev);
1985         } else {
1986                 WARN_ON(extra_checks);
1987         }
1988 }
1989
1990 /**
1991  * gpiochip_is_requested - return string iff signal was requested
1992  * @gc: controller managing the signal
1993  * @offset: of signal within controller's 0..(ngpio - 1) range
1994  *
1995  * Returns NULL if the GPIO is not currently requested, else a string.
1996  * The string returned is the label passed to gpio_request(); if none has been
1997  * passed it is a meaningless, non-NULL constant.
1998  *
1999  * This function is for use by GPIO controller drivers.  The label can
2000  * help with diagnostics, and knowing that the signal is used as a GPIO
2001  * can help avoid accidentally multiplexing it to another controller.
2002  */
2003 const char *gpiochip_is_requested(struct gpio_chip *gc, unsigned int offset)
2004 {
2005         struct gpio_desc *desc;
2006
2007         desc = gpiochip_get_desc(gc, offset);
2008         if (IS_ERR(desc))
2009                 return NULL;
2010
2011         if (test_bit(FLAG_REQUESTED, &desc->flags) == 0)
2012                 return NULL;
2013         return desc->label;
2014 }
2015 EXPORT_SYMBOL_GPL(gpiochip_is_requested);
2016
2017 /**
2018  * gpiochip_request_own_desc - Allow GPIO chip to request its own descriptor
2019  * @gc: GPIO chip
2020  * @hwnum: hardware number of the GPIO for which to request the descriptor
2021  * @label: label for the GPIO
2022  * @lflags: lookup flags for this GPIO or 0 if default, this can be used to
2023  * specify things like line inversion semantics with the machine flags
2024  * such as GPIO_OUT_LOW
2025  * @dflags: descriptor request flags for this GPIO or 0 if default, this
2026  * can be used to specify consumer semantics such as open drain
2027  *
2028  * Function allows GPIO chip drivers to request and use their own GPIO
2029  * descriptors via gpiolib API. Difference to gpiod_request() is that this
2030  * function will not increase reference count of the GPIO chip module. This
2031  * allows the GPIO chip module to be unloaded as needed (we assume that the
2032  * GPIO chip driver handles freeing the GPIOs it has requested).
2033  *
2034  * Returns:
2035  * A pointer to the GPIO descriptor, or an ERR_PTR()-encoded negative error
2036  * code on failure.
2037  */
2038 struct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *gc,
2039                                             unsigned int hwnum,
2040                                             const char *label,
2041                                             enum gpio_lookup_flags lflags,
2042                                             enum gpiod_flags dflags)
2043 {
2044         struct gpio_desc *desc = gpiochip_get_desc(gc, hwnum);
2045         int ret;
2046
2047         if (IS_ERR(desc)) {
2048                 chip_err(gc, "failed to get GPIO descriptor\n");
2049                 return desc;
2050         }
2051
2052         ret = gpiod_request_commit(desc, label);
2053         if (ret < 0)
2054                 return ERR_PTR(ret);
2055
2056         ret = gpiod_configure_flags(desc, label, lflags, dflags);
2057         if (ret) {
2058                 chip_err(gc, "setup of own GPIO %s failed\n", label);
2059                 gpiod_free_commit(desc);
2060                 return ERR_PTR(ret);
2061         }
2062
2063         return desc;
2064 }
2065 EXPORT_SYMBOL_GPL(gpiochip_request_own_desc);
2066
2067 /**
2068  * gpiochip_free_own_desc - Free GPIO requested by the chip driver
2069  * @desc: GPIO descriptor to free
2070  *
2071  * Function frees the given GPIO requested previously with
2072  * gpiochip_request_own_desc().
2073  */
2074 void gpiochip_free_own_desc(struct gpio_desc *desc)
2075 {
2076         if (desc)
2077                 gpiod_free_commit(desc);
2078 }
2079 EXPORT_SYMBOL_GPL(gpiochip_free_own_desc);
2080
2081 /*
2082  * Drivers MUST set GPIO direction before making get/set calls.  In
2083  * some cases this is done in early boot, before IRQs are enabled.
2084  *
2085  * As a rule these aren't called more than once (except for drivers
2086  * using the open-drain emulation idiom) so these are natural places
2087  * to accumulate extra debugging checks.  Note that we can't (yet)
2088  * rely on gpio_request() having been called beforehand.
2089  */
2090
2091 static int gpio_do_set_config(struct gpio_chip *gc, unsigned int offset,
2092                               unsigned long config)
2093 {
2094         if (!gc->set_config)
2095                 return -ENOTSUPP;
2096
2097         return gc->set_config(gc, offset, config);
2098 }
2099
2100 static int gpio_set_config_with_argument(struct gpio_desc *desc,
2101                                          enum pin_config_param mode,
2102                                          u32 argument)
2103 {
2104         struct gpio_chip *gc = desc->gdev->chip;
2105         unsigned long config;
2106
2107         config = pinconf_to_config_packed(mode, argument);
2108         return gpio_do_set_config(gc, gpio_chip_hwgpio(desc), config);
2109 }
2110
2111 static int gpio_set_config_with_argument_optional(struct gpio_desc *desc,
2112                                                   enum pin_config_param mode,
2113                                                   u32 argument)
2114 {
2115         struct device *dev = &desc->gdev->dev;
2116         int gpio = gpio_chip_hwgpio(desc);
2117         int ret;
2118
2119         ret = gpio_set_config_with_argument(desc, mode, argument);
2120         if (ret != -ENOTSUPP)
2121                 return ret;
2122
2123         switch (mode) {
2124         case PIN_CONFIG_PERSIST_STATE:
2125                 dev_dbg(dev, "Persistence not supported for GPIO %d\n", gpio);
2126                 break;
2127         default:
2128                 break;
2129         }
2130
2131         return 0;
2132 }
2133
2134 static int gpio_set_config(struct gpio_desc *desc, enum pin_config_param mode)
2135 {
2136         return gpio_set_config_with_argument(desc, mode, 0);
2137 }
2138
2139 static int gpio_set_bias(struct gpio_desc *desc)
2140 {
2141         enum pin_config_param bias;
2142         unsigned int arg;
2143
2144         if (test_bit(FLAG_BIAS_DISABLE, &desc->flags))
2145                 bias = PIN_CONFIG_BIAS_DISABLE;
2146         else if (test_bit(FLAG_PULL_UP, &desc->flags))
2147                 bias = PIN_CONFIG_BIAS_PULL_UP;
2148         else if (test_bit(FLAG_PULL_DOWN, &desc->flags))
2149                 bias = PIN_CONFIG_BIAS_PULL_DOWN;
2150         else
2151                 return 0;
2152
2153         switch (bias) {
2154         case PIN_CONFIG_BIAS_PULL_DOWN:
2155         case PIN_CONFIG_BIAS_PULL_UP:
2156                 arg = 1;
2157                 break;
2158
2159         default:
2160                 arg = 0;
2161                 break;
2162         }
2163
2164         return gpio_set_config_with_argument_optional(desc, bias, arg);
2165 }
2166
2167 int gpio_set_debounce_timeout(struct gpio_desc *desc, unsigned int debounce)
2168 {
2169         return gpio_set_config_with_argument_optional(desc,
2170                                                       PIN_CONFIG_INPUT_DEBOUNCE,
2171                                                       debounce);
2172 }
2173
2174 /**
2175  * gpiod_direction_input - set the GPIO direction to input
2176  * @desc:       GPIO to set to input
2177  *
2178  * Set the direction of the passed GPIO to input, such as gpiod_get_value() can
2179  * be called safely on it.
2180  *
2181  * Return 0 in case of success, else an error code.
2182  */
2183 int gpiod_direction_input(struct gpio_desc *desc)
2184 {
2185         struct gpio_chip        *gc;
2186         int                     ret = 0;
2187
2188         VALIDATE_DESC(desc);
2189         gc = desc->gdev->chip;
2190
2191         /*
2192          * It is legal to have no .get() and .direction_input() specified if
2193          * the chip is output-only, but you can't specify .direction_input()
2194          * and not support the .get() operation, that doesn't make sense.
2195          */
2196         if (!gc->get && gc->direction_input) {
2197                 gpiod_warn(desc,
2198                            "%s: missing get() but have direction_input()\n",
2199                            __func__);
2200                 return -EIO;
2201         }
2202
2203         /*
2204          * If we have a .direction_input() callback, things are simple,
2205          * just call it. Else we are some input-only chip so try to check the
2206          * direction (if .get_direction() is supported) else we silently
2207          * assume we are in input mode after this.
2208          */
2209         if (gc->direction_input) {
2210                 ret = gc->direction_input(gc, gpio_chip_hwgpio(desc));
2211         } else if (gc->get_direction &&
2212                   (gc->get_direction(gc, gpio_chip_hwgpio(desc)) != 1)) {
2213                 gpiod_warn(desc,
2214                            "%s: missing direction_input() operation and line is output\n",
2215                            __func__);
2216                 return -EIO;
2217         }
2218         if (ret == 0) {
2219                 clear_bit(FLAG_IS_OUT, &desc->flags);
2220                 ret = gpio_set_bias(desc);
2221         }
2222
2223         trace_gpio_direction(desc_to_gpio(desc), 1, ret);
2224
2225         return ret;
2226 }
2227 EXPORT_SYMBOL_GPL(gpiod_direction_input);
2228
2229 static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int value)
2230 {
2231         struct gpio_chip *gc = desc->gdev->chip;
2232         int val = !!value;
2233         int ret = 0;
2234
2235         /*
2236          * It's OK not to specify .direction_output() if the gpiochip is
2237          * output-only, but if there is then not even a .set() operation it
2238          * is pretty tricky to drive the output line.
2239          */
2240         if (!gc->set && !gc->direction_output) {
2241                 gpiod_warn(desc,
2242                            "%s: missing set() and direction_output() operations\n",
2243                            __func__);
2244                 return -EIO;
2245         }
2246
2247         if (gc->direction_output) {
2248                 ret = gc->direction_output(gc, gpio_chip_hwgpio(desc), val);
2249         } else {
2250                 /* Check that we are in output mode if we can */
2251                 if (gc->get_direction &&
2252                     gc->get_direction(gc, gpio_chip_hwgpio(desc))) {
2253                         gpiod_warn(desc,
2254                                 "%s: missing direction_output() operation\n",
2255                                 __func__);
2256                         return -EIO;
2257                 }
2258                 /*
2259                  * If we can't actively set the direction, we are some
2260                  * output-only chip, so just drive the output as desired.
2261                  */
2262                 gc->set(gc, gpio_chip_hwgpio(desc), val);
2263         }
2264
2265         if (!ret)
2266                 set_bit(FLAG_IS_OUT, &desc->flags);
2267         trace_gpio_value(desc_to_gpio(desc), 0, val);
2268         trace_gpio_direction(desc_to_gpio(desc), 0, ret);
2269         return ret;
2270 }
2271
2272 /**
2273  * gpiod_direction_output_raw - set the GPIO direction to output
2274  * @desc:       GPIO to set to output
2275  * @value:      initial output value of the GPIO
2276  *
2277  * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
2278  * be called safely on it. The initial value of the output must be specified
2279  * as raw value on the physical line without regard for the ACTIVE_LOW status.
2280  *
2281  * Return 0 in case of success, else an error code.
2282  */
2283 int gpiod_direction_output_raw(struct gpio_desc *desc, int value)
2284 {
2285         VALIDATE_DESC(desc);
2286         return gpiod_direction_output_raw_commit(desc, value);
2287 }
2288 EXPORT_SYMBOL_GPL(gpiod_direction_output_raw);
2289
2290 /**
2291  * gpiod_direction_output - set the GPIO direction to output
2292  * @desc:       GPIO to set to output
2293  * @value:      initial output value of the GPIO
2294  *
2295  * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
2296  * be called safely on it. The initial value of the output must be specified
2297  * as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
2298  * account.
2299  *
2300  * Return 0 in case of success, else an error code.
2301  */
2302 int gpiod_direction_output(struct gpio_desc *desc, int value)
2303 {
2304         int ret;
2305
2306         VALIDATE_DESC(desc);
2307         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2308                 value = !value;
2309         else
2310                 value = !!value;
2311
2312         /* GPIOs used for enabled IRQs shall not be set as output */
2313         if (test_bit(FLAG_USED_AS_IRQ, &desc->flags) &&
2314             test_bit(FLAG_IRQ_IS_ENABLED, &desc->flags)) {
2315                 gpiod_err(desc,
2316                           "%s: tried to set a GPIO tied to an IRQ as output\n",
2317                           __func__);
2318                 return -EIO;
2319         }
2320
2321         if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) {
2322                 /* First see if we can enable open drain in hardware */
2323                 ret = gpio_set_config(desc, PIN_CONFIG_DRIVE_OPEN_DRAIN);
2324                 if (!ret)
2325                         goto set_output_value;
2326                 /* Emulate open drain by not actively driving the line high */
2327                 if (value) {
2328                         ret = gpiod_direction_input(desc);
2329                         goto set_output_flag;
2330                 }
2331         }
2332         else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) {
2333                 ret = gpio_set_config(desc, PIN_CONFIG_DRIVE_OPEN_SOURCE);
2334                 if (!ret)
2335                         goto set_output_value;
2336                 /* Emulate open source by not actively driving the line low */
2337                 if (!value) {
2338                         ret = gpiod_direction_input(desc);
2339                         goto set_output_flag;
2340                 }
2341         } else {
2342                 gpio_set_config(desc, PIN_CONFIG_DRIVE_PUSH_PULL);
2343         }
2344
2345 set_output_value:
2346         ret = gpio_set_bias(desc);
2347         if (ret)
2348                 return ret;
2349         return gpiod_direction_output_raw_commit(desc, value);
2350
2351 set_output_flag:
2352         /*
2353          * When emulating open-source or open-drain functionalities by not
2354          * actively driving the line (setting mode to input) we still need to
2355          * set the IS_OUT flag or otherwise we won't be able to set the line
2356          * value anymore.
2357          */
2358         if (ret == 0)
2359                 set_bit(FLAG_IS_OUT, &desc->flags);
2360         return ret;
2361 }
2362 EXPORT_SYMBOL_GPL(gpiod_direction_output);
2363
2364 /**
2365  * gpiod_set_config - sets @config for a GPIO
2366  * @desc: descriptor of the GPIO for which to set the configuration
2367  * @config: Same packed config format as generic pinconf
2368  *
2369  * Returns:
2370  * 0 on success, %-ENOTSUPP if the controller doesn't support setting the
2371  * configuration.
2372  */
2373 int gpiod_set_config(struct gpio_desc *desc, unsigned long config)
2374 {
2375         struct gpio_chip *gc;
2376
2377         VALIDATE_DESC(desc);
2378         gc = desc->gdev->chip;
2379
2380         return gpio_do_set_config(gc, gpio_chip_hwgpio(desc), config);
2381 }
2382 EXPORT_SYMBOL_GPL(gpiod_set_config);
2383
2384 /**
2385  * gpiod_set_debounce - sets @debounce time for a GPIO
2386  * @desc: descriptor of the GPIO for which to set debounce time
2387  * @debounce: debounce time in microseconds
2388  *
2389  * Returns:
2390  * 0 on success, %-ENOTSUPP if the controller doesn't support setting the
2391  * debounce time.
2392  */
2393 int gpiod_set_debounce(struct gpio_desc *desc, unsigned int debounce)
2394 {
2395         unsigned long config;
2396
2397         config = pinconf_to_config_packed(PIN_CONFIG_INPUT_DEBOUNCE, debounce);
2398         return gpiod_set_config(desc, config);
2399 }
2400 EXPORT_SYMBOL_GPL(gpiod_set_debounce);
2401
2402 /**
2403  * gpiod_set_transitory - Lose or retain GPIO state on suspend or reset
2404  * @desc: descriptor of the GPIO for which to configure persistence
2405  * @transitory: True to lose state on suspend or reset, false for persistence
2406  *
2407  * Returns:
2408  * 0 on success, otherwise a negative error code.
2409  */
2410 int gpiod_set_transitory(struct gpio_desc *desc, bool transitory)
2411 {
2412         VALIDATE_DESC(desc);
2413         /*
2414          * Handle FLAG_TRANSITORY first, enabling queries to gpiolib for
2415          * persistence state.
2416          */
2417         assign_bit(FLAG_TRANSITORY, &desc->flags, transitory);
2418
2419         /* If the driver supports it, set the persistence state now */
2420         return gpio_set_config_with_argument_optional(desc,
2421                                                       PIN_CONFIG_PERSIST_STATE,
2422                                                       !transitory);
2423 }
2424 EXPORT_SYMBOL_GPL(gpiod_set_transitory);
2425
2426 /**
2427  * gpiod_is_active_low - test whether a GPIO is active-low or not
2428  * @desc: the gpio descriptor to test
2429  *
2430  * Returns 1 if the GPIO is active-low, 0 otherwise.
2431  */
2432 int gpiod_is_active_low(const struct gpio_desc *desc)
2433 {
2434         VALIDATE_DESC(desc);
2435         return test_bit(FLAG_ACTIVE_LOW, &desc->flags);
2436 }
2437 EXPORT_SYMBOL_GPL(gpiod_is_active_low);
2438
2439 /**
2440  * gpiod_toggle_active_low - toggle whether a GPIO is active-low or not
2441  * @desc: the gpio descriptor to change
2442  */
2443 void gpiod_toggle_active_low(struct gpio_desc *desc)
2444 {
2445         VALIDATE_DESC_VOID(desc);
2446         change_bit(FLAG_ACTIVE_LOW, &desc->flags);
2447 }
2448 EXPORT_SYMBOL_GPL(gpiod_toggle_active_low);
2449
2450 /* I/O calls are only valid after configuration completed; the relevant
2451  * "is this a valid GPIO" error checks should already have been done.
2452  *
2453  * "Get" operations are often inlinable as reading a pin value register,
2454  * and masking the relevant bit in that register.
2455  *
2456  * When "set" operations are inlinable, they involve writing that mask to
2457  * one register to set a low value, or a different register to set it high.
2458  * Otherwise locking is needed, so there may be little value to inlining.
2459  *
2460  *------------------------------------------------------------------------
2461  *
2462  * IMPORTANT!!!  The hot paths -- get/set value -- assume that callers
2463  * have requested the GPIO.  That can include implicit requesting by
2464  * a direction setting call.  Marking a gpio as requested locks its chip
2465  * in memory, guaranteeing that these table lookups need no more locking
2466  * and that gpiochip_remove() will fail.
2467  *
2468  * REVISIT when debugging, consider adding some instrumentation to ensure
2469  * that the GPIO was actually requested.
2470  */
2471
2472 static int gpiod_get_raw_value_commit(const struct gpio_desc *desc)
2473 {
2474         struct gpio_chip        *gc;
2475         int offset;
2476         int value;
2477
2478         gc = desc->gdev->chip;
2479         offset = gpio_chip_hwgpio(desc);
2480         value = gc->get ? gc->get(gc, offset) : -EIO;
2481         value = value < 0 ? value : !!value;
2482         trace_gpio_value(desc_to_gpio(desc), 1, value);
2483         return value;
2484 }
2485
2486 static int gpio_chip_get_multiple(struct gpio_chip *gc,
2487                                   unsigned long *mask, unsigned long *bits)
2488 {
2489         if (gc->get_multiple) {
2490                 return gc->get_multiple(gc, mask, bits);
2491         } else if (gc->get) {
2492                 int i, value;
2493
2494                 for_each_set_bit(i, mask, gc->ngpio) {
2495                         value = gc->get(gc, i);
2496                         if (value < 0)
2497                                 return value;
2498                         __assign_bit(i, bits, value);
2499                 }
2500                 return 0;
2501         }
2502         return -EIO;
2503 }
2504
2505 int gpiod_get_array_value_complex(bool raw, bool can_sleep,
2506                                   unsigned int array_size,
2507                                   struct gpio_desc **desc_array,
2508                                   struct gpio_array *array_info,
2509                                   unsigned long *value_bitmap)
2510 {
2511         int ret, i = 0;
2512
2513         /*
2514          * Validate array_info against desc_array and its size.
2515          * It should immediately follow desc_array if both
2516          * have been obtained from the same gpiod_get_array() call.
2517          */
2518         if (array_info && array_info->desc == desc_array &&
2519             array_size <= array_info->size &&
2520             (void *)array_info == desc_array + array_info->size) {
2521                 if (!can_sleep)
2522                         WARN_ON(array_info->chip->can_sleep);
2523
2524                 ret = gpio_chip_get_multiple(array_info->chip,
2525                                              array_info->get_mask,
2526                                              value_bitmap);
2527                 if (ret)
2528                         return ret;
2529
2530                 if (!raw && !bitmap_empty(array_info->invert_mask, array_size))
2531                         bitmap_xor(value_bitmap, value_bitmap,
2532                                    array_info->invert_mask, array_size);
2533
2534                 i = find_first_zero_bit(array_info->get_mask, array_size);
2535                 if (i == array_size)
2536                         return 0;
2537         } else {
2538                 array_info = NULL;
2539         }
2540
2541         while (i < array_size) {
2542                 struct gpio_chip *gc = desc_array[i]->gdev->chip;
2543                 DECLARE_BITMAP(fastpath_mask, FASTPATH_NGPIO);
2544                 DECLARE_BITMAP(fastpath_bits, FASTPATH_NGPIO);
2545                 unsigned long *mask, *bits;
2546                 int first, j;
2547
2548                 if (likely(gc->ngpio <= FASTPATH_NGPIO)) {
2549                         mask = fastpath_mask;
2550                         bits = fastpath_bits;
2551                 } else {
2552                         gfp_t flags = can_sleep ? GFP_KERNEL : GFP_ATOMIC;
2553
2554                         mask = bitmap_alloc(gc->ngpio, flags);
2555                         if (!mask)
2556                                 return -ENOMEM;
2557
2558                         bits = bitmap_alloc(gc->ngpio, flags);
2559                         if (!bits) {
2560                                 bitmap_free(mask);
2561                                 return -ENOMEM;
2562                         }
2563                 }
2564
2565                 bitmap_zero(mask, gc->ngpio);
2566
2567                 if (!can_sleep)
2568                         WARN_ON(gc->can_sleep);
2569
2570                 /* collect all inputs belonging to the same chip */
2571                 first = i;
2572                 do {
2573                         const struct gpio_desc *desc = desc_array[i];
2574                         int hwgpio = gpio_chip_hwgpio(desc);
2575
2576                         __set_bit(hwgpio, mask);
2577                         i++;
2578
2579                         if (array_info)
2580                                 i = find_next_zero_bit(array_info->get_mask,
2581                                                        array_size, i);
2582                 } while ((i < array_size) &&
2583                          (desc_array[i]->gdev->chip == gc));
2584
2585                 ret = gpio_chip_get_multiple(gc, mask, bits);
2586                 if (ret) {
2587                         if (mask != fastpath_mask)
2588                                 bitmap_free(mask);
2589                         if (bits != fastpath_bits)
2590                                 bitmap_free(bits);
2591                         return ret;
2592                 }
2593
2594                 for (j = first; j < i; ) {
2595                         const struct gpio_desc *desc = desc_array[j];
2596                         int hwgpio = gpio_chip_hwgpio(desc);
2597                         int value = test_bit(hwgpio, bits);
2598
2599                         if (!raw && test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2600                                 value = !value;
2601                         __assign_bit(j, value_bitmap, value);
2602                         trace_gpio_value(desc_to_gpio(desc), 1, value);
2603                         j++;
2604
2605                         if (array_info)
2606                                 j = find_next_zero_bit(array_info->get_mask, i,
2607                                                        j);
2608                 }
2609
2610                 if (mask != fastpath_mask)
2611                         bitmap_free(mask);
2612                 if (bits != fastpath_bits)
2613                         bitmap_free(bits);
2614         }
2615         return 0;
2616 }
2617
2618 /**
2619  * gpiod_get_raw_value() - return a gpio's raw value
2620  * @desc: gpio whose value will be returned
2621  *
2622  * Return the GPIO's raw value, i.e. the value of the physical line disregarding
2623  * its ACTIVE_LOW status, or negative errno on failure.
2624  *
2625  * This function can be called from contexts where we cannot sleep, and will
2626  * complain if the GPIO chip functions potentially sleep.
2627  */
2628 int gpiod_get_raw_value(const struct gpio_desc *desc)
2629 {
2630         VALIDATE_DESC(desc);
2631         /* Should be using gpiod_get_raw_value_cansleep() */
2632         WARN_ON(desc->gdev->chip->can_sleep);
2633         return gpiod_get_raw_value_commit(desc);
2634 }
2635 EXPORT_SYMBOL_GPL(gpiod_get_raw_value);
2636
2637 /**
2638  * gpiod_get_value() - return a gpio's value
2639  * @desc: gpio whose value will be returned
2640  *
2641  * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into
2642  * account, or negative errno on failure.
2643  *
2644  * This function can be called from contexts where we cannot sleep, and will
2645  * complain if the GPIO chip functions potentially sleep.
2646  */
2647 int gpiod_get_value(const struct gpio_desc *desc)
2648 {
2649         int value;
2650
2651         VALIDATE_DESC(desc);
2652         /* Should be using gpiod_get_value_cansleep() */
2653         WARN_ON(desc->gdev->chip->can_sleep);
2654
2655         value = gpiod_get_raw_value_commit(desc);
2656         if (value < 0)
2657                 return value;
2658
2659         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2660                 value = !value;
2661
2662         return value;
2663 }
2664 EXPORT_SYMBOL_GPL(gpiod_get_value);
2665
2666 /**
2667  * gpiod_get_raw_array_value() - read raw values from an array of GPIOs
2668  * @array_size: number of elements in the descriptor array / value bitmap
2669  * @desc_array: array of GPIO descriptors whose values will be read
2670  * @array_info: information on applicability of fast bitmap processing path
2671  * @value_bitmap: bitmap to store the read values
2672  *
2673  * Read the raw values of the GPIOs, i.e. the values of the physical lines
2674  * without regard for their ACTIVE_LOW status.  Return 0 in case of success,
2675  * else an error code.
2676  *
2677  * This function can be called from contexts where we cannot sleep,
2678  * and it will complain if the GPIO chip functions potentially sleep.
2679  */
2680 int gpiod_get_raw_array_value(unsigned int array_size,
2681                               struct gpio_desc **desc_array,
2682                               struct gpio_array *array_info,
2683                               unsigned long *value_bitmap)
2684 {
2685         if (!desc_array)
2686                 return -EINVAL;
2687         return gpiod_get_array_value_complex(true, false, array_size,
2688                                              desc_array, array_info,
2689                                              value_bitmap);
2690 }
2691 EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value);
2692
2693 /**
2694  * gpiod_get_array_value() - read values from an array of GPIOs
2695  * @array_size: number of elements in the descriptor array / value bitmap
2696  * @desc_array: array of GPIO descriptors whose values will be read
2697  * @array_info: information on applicability of fast bitmap processing path
2698  * @value_bitmap: bitmap to store the read values
2699  *
2700  * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
2701  * into account.  Return 0 in case of success, else an error code.
2702  *
2703  * This function can be called from contexts where we cannot sleep,
2704  * and it will complain if the GPIO chip functions potentially sleep.
2705  */
2706 int gpiod_get_array_value(unsigned int array_size,
2707                           struct gpio_desc **desc_array,
2708                           struct gpio_array *array_info,
2709                           unsigned long *value_bitmap)
2710 {
2711         if (!desc_array)
2712                 return -EINVAL;
2713         return gpiod_get_array_value_complex(false, false, array_size,
2714                                              desc_array, array_info,
2715                                              value_bitmap);
2716 }
2717 EXPORT_SYMBOL_GPL(gpiod_get_array_value);
2718
2719 /*
2720  *  gpio_set_open_drain_value_commit() - Set the open drain gpio's value.
2721  * @desc: gpio descriptor whose state need to be set.
2722  * @value: Non-zero for setting it HIGH otherwise it will set to LOW.
2723  */
2724 static void gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool value)
2725 {
2726         int ret = 0;
2727         struct gpio_chip *gc = desc->gdev->chip;
2728         int offset = gpio_chip_hwgpio(desc);
2729
2730         if (value) {
2731                 ret = gc->direction_input(gc, offset);
2732         } else {
2733                 ret = gc->direction_output(gc, offset, 0);
2734                 if (!ret)
2735                         set_bit(FLAG_IS_OUT, &desc->flags);
2736         }
2737         trace_gpio_direction(desc_to_gpio(desc), value, ret);
2738         if (ret < 0)
2739                 gpiod_err(desc,
2740                           "%s: Error in set_value for open drain err %d\n",
2741                           __func__, ret);
2742 }
2743
2744 /*
2745  *  _gpio_set_open_source_value() - Set the open source gpio's value.
2746  * @desc: gpio descriptor whose state need to be set.
2747  * @value: Non-zero for setting it HIGH otherwise it will set to LOW.
2748  */
2749 static void gpio_set_open_source_value_commit(struct gpio_desc *desc, bool value)
2750 {
2751         int ret = 0;
2752         struct gpio_chip *gc = desc->gdev->chip;
2753         int offset = gpio_chip_hwgpio(desc);
2754
2755         if (value) {
2756                 ret = gc->direction_output(gc, offset, 1);
2757                 if (!ret)
2758                         set_bit(FLAG_IS_OUT, &desc->flags);
2759         } else {
2760                 ret = gc->direction_input(gc, offset);
2761         }
2762         trace_gpio_direction(desc_to_gpio(desc), !value, ret);
2763         if (ret < 0)
2764                 gpiod_err(desc,
2765                           "%s: Error in set_value for open source err %d\n",
2766                           __func__, ret);
2767 }
2768
2769 static void gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value)
2770 {
2771         struct gpio_chip        *gc;
2772
2773         gc = desc->gdev->chip;
2774         trace_gpio_value(desc_to_gpio(desc), 0, value);
2775         gc->set(gc, gpio_chip_hwgpio(desc), value);
2776 }
2777
2778 /*
2779  * set multiple outputs on the same chip;
2780  * use the chip's set_multiple function if available;
2781  * otherwise set the outputs sequentially;
2782  * @chip: the GPIO chip we operate on
2783  * @mask: bit mask array; one bit per output; BITS_PER_LONG bits per word
2784  *        defines which outputs are to be changed
2785  * @bits: bit value array; one bit per output; BITS_PER_LONG bits per word
2786  *        defines the values the outputs specified by mask are to be set to
2787  */
2788 static void gpio_chip_set_multiple(struct gpio_chip *gc,
2789                                    unsigned long *mask, unsigned long *bits)
2790 {
2791         if (gc->set_multiple) {
2792                 gc->set_multiple(gc, mask, bits);
2793         } else {
2794                 unsigned int i;
2795
2796                 /* set outputs if the corresponding mask bit is set */
2797                 for_each_set_bit(i, mask, gc->ngpio)
2798                         gc->set(gc, i, test_bit(i, bits));
2799         }
2800 }
2801
2802 int gpiod_set_array_value_complex(bool raw, bool can_sleep,
2803                                   unsigned int array_size,
2804                                   struct gpio_desc **desc_array,
2805                                   struct gpio_array *array_info,
2806                                   unsigned long *value_bitmap)
2807 {
2808         int i = 0;
2809
2810         /*
2811          * Validate array_info against desc_array and its size.
2812          * It should immediately follow desc_array if both
2813          * have been obtained from the same gpiod_get_array() call.
2814          */
2815         if (array_info && array_info->desc == desc_array &&
2816             array_size <= array_info->size &&
2817             (void *)array_info == desc_array + array_info->size) {
2818                 if (!can_sleep)
2819                         WARN_ON(array_info->chip->can_sleep);
2820
2821                 if (!raw && !bitmap_empty(array_info->invert_mask, array_size))
2822                         bitmap_xor(value_bitmap, value_bitmap,
2823                                    array_info->invert_mask, array_size);
2824
2825                 gpio_chip_set_multiple(array_info->chip, array_info->set_mask,
2826                                        value_bitmap);
2827
2828                 i = find_first_zero_bit(array_info->set_mask, array_size);
2829                 if (i == array_size)
2830                         return 0;
2831         } else {
2832                 array_info = NULL;
2833         }
2834
2835         while (i < array_size) {
2836                 struct gpio_chip *gc = desc_array[i]->gdev->chip;
2837                 DECLARE_BITMAP(fastpath_mask, FASTPATH_NGPIO);
2838                 DECLARE_BITMAP(fastpath_bits, FASTPATH_NGPIO);
2839                 unsigned long *mask, *bits;
2840                 int count = 0;
2841
2842                 if (likely(gc->ngpio <= FASTPATH_NGPIO)) {
2843                         mask = fastpath_mask;
2844                         bits = fastpath_bits;
2845                 } else {
2846                         gfp_t flags = can_sleep ? GFP_KERNEL : GFP_ATOMIC;
2847
2848                         mask = bitmap_alloc(gc->ngpio, flags);
2849                         if (!mask)
2850                                 return -ENOMEM;
2851
2852                         bits = bitmap_alloc(gc->ngpio, flags);
2853                         if (!bits) {
2854                                 bitmap_free(mask);
2855                                 return -ENOMEM;
2856                         }
2857                 }
2858
2859                 bitmap_zero(mask, gc->ngpio);
2860
2861                 if (!can_sleep)
2862                         WARN_ON(gc->can_sleep);
2863
2864                 do {
2865                         struct gpio_desc *desc = desc_array[i];
2866                         int hwgpio = gpio_chip_hwgpio(desc);
2867                         int value = test_bit(i, value_bitmap);
2868
2869                         /*
2870                          * Pins applicable for fast input but not for
2871                          * fast output processing may have been already
2872                          * inverted inside the fast path, skip them.
2873                          */
2874                         if (!raw && !(array_info &&
2875                             test_bit(i, array_info->invert_mask)) &&
2876                             test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2877                                 value = !value;
2878                         trace_gpio_value(desc_to_gpio(desc), 0, value);
2879                         /*
2880                          * collect all normal outputs belonging to the same chip
2881                          * open drain and open source outputs are set individually
2882                          */
2883                         if (test_bit(FLAG_OPEN_DRAIN, &desc->flags) && !raw) {
2884                                 gpio_set_open_drain_value_commit(desc, value);
2885                         } else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags) && !raw) {
2886                                 gpio_set_open_source_value_commit(desc, value);
2887                         } else {
2888                                 __set_bit(hwgpio, mask);
2889                                 __assign_bit(hwgpio, bits, value);
2890                                 count++;
2891                         }
2892                         i++;
2893
2894                         if (array_info)
2895                                 i = find_next_zero_bit(array_info->set_mask,
2896                                                        array_size, i);
2897                 } while ((i < array_size) &&
2898                          (desc_array[i]->gdev->chip == gc));
2899                 /* push collected bits to outputs */
2900                 if (count != 0)
2901                         gpio_chip_set_multiple(gc, mask, bits);
2902
2903                 if (mask != fastpath_mask)
2904                         bitmap_free(mask);
2905                 if (bits != fastpath_bits)
2906                         bitmap_free(bits);
2907         }
2908         return 0;
2909 }
2910
2911 /**
2912  * gpiod_set_raw_value() - assign a gpio's raw value
2913  * @desc: gpio whose value will be assigned
2914  * @value: value to assign
2915  *
2916  * Set the raw value of the GPIO, i.e. the value of its physical line without
2917  * regard for its ACTIVE_LOW status.
2918  *
2919  * This function can be called from contexts where we cannot sleep, and will
2920  * complain if the GPIO chip functions potentially sleep.
2921  */
2922 void gpiod_set_raw_value(struct gpio_desc *desc, int value)
2923 {
2924         VALIDATE_DESC_VOID(desc);
2925         /* Should be using gpiod_set_raw_value_cansleep() */
2926         WARN_ON(desc->gdev->chip->can_sleep);
2927         gpiod_set_raw_value_commit(desc, value);
2928 }
2929 EXPORT_SYMBOL_GPL(gpiod_set_raw_value);
2930
2931 /**
2932  * gpiod_set_value_nocheck() - set a GPIO line value without checking
2933  * @desc: the descriptor to set the value on
2934  * @value: value to set
2935  *
2936  * This sets the value of a GPIO line backing a descriptor, applying
2937  * different semantic quirks like active low and open drain/source
2938  * handling.
2939  */
2940 static void gpiod_set_value_nocheck(struct gpio_desc *desc, int value)
2941 {
2942         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2943                 value = !value;
2944         if (test_bit(FLAG_OPEN_DRAIN, &desc->flags))
2945                 gpio_set_open_drain_value_commit(desc, value);
2946         else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags))
2947                 gpio_set_open_source_value_commit(desc, value);
2948         else
2949                 gpiod_set_raw_value_commit(desc, value);
2950 }
2951
2952 /**
2953  * gpiod_set_value() - assign a gpio's value
2954  * @desc: gpio whose value will be assigned
2955  * @value: value to assign
2956  *
2957  * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW,
2958  * OPEN_DRAIN and OPEN_SOURCE flags into account.
2959  *
2960  * This function can be called from contexts where we cannot sleep, and will
2961  * complain if the GPIO chip functions potentially sleep.
2962  */
2963 void gpiod_set_value(struct gpio_desc *desc, int value)
2964 {
2965         VALIDATE_DESC_VOID(desc);
2966         /* Should be using gpiod_set_value_cansleep() */
2967         WARN_ON(desc->gdev->chip->can_sleep);
2968         gpiod_set_value_nocheck(desc, value);
2969 }
2970 EXPORT_SYMBOL_GPL(gpiod_set_value);
2971
2972 /**
2973  * gpiod_set_raw_array_value() - assign values to an array of GPIOs
2974  * @array_size: number of elements in the descriptor array / value bitmap
2975  * @desc_array: array of GPIO descriptors whose values will be assigned
2976  * @array_info: information on applicability of fast bitmap processing path
2977  * @value_bitmap: bitmap of values to assign
2978  *
2979  * Set the raw values of the GPIOs, i.e. the values of the physical lines
2980  * without regard for their ACTIVE_LOW status.
2981  *
2982  * This function can be called from contexts where we cannot sleep, and will
2983  * complain if the GPIO chip functions potentially sleep.
2984  */
2985 int gpiod_set_raw_array_value(unsigned int array_size,
2986                               struct gpio_desc **desc_array,
2987                               struct gpio_array *array_info,
2988                               unsigned long *value_bitmap)
2989 {
2990         if (!desc_array)
2991                 return -EINVAL;
2992         return gpiod_set_array_value_complex(true, false, array_size,
2993                                         desc_array, array_info, value_bitmap);
2994 }
2995 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value);
2996
2997 /**
2998  * gpiod_set_array_value() - assign values to an array of GPIOs
2999  * @array_size: number of elements in the descriptor array / value bitmap
3000  * @desc_array: array of GPIO descriptors whose values will be assigned
3001  * @array_info: information on applicability of fast bitmap processing path
3002  * @value_bitmap: bitmap of values to assign
3003  *
3004  * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3005  * into account.
3006  *
3007  * This function can be called from contexts where we cannot sleep, and will
3008  * complain if the GPIO chip functions potentially sleep.
3009  */
3010 int gpiod_set_array_value(unsigned int array_size,
3011                           struct gpio_desc **desc_array,
3012                           struct gpio_array *array_info,
3013                           unsigned long *value_bitmap)
3014 {
3015         if (!desc_array)
3016                 return -EINVAL;
3017         return gpiod_set_array_value_complex(false, false, array_size,
3018                                              desc_array, array_info,
3019                                              value_bitmap);
3020 }
3021 EXPORT_SYMBOL_GPL(gpiod_set_array_value);
3022
3023 /**
3024  * gpiod_cansleep() - report whether gpio value access may sleep
3025  * @desc: gpio to check
3026  *
3027  */
3028 int gpiod_cansleep(const struct gpio_desc *desc)
3029 {
3030         VALIDATE_DESC(desc);
3031         return desc->gdev->chip->can_sleep;
3032 }
3033 EXPORT_SYMBOL_GPL(gpiod_cansleep);
3034
3035 /**
3036  * gpiod_set_consumer_name() - set the consumer name for the descriptor
3037  * @desc: gpio to set the consumer name on
3038  * @name: the new consumer name
3039  */
3040 int gpiod_set_consumer_name(struct gpio_desc *desc, const char *name)
3041 {
3042         VALIDATE_DESC(desc);
3043         if (name) {
3044                 name = kstrdup_const(name, GFP_KERNEL);
3045                 if (!name)
3046                         return -ENOMEM;
3047         }
3048
3049         kfree_const(desc->label);
3050         desc_set_label(desc, name);
3051
3052         return 0;
3053 }
3054 EXPORT_SYMBOL_GPL(gpiod_set_consumer_name);
3055
3056 /**
3057  * gpiod_to_irq() - return the IRQ corresponding to a GPIO
3058  * @desc: gpio whose IRQ will be returned (already requested)
3059  *
3060  * Return the IRQ corresponding to the passed GPIO, or an error code in case of
3061  * error.
3062  */
3063 int gpiod_to_irq(const struct gpio_desc *desc)
3064 {
3065         struct gpio_chip *gc;
3066         int offset;
3067
3068         /*
3069          * Cannot VALIDATE_DESC() here as gpiod_to_irq() consumer semantics
3070          * requires this function to not return zero on an invalid descriptor
3071          * but rather a negative error number.
3072          */
3073         if (!desc || IS_ERR(desc) || !desc->gdev || !desc->gdev->chip)
3074                 return -EINVAL;
3075
3076         gc = desc->gdev->chip;
3077         offset = gpio_chip_hwgpio(desc);
3078         if (gc->to_irq) {
3079                 int retirq = gc->to_irq(gc, offset);
3080
3081                 /* Zero means NO_IRQ */
3082                 if (!retirq)
3083                         return -ENXIO;
3084
3085                 return retirq;
3086         }
3087         return -ENXIO;
3088 }
3089 EXPORT_SYMBOL_GPL(gpiod_to_irq);
3090
3091 /**
3092  * gpiochip_lock_as_irq() - lock a GPIO to be used as IRQ
3093  * @gc: the chip the GPIO to lock belongs to
3094  * @offset: the offset of the GPIO to lock as IRQ
3095  *
3096  * This is used directly by GPIO drivers that want to lock down
3097  * a certain GPIO line to be used for IRQs.
3098  */
3099 int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset)
3100 {
3101         struct gpio_desc *desc;
3102
3103         desc = gpiochip_get_desc(gc, offset);
3104         if (IS_ERR(desc))
3105                 return PTR_ERR(desc);
3106
3107         /*
3108          * If it's fast: flush the direction setting if something changed
3109          * behind our back
3110          */
3111         if (!gc->can_sleep && gc->get_direction) {
3112                 int dir = gpiod_get_direction(desc);
3113
3114                 if (dir < 0) {
3115                         chip_err(gc, "%s: cannot get GPIO direction\n",
3116                                  __func__);
3117                         return dir;
3118                 }
3119         }
3120
3121         /* To be valid for IRQ the line needs to be input or open drain */
3122         if (test_bit(FLAG_IS_OUT, &desc->flags) &&
3123             !test_bit(FLAG_OPEN_DRAIN, &desc->flags)) {
3124                 chip_err(gc,
3125                          "%s: tried to flag a GPIO set as output for IRQ\n",
3126                          __func__);
3127                 return -EIO;
3128         }
3129
3130         set_bit(FLAG_USED_AS_IRQ, &desc->flags);
3131         set_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3132
3133         /*
3134          * If the consumer has not set up a label (such as when the
3135          * IRQ is referenced from .to_irq()) we set up a label here
3136          * so it is clear this is used as an interrupt.
3137          */
3138         if (!desc->label)
3139                 desc_set_label(desc, "interrupt");
3140
3141         return 0;
3142 }
3143 EXPORT_SYMBOL_GPL(gpiochip_lock_as_irq);
3144
3145 /**
3146  * gpiochip_unlock_as_irq() - unlock a GPIO used as IRQ
3147  * @gc: the chip the GPIO to lock belongs to
3148  * @offset: the offset of the GPIO to lock as IRQ
3149  *
3150  * This is used directly by GPIO drivers that want to indicate
3151  * that a certain GPIO is no longer used exclusively for IRQ.
3152  */
3153 void gpiochip_unlock_as_irq(struct gpio_chip *gc, unsigned int offset)
3154 {
3155         struct gpio_desc *desc;
3156
3157         desc = gpiochip_get_desc(gc, offset);
3158         if (IS_ERR(desc))
3159                 return;
3160
3161         clear_bit(FLAG_USED_AS_IRQ, &desc->flags);
3162         clear_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3163
3164         /* If we only had this marking, erase it */
3165         if (desc->label && !strcmp(desc->label, "interrupt"))
3166                 desc_set_label(desc, NULL);
3167 }
3168 EXPORT_SYMBOL_GPL(gpiochip_unlock_as_irq);
3169
3170 void gpiochip_disable_irq(struct gpio_chip *gc, unsigned int offset)
3171 {
3172         struct gpio_desc *desc = gpiochip_get_desc(gc, offset);
3173
3174         if (!IS_ERR(desc) &&
3175             !WARN_ON(!test_bit(FLAG_USED_AS_IRQ, &desc->flags)))
3176                 clear_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3177 }
3178 EXPORT_SYMBOL_GPL(gpiochip_disable_irq);
3179
3180 void gpiochip_enable_irq(struct gpio_chip *gc, unsigned int offset)
3181 {
3182         struct gpio_desc *desc = gpiochip_get_desc(gc, offset);
3183
3184         if (!IS_ERR(desc) &&
3185             !WARN_ON(!test_bit(FLAG_USED_AS_IRQ, &desc->flags))) {
3186                 /*
3187                  * We must not be output when using IRQ UNLESS we are
3188                  * open drain.
3189                  */
3190                 WARN_ON(test_bit(FLAG_IS_OUT, &desc->flags) &&
3191                         !test_bit(FLAG_OPEN_DRAIN, &desc->flags));
3192                 set_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3193         }
3194 }
3195 EXPORT_SYMBOL_GPL(gpiochip_enable_irq);
3196
3197 bool gpiochip_line_is_irq(struct gpio_chip *gc, unsigned int offset)
3198 {
3199         if (offset >= gc->ngpio)
3200                 return false;
3201
3202         return test_bit(FLAG_USED_AS_IRQ, &gc->gpiodev->descs[offset].flags);
3203 }
3204 EXPORT_SYMBOL_GPL(gpiochip_line_is_irq);
3205
3206 int gpiochip_reqres_irq(struct gpio_chip *gc, unsigned int offset)
3207 {
3208         int ret;
3209
3210         if (!try_module_get(gc->gpiodev->owner))
3211                 return -ENODEV;
3212
3213         ret = gpiochip_lock_as_irq(gc, offset);
3214         if (ret) {
3215                 chip_err(gc, "unable to lock HW IRQ %u for IRQ\n", offset);
3216                 module_put(gc->gpiodev->owner);
3217                 return ret;
3218         }
3219         return 0;
3220 }
3221 EXPORT_SYMBOL_GPL(gpiochip_reqres_irq);
3222
3223 void gpiochip_relres_irq(struct gpio_chip *gc, unsigned int offset)
3224 {
3225         gpiochip_unlock_as_irq(gc, offset);
3226         module_put(gc->gpiodev->owner);
3227 }
3228 EXPORT_SYMBOL_GPL(gpiochip_relres_irq);
3229
3230 bool gpiochip_line_is_open_drain(struct gpio_chip *gc, unsigned int offset)
3231 {
3232         if (offset >= gc->ngpio)
3233                 return false;
3234
3235         return test_bit(FLAG_OPEN_DRAIN, &gc->gpiodev->descs[offset].flags);
3236 }
3237 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_drain);
3238
3239 bool gpiochip_line_is_open_source(struct gpio_chip *gc, unsigned int offset)
3240 {
3241         if (offset >= gc->ngpio)
3242                 return false;
3243
3244         return test_bit(FLAG_OPEN_SOURCE, &gc->gpiodev->descs[offset].flags);
3245 }
3246 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_source);
3247
3248 bool gpiochip_line_is_persistent(struct gpio_chip *gc, unsigned int offset)
3249 {
3250         if (offset >= gc->ngpio)
3251                 return false;
3252
3253         return !test_bit(FLAG_TRANSITORY, &gc->gpiodev->descs[offset].flags);
3254 }
3255 EXPORT_SYMBOL_GPL(gpiochip_line_is_persistent);
3256
3257 /**
3258  * gpiod_get_raw_value_cansleep() - return a gpio's raw value
3259  * @desc: gpio whose value will be returned
3260  *
3261  * Return the GPIO's raw value, i.e. the value of the physical line disregarding
3262  * its ACTIVE_LOW status, or negative errno on failure.
3263  *
3264  * This function is to be called from contexts that can sleep.
3265  */
3266 int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc)
3267 {
3268         might_sleep_if(extra_checks);
3269         VALIDATE_DESC(desc);
3270         return gpiod_get_raw_value_commit(desc);
3271 }
3272 EXPORT_SYMBOL_GPL(gpiod_get_raw_value_cansleep);
3273
3274 /**
3275  * gpiod_get_value_cansleep() - return a gpio's value
3276  * @desc: gpio whose value will be returned
3277  *
3278  * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into
3279  * account, or negative errno on failure.
3280  *
3281  * This function is to be called from contexts that can sleep.
3282  */
3283 int gpiod_get_value_cansleep(const struct gpio_desc *desc)
3284 {
3285         int value;
3286
3287         might_sleep_if(extra_checks);
3288         VALIDATE_DESC(desc);
3289         value = gpiod_get_raw_value_commit(desc);
3290         if (value < 0)
3291                 return value;
3292
3293         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
3294                 value = !value;
3295
3296         return value;
3297 }
3298 EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep);
3299
3300 /**
3301  * gpiod_get_raw_array_value_cansleep() - read raw values from an array of GPIOs
3302  * @array_size: number of elements in the descriptor array / value bitmap
3303  * @desc_array: array of GPIO descriptors whose values will be read
3304  * @array_info: information on applicability of fast bitmap processing path
3305  * @value_bitmap: bitmap to store the read values
3306  *
3307  * Read the raw values of the GPIOs, i.e. the values of the physical lines
3308  * without regard for their ACTIVE_LOW status.  Return 0 in case of success,
3309  * else an error code.
3310  *
3311  * This function is to be called from contexts that can sleep.
3312  */
3313 int gpiod_get_raw_array_value_cansleep(unsigned int array_size,
3314                                        struct gpio_desc **desc_array,
3315                                        struct gpio_array *array_info,
3316                                        unsigned long *value_bitmap)
3317 {
3318         might_sleep_if(extra_checks);
3319         if (!desc_array)
3320                 return -EINVAL;
3321         return gpiod_get_array_value_complex(true, true, array_size,
3322                                              desc_array, array_info,
3323                                              value_bitmap);
3324 }
3325 EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value_cansleep);
3326
3327 /**
3328  * gpiod_get_array_value_cansleep() - read values from an array of GPIOs
3329  * @array_size: number of elements in the descriptor array / value bitmap
3330  * @desc_array: array of GPIO descriptors whose values will be read
3331  * @array_info: information on applicability of fast bitmap processing path
3332  * @value_bitmap: bitmap to store the read values
3333  *
3334  * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3335  * into account.  Return 0 in case of success, else an error code.
3336  *
3337  * This function is to be called from contexts that can sleep.
3338  */
3339 int gpiod_get_array_value_cansleep(unsigned int array_size,
3340                                    struct gpio_desc **desc_array,
3341                                    struct gpio_array *array_info,
3342                                    unsigned long *value_bitmap)
3343 {
3344         might_sleep_if(extra_checks);
3345         if (!desc_array)
3346                 return -EINVAL;
3347         return gpiod_get_array_value_complex(false, true, array_size,
3348                                              desc_array, array_info,
3349                                              value_bitmap);
3350 }
3351 EXPORT_SYMBOL_GPL(gpiod_get_array_value_cansleep);
3352
3353 /**
3354  * gpiod_set_raw_value_cansleep() - assign a gpio's raw value
3355  * @desc: gpio whose value will be assigned
3356  * @value: value to assign
3357  *
3358  * Set the raw value of the GPIO, i.e. the value of its physical line without
3359  * regard for its ACTIVE_LOW status.
3360  *
3361  * This function is to be called from contexts that can sleep.
3362  */
3363 void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value)
3364 {
3365         might_sleep_if(extra_checks);
3366         VALIDATE_DESC_VOID(desc);
3367         gpiod_set_raw_value_commit(desc, value);
3368 }
3369 EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep);
3370
3371 /**
3372  * gpiod_set_value_cansleep() - assign a gpio's value
3373  * @desc: gpio whose value will be assigned
3374  * @value: value to assign
3375  *
3376  * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
3377  * account
3378  *
3379  * This function is to be called from contexts that can sleep.
3380  */
3381 void gpiod_set_value_cansleep(struct gpio_desc *desc, int value)
3382 {
3383         might_sleep_if(extra_checks);
3384         VALIDATE_DESC_VOID(desc);
3385         gpiod_set_value_nocheck(desc, value);
3386 }
3387 EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep);
3388
3389 /**
3390  * gpiod_set_raw_array_value_cansleep() - assign values to an array of GPIOs
3391  * @array_size: number of elements in the descriptor array / value bitmap
3392  * @desc_array: array of GPIO descriptors whose values will be assigned
3393  * @array_info: information on applicability of fast bitmap processing path
3394  * @value_bitmap: bitmap of values to assign
3395  *
3396  * Set the raw values of the GPIOs, i.e. the values of the physical lines
3397  * without regard for their ACTIVE_LOW status.
3398  *
3399  * This function is to be called from contexts that can sleep.
3400  */
3401 int gpiod_set_raw_array_value_cansleep(unsigned int array_size,
3402                                        struct gpio_desc **desc_array,
3403                                        struct gpio_array *array_info,
3404                                        unsigned long *value_bitmap)
3405 {
3406         might_sleep_if(extra_checks);
3407         if (!desc_array)
3408                 return -EINVAL;
3409         return gpiod_set_array_value_complex(true, true, array_size, desc_array,
3410                                       array_info, value_bitmap);
3411 }
3412 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value_cansleep);
3413
3414 /**
3415  * gpiod_add_lookup_tables() - register GPIO device consumers
3416  * @tables: list of tables of consumers to register
3417  * @n: number of tables in the list
3418  */
3419 void gpiod_add_lookup_tables(struct gpiod_lookup_table **tables, size_t n)
3420 {
3421         unsigned int i;
3422
3423         mutex_lock(&gpio_lookup_lock);
3424
3425         for (i = 0; i < n; i++)
3426                 list_add_tail(&tables[i]->list, &gpio_lookup_list);
3427
3428         mutex_unlock(&gpio_lookup_lock);
3429 }
3430
3431 /**
3432  * gpiod_set_array_value_cansleep() - assign values to an array of GPIOs
3433  * @array_size: number of elements in the descriptor array / value bitmap
3434  * @desc_array: array of GPIO descriptors whose values will be assigned
3435  * @array_info: information on applicability of fast bitmap processing path
3436  * @value_bitmap: bitmap of values to assign
3437  *
3438  * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3439  * into account.
3440  *
3441  * This function is to be called from contexts that can sleep.
3442  */
3443 int gpiod_set_array_value_cansleep(unsigned int array_size,
3444                                    struct gpio_desc **desc_array,
3445                                    struct gpio_array *array_info,
3446                                    unsigned long *value_bitmap)
3447 {
3448         might_sleep_if(extra_checks);
3449         if (!desc_array)
3450                 return -EINVAL;
3451         return gpiod_set_array_value_complex(false, true, array_size,
3452                                              desc_array, array_info,
3453                                              value_bitmap);
3454 }
3455 EXPORT_SYMBOL_GPL(gpiod_set_array_value_cansleep);
3456
3457 /**
3458  * gpiod_add_lookup_table() - register GPIO device consumers
3459  * @table: table of consumers to register
3460  */
3461 void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
3462 {
3463         mutex_lock(&gpio_lookup_lock);
3464
3465         list_add_tail(&table->list, &gpio_lookup_list);
3466
3467         mutex_unlock(&gpio_lookup_lock);
3468 }
3469 EXPORT_SYMBOL_GPL(gpiod_add_lookup_table);
3470
3471 /**
3472  * gpiod_remove_lookup_table() - unregister GPIO device consumers
3473  * @table: table of consumers to unregister
3474  */
3475 void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
3476 {
3477         /* Nothing to remove */
3478         if (!table)
3479                 return;
3480
3481         mutex_lock(&gpio_lookup_lock);
3482
3483         list_del(&table->list);
3484
3485         mutex_unlock(&gpio_lookup_lock);
3486 }
3487 EXPORT_SYMBOL_GPL(gpiod_remove_lookup_table);
3488
3489 /**
3490  * gpiod_add_hogs() - register a set of GPIO hogs from machine code
3491  * @hogs: table of gpio hog entries with a zeroed sentinel at the end
3492  */
3493 void gpiod_add_hogs(struct gpiod_hog *hogs)
3494 {
3495         struct gpio_chip *gc;
3496         struct gpiod_hog *hog;
3497
3498         mutex_lock(&gpio_machine_hogs_mutex);
3499
3500         for (hog = &hogs[0]; hog->chip_label; hog++) {
3501                 list_add_tail(&hog->list, &gpio_machine_hogs);
3502
3503                 /*
3504                  * The chip may have been registered earlier, so check if it
3505                  * exists and, if so, try to hog the line now.
3506                  */
3507                 gc = find_chip_by_name(hog->chip_label);
3508                 if (gc)
3509                         gpiochip_machine_hog(gc, hog);
3510         }
3511
3512         mutex_unlock(&gpio_machine_hogs_mutex);
3513 }
3514 EXPORT_SYMBOL_GPL(gpiod_add_hogs);
3515
3516 static struct gpiod_lookup_table *gpiod_find_lookup_table(struct device *dev)
3517 {
3518         const char *dev_id = dev ? dev_name(dev) : NULL;
3519         struct gpiod_lookup_table *table;
3520
3521         mutex_lock(&gpio_lookup_lock);
3522
3523         list_for_each_entry(table, &gpio_lookup_list, list) {
3524                 if (table->dev_id && dev_id) {
3525                         /*
3526                          * Valid strings on both ends, must be identical to have
3527                          * a match
3528                          */
3529                         if (!strcmp(table->dev_id, dev_id))
3530                                 goto found;
3531                 } else {
3532                         /*
3533                          * One of the pointers is NULL, so both must be to have
3534                          * a match
3535                          */
3536                         if (dev_id == table->dev_id)
3537                                 goto found;
3538                 }
3539         }
3540         table = NULL;
3541
3542 found:
3543         mutex_unlock(&gpio_lookup_lock);
3544         return table;
3545 }
3546
3547 static struct gpio_desc *gpiod_find(struct device *dev, const char *con_id,
3548                                     unsigned int idx, unsigned long *flags)
3549 {
3550         struct gpio_desc *desc = ERR_PTR(-ENOENT);
3551         struct gpiod_lookup_table *table;
3552         struct gpiod_lookup *p;
3553
3554         table = gpiod_find_lookup_table(dev);
3555         if (!table)
3556                 return desc;
3557
3558         for (p = &table->table[0]; p->key; p++) {
3559                 struct gpio_chip *gc;
3560
3561                 /* idx must always match exactly */
3562                 if (p->idx != idx)
3563                         continue;
3564
3565                 /* If the lookup entry has a con_id, require exact match */
3566                 if (p->con_id && (!con_id || strcmp(p->con_id, con_id)))
3567                         continue;
3568
3569                 if (p->chip_hwnum == U16_MAX) {
3570                         desc = gpio_name_to_desc(p->key);
3571                         if (desc) {
3572                                 *flags = p->flags;
3573                                 return desc;
3574                         }
3575
3576                         dev_warn(dev, "cannot find GPIO line %s, deferring\n",
3577                                  p->key);
3578                         return ERR_PTR(-EPROBE_DEFER);
3579                 }
3580
3581                 gc = find_chip_by_name(p->key);
3582
3583                 if (!gc) {
3584                         /*
3585                          * As the lookup table indicates a chip with
3586                          * p->key should exist, assume it may
3587                          * still appear later and let the interested
3588                          * consumer be probed again or let the Deferred
3589                          * Probe infrastructure handle the error.
3590                          */
3591                         dev_warn(dev, "cannot find GPIO chip %s, deferring\n",
3592                                  p->key);
3593                         return ERR_PTR(-EPROBE_DEFER);
3594                 }
3595
3596                 if (gc->ngpio <= p->chip_hwnum) {
3597                         dev_err(dev,
3598                                 "requested GPIO %u (%u) is out of range [0..%u] for chip %s\n",
3599                                 idx, p->chip_hwnum, gc->ngpio - 1,
3600                                 gc->label);
3601                         return ERR_PTR(-EINVAL);
3602                 }
3603
3604                 desc = gpiochip_get_desc(gc, p->chip_hwnum);
3605                 *flags = p->flags;
3606
3607                 return desc;
3608         }
3609
3610         return desc;
3611 }
3612
3613 static int platform_gpio_count(struct device *dev, const char *con_id)
3614 {
3615         struct gpiod_lookup_table *table;
3616         struct gpiod_lookup *p;
3617         unsigned int count = 0;
3618
3619         table = gpiod_find_lookup_table(dev);
3620         if (!table)
3621                 return -ENOENT;
3622
3623         for (p = &table->table[0]; p->key; p++) {
3624                 if ((con_id && p->con_id && !strcmp(con_id, p->con_id)) ||
3625                     (!con_id && !p->con_id))
3626                         count++;
3627         }
3628         if (!count)
3629                 return -ENOENT;
3630
3631         return count;
3632 }
3633
3634 /**
3635  * fwnode_gpiod_get_index - obtain a GPIO from firmware node
3636  * @fwnode:     handle of the firmware node
3637  * @con_id:     function within the GPIO consumer
3638  * @index:      index of the GPIO to obtain for the consumer
3639  * @flags:      GPIO initialization flags
3640  * @label:      label to attach to the requested GPIO
3641  *
3642  * This function can be used for drivers that get their configuration
3643  * from opaque firmware.
3644  *
3645  * The function properly finds the corresponding GPIO using whatever is the
3646  * underlying firmware interface and then makes sure that the GPIO
3647  * descriptor is requested before it is returned to the caller.
3648  *
3649  * Returns:
3650  * On successful request the GPIO pin is configured in accordance with
3651  * provided @flags.
3652  *
3653  * In case of error an ERR_PTR() is returned.
3654  */
3655 struct gpio_desc *fwnode_gpiod_get_index(struct fwnode_handle *fwnode,
3656                                          const char *con_id, int index,
3657                                          enum gpiod_flags flags,
3658                                          const char *label)
3659 {
3660         struct gpio_desc *desc;
3661         char prop_name[32]; /* 32 is max size of property name */
3662         unsigned int i;
3663
3664         for (i = 0; i < ARRAY_SIZE(gpio_suffixes); i++) {
3665                 if (con_id)
3666                         snprintf(prop_name, sizeof(prop_name), "%s-%s",
3667                                             con_id, gpio_suffixes[i]);
3668                 else
3669                         snprintf(prop_name, sizeof(prop_name), "%s",
3670                                             gpio_suffixes[i]);
3671
3672                 desc = fwnode_get_named_gpiod(fwnode, prop_name, index, flags,
3673                                               label);
3674                 if (!gpiod_not_found(desc))
3675                         break;
3676         }
3677
3678         return desc;
3679 }
3680 EXPORT_SYMBOL_GPL(fwnode_gpiod_get_index);
3681
3682 /**
3683  * gpiod_count - return the number of GPIOs associated with a device / function
3684  *              or -ENOENT if no GPIO has been assigned to the requested function
3685  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3686  * @con_id:     function within the GPIO consumer
3687  */
3688 int gpiod_count(struct device *dev, const char *con_id)
3689 {
3690         const struct fwnode_handle *fwnode = dev ? dev_fwnode(dev) : NULL;
3691         int count = -ENOENT;
3692
3693         if (is_of_node(fwnode))
3694                 count = of_gpio_get_count(dev, con_id);
3695         else if (is_acpi_node(fwnode))
3696                 count = acpi_gpio_count(dev, con_id);
3697
3698         if (count < 0)
3699                 count = platform_gpio_count(dev, con_id);
3700
3701         return count;
3702 }
3703 EXPORT_SYMBOL_GPL(gpiod_count);
3704
3705 /**
3706  * gpiod_get - obtain a GPIO for a given GPIO function
3707  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3708  * @con_id:     function within the GPIO consumer
3709  * @flags:      optional GPIO initialization flags
3710  *
3711  * Return the GPIO descriptor corresponding to the function con_id of device
3712  * dev, -ENOENT if no GPIO has been assigned to the requested function, or
3713  * another IS_ERR() code if an error occurred while trying to acquire the GPIO.
3714  */
3715 struct gpio_desc *__must_check gpiod_get(struct device *dev, const char *con_id,
3716                                          enum gpiod_flags flags)
3717 {
3718         return gpiod_get_index(dev, con_id, 0, flags);
3719 }
3720 EXPORT_SYMBOL_GPL(gpiod_get);
3721
3722 /**
3723  * gpiod_get_optional - obtain an optional GPIO for a given GPIO function
3724  * @dev: GPIO consumer, can be NULL for system-global GPIOs
3725  * @con_id: function within the GPIO consumer
3726  * @flags: optional GPIO initialization flags
3727  *
3728  * This is equivalent to gpiod_get(), except that when no GPIO was assigned to
3729  * the requested function it will return NULL. This is convenient for drivers
3730  * that need to handle optional GPIOs.
3731  */
3732 struct gpio_desc *__must_check gpiod_get_optional(struct device *dev,
3733                                                   const char *con_id,
3734                                                   enum gpiod_flags flags)
3735 {
3736         return gpiod_get_index_optional(dev, con_id, 0, flags);
3737 }
3738 EXPORT_SYMBOL_GPL(gpiod_get_optional);
3739
3740
3741 /**
3742  * gpiod_configure_flags - helper function to configure a given GPIO
3743  * @desc:       gpio whose value will be assigned
3744  * @con_id:     function within the GPIO consumer
3745  * @lflags:     bitmask of gpio_lookup_flags GPIO_* values - returned from
3746  *              of_find_gpio() or of_get_gpio_hog()
3747  * @dflags:     gpiod_flags - optional GPIO initialization flags
3748  *
3749  * Return 0 on success, -ENOENT if no GPIO has been assigned to the
3750  * requested function and/or index, or another IS_ERR() code if an error
3751  * occurred while trying to acquire the GPIO.
3752  */
3753 int gpiod_configure_flags(struct gpio_desc *desc, const char *con_id,
3754                 unsigned long lflags, enum gpiod_flags dflags)
3755 {
3756         int ret;
3757
3758         if (lflags & GPIO_ACTIVE_LOW)
3759                 set_bit(FLAG_ACTIVE_LOW, &desc->flags);
3760
3761         if (lflags & GPIO_OPEN_DRAIN)
3762                 set_bit(FLAG_OPEN_DRAIN, &desc->flags);
3763         else if (dflags & GPIOD_FLAGS_BIT_OPEN_DRAIN) {
3764                 /*
3765                  * This enforces open drain mode from the consumer side.
3766                  * This is necessary for some busses like I2C, but the lookup
3767                  * should *REALLY* have specified them as open drain in the
3768                  * first place, so print a little warning here.
3769                  */
3770                 set_bit(FLAG_OPEN_DRAIN, &desc->flags);
3771                 gpiod_warn(desc,
3772                            "enforced open drain please flag it properly in DT/ACPI DSDT/board file\n");
3773         }
3774
3775         if (lflags & GPIO_OPEN_SOURCE)
3776                 set_bit(FLAG_OPEN_SOURCE, &desc->flags);
3777
3778         if ((lflags & GPIO_PULL_UP) && (lflags & GPIO_PULL_DOWN)) {
3779                 gpiod_err(desc,
3780                           "both pull-up and pull-down enabled, invalid configuration\n");
3781                 return -EINVAL;
3782         }
3783
3784         if (lflags & GPIO_PULL_UP)
3785                 set_bit(FLAG_PULL_UP, &desc->flags);
3786         else if (lflags & GPIO_PULL_DOWN)
3787                 set_bit(FLAG_PULL_DOWN, &desc->flags);
3788
3789         ret = gpiod_set_transitory(desc, (lflags & GPIO_TRANSITORY));
3790         if (ret < 0)
3791                 return ret;
3792
3793         /* No particular flag request, return here... */
3794         if (!(dflags & GPIOD_FLAGS_BIT_DIR_SET)) {
3795                 gpiod_dbg(desc, "no flags found for %s\n", con_id);
3796                 return 0;
3797         }
3798
3799         /* Process flags */
3800         if (dflags & GPIOD_FLAGS_BIT_DIR_OUT)
3801                 ret = gpiod_direction_output(desc,
3802                                 !!(dflags & GPIOD_FLAGS_BIT_DIR_VAL));
3803         else
3804                 ret = gpiod_direction_input(desc);
3805
3806         return ret;
3807 }
3808
3809 /**
3810  * gpiod_get_index - obtain a GPIO from a multi-index GPIO function
3811  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3812  * @con_id:     function within the GPIO consumer
3813  * @idx:        index of the GPIO to obtain in the consumer
3814  * @flags:      optional GPIO initialization flags
3815  *
3816  * This variant of gpiod_get() allows to access GPIOs other than the first
3817  * defined one for functions that define several GPIOs.
3818  *
3819  * Return a valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the
3820  * requested function and/or index, or another IS_ERR() code if an error
3821  * occurred while trying to acquire the GPIO.
3822  */
3823 struct gpio_desc *__must_check gpiod_get_index(struct device *dev,
3824                                                const char *con_id,
3825                                                unsigned int idx,
3826                                                enum gpiod_flags flags)
3827 {
3828         unsigned long lookupflags = GPIO_LOOKUP_FLAGS_DEFAULT;
3829         struct gpio_desc *desc = NULL;
3830         int ret;
3831         /* Maybe we have a device name, maybe not */
3832         const char *devname = dev ? dev_name(dev) : "?";
3833         const struct fwnode_handle *fwnode = dev ? dev_fwnode(dev) : NULL;
3834
3835         dev_dbg(dev, "GPIO lookup for consumer %s\n", con_id);
3836
3837         /* Using device tree? */
3838         if (is_of_node(fwnode)) {
3839                 dev_dbg(dev, "using device tree for GPIO lookup\n");
3840                 desc = of_find_gpio(dev, con_id, idx, &lookupflags);
3841         } else if (is_acpi_node(fwnode)) {
3842                 dev_dbg(dev, "using ACPI for GPIO lookup\n");
3843                 desc = acpi_find_gpio(dev, con_id, idx, &flags, &lookupflags);
3844         }
3845
3846         /*
3847          * Either we are not using DT or ACPI, or their lookup did not return
3848          * a result. In that case, use platform lookup as a fallback.
3849          */
3850         if (!desc || gpiod_not_found(desc)) {
3851                 dev_dbg(dev, "using lookup tables for GPIO lookup\n");
3852                 desc = gpiod_find(dev, con_id, idx, &lookupflags);
3853         }
3854
3855         if (IS_ERR(desc)) {
3856                 dev_dbg(dev, "No GPIO consumer %s found\n", con_id);
3857                 return desc;
3858         }
3859
3860         /*
3861          * If a connection label was passed use that, else attempt to use
3862          * the device name as label
3863          */
3864         ret = gpiod_request(desc, con_id ? con_id : devname);
3865         if (ret) {
3866                 if (ret == -EBUSY && flags & GPIOD_FLAGS_BIT_NONEXCLUSIVE) {
3867                         /*
3868                          * This happens when there are several consumers for
3869                          * the same GPIO line: we just return here without
3870                          * further initialization. It is a bit if a hack.
3871                          * This is necessary to support fixed regulators.
3872                          *
3873                          * FIXME: Make this more sane and safe.
3874                          */
3875                         dev_info(dev, "nonexclusive access to GPIO for %s\n",
3876                                  con_id ? con_id : devname);
3877                         return desc;
3878                 } else {
3879                         return ERR_PTR(ret);
3880                 }
3881         }
3882
3883         ret = gpiod_configure_flags(desc, con_id, lookupflags, flags);
3884         if (ret < 0) {
3885                 dev_dbg(dev, "setup of GPIO %s failed\n", con_id);
3886                 gpiod_put(desc);
3887                 return ERR_PTR(ret);
3888         }
3889
3890         blocking_notifier_call_chain(&desc->gdev->notifier,
3891                                      GPIOLINE_CHANGED_REQUESTED, desc);
3892
3893         return desc;
3894 }
3895 EXPORT_SYMBOL_GPL(gpiod_get_index);
3896
3897 /**
3898  * fwnode_get_named_gpiod - obtain a GPIO from firmware node
3899  * @fwnode:     handle of the firmware node
3900  * @propname:   name of the firmware property representing the GPIO
3901  * @index:      index of the GPIO to obtain for the consumer
3902  * @dflags:     GPIO initialization flags
3903  * @label:      label to attach to the requested GPIO
3904  *
3905  * This function can be used for drivers that get their configuration
3906  * from opaque firmware.
3907  *
3908  * The function properly finds the corresponding GPIO using whatever is the
3909  * underlying firmware interface and then makes sure that the GPIO
3910  * descriptor is requested before it is returned to the caller.
3911  *
3912  * Returns:
3913  * On successful request the GPIO pin is configured in accordance with
3914  * provided @dflags.
3915  *
3916  * In case of error an ERR_PTR() is returned.
3917  */
3918 struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
3919                                          const char *propname, int index,
3920                                          enum gpiod_flags dflags,
3921                                          const char *label)
3922 {
3923         unsigned long lflags = GPIO_LOOKUP_FLAGS_DEFAULT;
3924         struct gpio_desc *desc = ERR_PTR(-ENODEV);
3925         int ret;
3926
3927         if (is_of_node(fwnode)) {
3928                 desc = gpiod_get_from_of_node(to_of_node(fwnode),
3929                                               propname, index,
3930                                               dflags,
3931                                               label);
3932                 return desc;
3933         } else if (is_acpi_node(fwnode)) {
3934                 struct acpi_gpio_info info;
3935
3936                 desc = acpi_node_get_gpiod(fwnode, propname, index, &info);
3937                 if (IS_ERR(desc))
3938                         return desc;
3939
3940                 acpi_gpio_update_gpiod_flags(&dflags, &info);
3941                 acpi_gpio_update_gpiod_lookup_flags(&lflags, &info);
3942         } else
3943                 return ERR_PTR(-EINVAL);
3944
3945         /* Currently only ACPI takes this path */
3946         ret = gpiod_request(desc, label);
3947         if (ret)
3948                 return ERR_PTR(ret);
3949
3950         ret = gpiod_configure_flags(desc, propname, lflags, dflags);
3951         if (ret < 0) {
3952                 gpiod_put(desc);
3953                 return ERR_PTR(ret);
3954         }
3955
3956         blocking_notifier_call_chain(&desc->gdev->notifier,
3957                                      GPIOLINE_CHANGED_REQUESTED, desc);
3958
3959         return desc;
3960 }
3961 EXPORT_SYMBOL_GPL(fwnode_get_named_gpiod);
3962
3963 /**
3964  * gpiod_get_index_optional - obtain an optional GPIO from a multi-index GPIO
3965  *                            function
3966  * @dev: GPIO consumer, can be NULL for system-global GPIOs
3967  * @con_id: function within the GPIO consumer
3968  * @index: index of the GPIO to obtain in the consumer
3969  * @flags: optional GPIO initialization flags
3970  *
3971  * This is equivalent to gpiod_get_index(), except that when no GPIO with the
3972  * specified index was assigned to the requested function it will return NULL.
3973  * This is convenient for drivers that need to handle optional GPIOs.
3974  */
3975 struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev,
3976                                                         const char *con_id,
3977                                                         unsigned int index,
3978                                                         enum gpiod_flags flags)
3979 {
3980         struct gpio_desc *desc;
3981
3982         desc = gpiod_get_index(dev, con_id, index, flags);
3983         if (gpiod_not_found(desc))
3984                 return NULL;
3985
3986         return desc;
3987 }
3988 EXPORT_SYMBOL_GPL(gpiod_get_index_optional);
3989
3990 /**
3991  * gpiod_hog - Hog the specified GPIO desc given the provided flags
3992  * @desc:       gpio whose value will be assigned
3993  * @name:       gpio line name
3994  * @lflags:     bitmask of gpio_lookup_flags GPIO_* values - returned from
3995  *              of_find_gpio() or of_get_gpio_hog()
3996  * @dflags:     gpiod_flags - optional GPIO initialization flags
3997  */
3998 int gpiod_hog(struct gpio_desc *desc, const char *name,
3999               unsigned long lflags, enum gpiod_flags dflags)
4000 {
4001         struct gpio_chip *gc;
4002         struct gpio_desc *local_desc;
4003         int hwnum;
4004         int ret;
4005
4006         gc = gpiod_to_chip(desc);
4007         hwnum = gpio_chip_hwgpio(desc);
4008
4009         local_desc = gpiochip_request_own_desc(gc, hwnum, name,
4010                                                lflags, dflags);
4011         if (IS_ERR(local_desc)) {
4012                 ret = PTR_ERR(local_desc);
4013                 pr_err("requesting hog GPIO %s (chip %s, offset %d) failed, %d\n",
4014                        name, gc->label, hwnum, ret);
4015                 return ret;
4016         }
4017
4018         /* Mark GPIO as hogged so it can be identified and removed later */
4019         set_bit(FLAG_IS_HOGGED, &desc->flags);
4020
4021         gpiod_info(desc, "hogged as %s%s\n",
4022                 (dflags & GPIOD_FLAGS_BIT_DIR_OUT) ? "output" : "input",
4023                 (dflags & GPIOD_FLAGS_BIT_DIR_OUT) ?
4024                   (dflags & GPIOD_FLAGS_BIT_DIR_VAL) ? "/high" : "/low" : "");
4025
4026         return 0;
4027 }
4028
4029 /**
4030  * gpiochip_free_hogs - Scan gpio-controller chip and release GPIO hog
4031  * @gc: gpio chip to act on
4032  */
4033 static void gpiochip_free_hogs(struct gpio_chip *gc)
4034 {
4035         int id;
4036
4037         for (id = 0; id < gc->ngpio; id++) {
4038                 if (test_bit(FLAG_IS_HOGGED, &gc->gpiodev->descs[id].flags))
4039                         gpiochip_free_own_desc(&gc->gpiodev->descs[id]);
4040         }
4041 }
4042
4043 /**
4044  * gpiod_get_array - obtain multiple GPIOs from a multi-index GPIO function
4045  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
4046  * @con_id:     function within the GPIO consumer
4047  * @flags:      optional GPIO initialization flags
4048  *
4049  * This function acquires all the GPIOs defined under a given function.
4050  *
4051  * Return a struct gpio_descs containing an array of descriptors, -ENOENT if
4052  * no GPIO has been assigned to the requested function, or another IS_ERR()
4053  * code if an error occurred while trying to acquire the GPIOs.
4054  */
4055 struct gpio_descs *__must_check gpiod_get_array(struct device *dev,
4056                                                 const char *con_id,
4057                                                 enum gpiod_flags flags)
4058 {
4059         struct gpio_desc *desc;
4060         struct gpio_descs *descs;
4061         struct gpio_array *array_info = NULL;
4062         struct gpio_chip *gc;
4063         int count, bitmap_size;
4064
4065         count = gpiod_count(dev, con_id);
4066         if (count < 0)
4067                 return ERR_PTR(count);
4068
4069         descs = kzalloc(struct_size(descs, desc, count), GFP_KERNEL);
4070         if (!descs)
4071                 return ERR_PTR(-ENOMEM);
4072
4073         for (descs->ndescs = 0; descs->ndescs < count; ) {
4074                 desc = gpiod_get_index(dev, con_id, descs->ndescs, flags);
4075                 if (IS_ERR(desc)) {
4076                         gpiod_put_array(descs);
4077                         return ERR_CAST(desc);
4078                 }
4079
4080                 descs->desc[descs->ndescs] = desc;
4081
4082                 gc = gpiod_to_chip(desc);
4083                 /*
4084                  * If pin hardware number of array member 0 is also 0, select
4085                  * its chip as a candidate for fast bitmap processing path.
4086                  */
4087                 if (descs->ndescs == 0 && gpio_chip_hwgpio(desc) == 0) {
4088                         struct gpio_descs *array;
4089
4090                         bitmap_size = BITS_TO_LONGS(gc->ngpio > count ?
4091                                                     gc->ngpio : count);
4092
4093                         array = kzalloc(struct_size(descs, desc, count) +
4094                                         struct_size(array_info, invert_mask,
4095                                         3 * bitmap_size), GFP_KERNEL);
4096                         if (!array) {
4097                                 gpiod_put_array(descs);
4098                                 return ERR_PTR(-ENOMEM);
4099                         }
4100
4101                         memcpy(array, descs,
4102                                struct_size(descs, desc, descs->ndescs + 1));
4103                         kfree(descs);
4104
4105                         descs = array;
4106                         array_info = (void *)(descs->desc + count);
4107                         array_info->get_mask = array_info->invert_mask +
4108                                                   bitmap_size;
4109                         array_info->set_mask = array_info->get_mask +
4110                                                   bitmap_size;
4111
4112                         array_info->desc = descs->desc;
4113                         array_info->size = count;
4114                         array_info->chip = gc;
4115                         bitmap_set(array_info->get_mask, descs->ndescs,
4116                                    count - descs->ndescs);
4117                         bitmap_set(array_info->set_mask, descs->ndescs,
4118                                    count - descs->ndescs);
4119                         descs->info = array_info;
4120                 }
4121                 /* Unmark array members which don't belong to the 'fast' chip */
4122                 if (array_info && array_info->chip != gc) {
4123                         __clear_bit(descs->ndescs, array_info->get_mask);
4124                         __clear_bit(descs->ndescs, array_info->set_mask);
4125                 }
4126                 /*
4127                  * Detect array members which belong to the 'fast' chip
4128                  * but their pins are not in hardware order.
4129                  */
4130                 else if (array_info &&
4131                            gpio_chip_hwgpio(desc) != descs->ndescs) {
4132                         /*
4133                          * Don't use fast path if all array members processed so
4134                          * far belong to the same chip as this one but its pin
4135                          * hardware number is different from its array index.
4136                          */
4137                         if (bitmap_full(array_info->get_mask, descs->ndescs)) {
4138                                 array_info = NULL;
4139                         } else {
4140                                 __clear_bit(descs->ndescs,
4141                                             array_info->get_mask);
4142                                 __clear_bit(descs->ndescs,
4143                                             array_info->set_mask);
4144                         }
4145                 } else if (array_info) {
4146                         /* Exclude open drain or open source from fast output */
4147                         if (gpiochip_line_is_open_drain(gc, descs->ndescs) ||
4148                             gpiochip_line_is_open_source(gc, descs->ndescs))
4149                                 __clear_bit(descs->ndescs,
4150                                             array_info->set_mask);
4151                         /* Identify 'fast' pins which require invertion */
4152                         if (gpiod_is_active_low(desc))
4153                                 __set_bit(descs->ndescs,
4154                                           array_info->invert_mask);
4155                 }
4156
4157                 descs->ndescs++;
4158         }
4159         if (array_info)
4160                 dev_dbg(dev,
4161                         "GPIO array info: chip=%s, size=%d, get_mask=%lx, set_mask=%lx, invert_mask=%lx\n",
4162                         array_info->chip->label, array_info->size,
4163                         *array_info->get_mask, *array_info->set_mask,
4164                         *array_info->invert_mask);
4165         return descs;
4166 }
4167 EXPORT_SYMBOL_GPL(gpiod_get_array);
4168
4169 /**
4170  * gpiod_get_array_optional - obtain multiple GPIOs from a multi-index GPIO
4171  *                            function
4172  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
4173  * @con_id:     function within the GPIO consumer
4174  * @flags:      optional GPIO initialization flags
4175  *
4176  * This is equivalent to gpiod_get_array(), except that when no GPIO was
4177  * assigned to the requested function it will return NULL.
4178  */
4179 struct gpio_descs *__must_check gpiod_get_array_optional(struct device *dev,
4180                                                         const char *con_id,
4181                                                         enum gpiod_flags flags)
4182 {
4183         struct gpio_descs *descs;
4184
4185         descs = gpiod_get_array(dev, con_id, flags);
4186         if (gpiod_not_found(descs))
4187                 return NULL;
4188
4189         return descs;
4190 }
4191 EXPORT_SYMBOL_GPL(gpiod_get_array_optional);
4192
4193 /**
4194  * gpiod_put - dispose of a GPIO descriptor
4195  * @desc:       GPIO descriptor to dispose of
4196  *
4197  * No descriptor can be used after gpiod_put() has been called on it.
4198  */
4199 void gpiod_put(struct gpio_desc *desc)
4200 {
4201         if (desc)
4202                 gpiod_free(desc);
4203 }
4204 EXPORT_SYMBOL_GPL(gpiod_put);
4205
4206 /**
4207  * gpiod_put_array - dispose of multiple GPIO descriptors
4208  * @descs:      struct gpio_descs containing an array of descriptors
4209  */
4210 void gpiod_put_array(struct gpio_descs *descs)
4211 {
4212         unsigned int i;
4213
4214         for (i = 0; i < descs->ndescs; i++)
4215                 gpiod_put(descs->desc[i]);
4216
4217         kfree(descs);
4218 }
4219 EXPORT_SYMBOL_GPL(gpiod_put_array);
4220
4221
4222 static int gpio_bus_match(struct device *dev, struct device_driver *drv)
4223 {
4224         struct fwnode_handle *fwnode = dev_fwnode(dev);
4225
4226         /*
4227          * Only match if the fwnode doesn't already have a proper struct device
4228          * created for it.
4229          */
4230         if (fwnode && fwnode->dev != dev)
4231                 return 0;
4232         return 1;
4233 }
4234
4235 static int gpio_stub_drv_probe(struct device *dev)
4236 {
4237         /*
4238          * The DT node of some GPIO chips have a "compatible" property, but
4239          * never have a struct device added and probed by a driver to register
4240          * the GPIO chip with gpiolib. In such cases, fw_devlink=on will cause
4241          * the consumers of the GPIO chip to get probe deferred forever because
4242          * they will be waiting for a device associated with the GPIO chip
4243          * firmware node to get added and bound to a driver.
4244          *
4245          * To allow these consumers to probe, we associate the struct
4246          * gpio_device of the GPIO chip with the firmware node and then simply
4247          * bind it to this stub driver.
4248          */
4249         return 0;
4250 }
4251
4252 static struct device_driver gpio_stub_drv = {
4253         .name = "gpio_stub_drv",
4254         .bus = &gpio_bus_type,
4255         .probe = gpio_stub_drv_probe,
4256 };
4257
4258 static int __init gpiolib_dev_init(void)
4259 {
4260         int ret;
4261
4262         /* Register GPIO sysfs bus */
4263         ret = bus_register(&gpio_bus_type);
4264         if (ret < 0) {
4265                 pr_err("gpiolib: could not register GPIO bus type\n");
4266                 return ret;
4267         }
4268
4269         ret = driver_register(&gpio_stub_drv);
4270         if (ret < 0) {
4271                 pr_err("gpiolib: could not register GPIO stub driver\n");
4272                 bus_unregister(&gpio_bus_type);
4273                 return ret;
4274         }
4275
4276         ret = alloc_chrdev_region(&gpio_devt, 0, GPIO_DEV_MAX, GPIOCHIP_NAME);
4277         if (ret < 0) {
4278                 pr_err("gpiolib: failed to allocate char dev region\n");
4279                 driver_unregister(&gpio_stub_drv);
4280                 bus_unregister(&gpio_bus_type);
4281                 return ret;
4282         }
4283
4284         gpiolib_initialized = true;
4285         gpiochip_setup_devs();
4286
4287 #if IS_ENABLED(CONFIG_OF_DYNAMIC) && IS_ENABLED(CONFIG_OF_GPIO)
4288         WARN_ON(of_reconfig_notifier_register(&gpio_of_notifier));
4289 #endif /* CONFIG_OF_DYNAMIC && CONFIG_OF_GPIO */
4290
4291         return ret;
4292 }
4293 core_initcall(gpiolib_dev_init);
4294
4295 #ifdef CONFIG_DEBUG_FS
4296
4297 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_device *gdev)
4298 {
4299         unsigned                i;
4300         struct gpio_chip        *gc = gdev->chip;
4301         unsigned                gpio = gdev->base;
4302         struct gpio_desc        *gdesc = &gdev->descs[0];
4303         bool                    is_out;
4304         bool                    is_irq;
4305         bool                    active_low;
4306
4307         for (i = 0; i < gdev->ngpio; i++, gpio++, gdesc++) {
4308                 if (!test_bit(FLAG_REQUESTED, &gdesc->flags)) {
4309                         if (gdesc->name) {
4310                                 seq_printf(s, " gpio-%-3d (%-20.20s)\n",
4311                                            gpio, gdesc->name);
4312                         }
4313                         continue;
4314                 }
4315
4316                 gpiod_get_direction(gdesc);
4317                 is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
4318                 is_irq = test_bit(FLAG_USED_AS_IRQ, &gdesc->flags);
4319                 active_low = test_bit(FLAG_ACTIVE_LOW, &gdesc->flags);
4320                 seq_printf(s, " gpio-%-3d (%-20.20s|%-20.20s) %s %s %s%s",
4321                         gpio, gdesc->name ? gdesc->name : "", gdesc->label,
4322                         is_out ? "out" : "in ",
4323                         gc->get ? (gc->get(gc, i) ? "hi" : "lo") : "?  ",
4324                         is_irq ? "IRQ " : "",
4325                         active_low ? "ACTIVE LOW" : "");
4326                 seq_printf(s, "\n");
4327         }
4328 }
4329
4330 static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos)
4331 {
4332         unsigned long flags;
4333         struct gpio_device *gdev = NULL;
4334         loff_t index = *pos;
4335
4336         s->private = "";
4337
4338         spin_lock_irqsave(&gpio_lock, flags);
4339         list_for_each_entry(gdev, &gpio_devices, list)
4340                 if (index-- == 0) {
4341                         spin_unlock_irqrestore(&gpio_lock, flags);
4342                         return gdev;
4343                 }
4344         spin_unlock_irqrestore(&gpio_lock, flags);
4345
4346         return NULL;
4347 }
4348
4349 static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos)
4350 {
4351         unsigned long flags;
4352         struct gpio_device *gdev = v;
4353         void *ret = NULL;
4354
4355         spin_lock_irqsave(&gpio_lock, flags);
4356         if (list_is_last(&gdev->list, &gpio_devices))
4357                 ret = NULL;
4358         else
4359                 ret = list_entry(gdev->list.next, struct gpio_device, list);
4360         spin_unlock_irqrestore(&gpio_lock, flags);
4361
4362         s->private = "\n";
4363         ++*pos;
4364
4365         return ret;
4366 }
4367
4368 static void gpiolib_seq_stop(struct seq_file *s, void *v)
4369 {
4370 }
4371
4372 static int gpiolib_seq_show(struct seq_file *s, void *v)
4373 {
4374         struct gpio_device *gdev = v;
4375         struct gpio_chip *gc = gdev->chip;
4376         struct device *parent;
4377
4378         if (!gc) {
4379                 seq_printf(s, "%s%s: (dangling chip)", (char *)s->private,
4380                            dev_name(&gdev->dev));
4381                 return 0;
4382         }
4383
4384         seq_printf(s, "%s%s: GPIOs %d-%d", (char *)s->private,
4385                    dev_name(&gdev->dev),
4386                    gdev->base, gdev->base + gdev->ngpio - 1);
4387         parent = gc->parent;
4388         if (parent)
4389                 seq_printf(s, ", parent: %s/%s",
4390                            parent->bus ? parent->bus->name : "no-bus",
4391                            dev_name(parent));
4392         if (gc->label)
4393                 seq_printf(s, ", %s", gc->label);
4394         if (gc->can_sleep)
4395                 seq_printf(s, ", can sleep");
4396         seq_printf(s, ":\n");
4397
4398         if (gc->dbg_show)
4399                 gc->dbg_show(s, gc);
4400         else
4401                 gpiolib_dbg_show(s, gdev);
4402
4403         return 0;
4404 }
4405
4406 static const struct seq_operations gpiolib_sops = {
4407         .start = gpiolib_seq_start,
4408         .next = gpiolib_seq_next,
4409         .stop = gpiolib_seq_stop,
4410         .show = gpiolib_seq_show,
4411 };
4412 DEFINE_SEQ_ATTRIBUTE(gpiolib);
4413
4414 static int __init gpiolib_debugfs_init(void)
4415 {
4416         /* /sys/kernel/debug/gpio */
4417         debugfs_create_file("gpio", 0444, NULL, NULL, &gpiolib_fops);
4418         return 0;
4419 }
4420 subsys_initcall(gpiolib_debugfs_init);
4421
4422 #endif  /* DEBUG_FS */