i2c: s3c2410: fix possible NULL pointer deref on read message after write
[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         if (offset >= gc->ngpio)
2008                 return NULL;
2009
2010         desc = gpiochip_get_desc(gc, offset);
2011         if (IS_ERR(desc))
2012                 return NULL;
2013
2014         if (test_bit(FLAG_REQUESTED, &desc->flags) == 0)
2015                 return NULL;
2016         return desc->label;
2017 }
2018 EXPORT_SYMBOL_GPL(gpiochip_is_requested);
2019
2020 /**
2021  * gpiochip_request_own_desc - Allow GPIO chip to request its own descriptor
2022  * @gc: GPIO chip
2023  * @hwnum: hardware number of the GPIO for which to request the descriptor
2024  * @label: label for the GPIO
2025  * @lflags: lookup flags for this GPIO or 0 if default, this can be used to
2026  * specify things like line inversion semantics with the machine flags
2027  * such as GPIO_OUT_LOW
2028  * @dflags: descriptor request flags for this GPIO or 0 if default, this
2029  * can be used to specify consumer semantics such as open drain
2030  *
2031  * Function allows GPIO chip drivers to request and use their own GPIO
2032  * descriptors via gpiolib API. Difference to gpiod_request() is that this
2033  * function will not increase reference count of the GPIO chip module. This
2034  * allows the GPIO chip module to be unloaded as needed (we assume that the
2035  * GPIO chip driver handles freeing the GPIOs it has requested).
2036  *
2037  * Returns:
2038  * A pointer to the GPIO descriptor, or an ERR_PTR()-encoded negative error
2039  * code on failure.
2040  */
2041 struct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *gc,
2042                                             unsigned int hwnum,
2043                                             const char *label,
2044                                             enum gpio_lookup_flags lflags,
2045                                             enum gpiod_flags dflags)
2046 {
2047         struct gpio_desc *desc = gpiochip_get_desc(gc, hwnum);
2048         int ret;
2049
2050         if (IS_ERR(desc)) {
2051                 chip_err(gc, "failed to get GPIO descriptor\n");
2052                 return desc;
2053         }
2054
2055         ret = gpiod_request_commit(desc, label);
2056         if (ret < 0)
2057                 return ERR_PTR(ret);
2058
2059         ret = gpiod_configure_flags(desc, label, lflags, dflags);
2060         if (ret) {
2061                 chip_err(gc, "setup of own GPIO %s failed\n", label);
2062                 gpiod_free_commit(desc);
2063                 return ERR_PTR(ret);
2064         }
2065
2066         return desc;
2067 }
2068 EXPORT_SYMBOL_GPL(gpiochip_request_own_desc);
2069
2070 /**
2071  * gpiochip_free_own_desc - Free GPIO requested by the chip driver
2072  * @desc: GPIO descriptor to free
2073  *
2074  * Function frees the given GPIO requested previously with
2075  * gpiochip_request_own_desc().
2076  */
2077 void gpiochip_free_own_desc(struct gpio_desc *desc)
2078 {
2079         if (desc)
2080                 gpiod_free_commit(desc);
2081 }
2082 EXPORT_SYMBOL_GPL(gpiochip_free_own_desc);
2083
2084 /*
2085  * Drivers MUST set GPIO direction before making get/set calls.  In
2086  * some cases this is done in early boot, before IRQs are enabled.
2087  *
2088  * As a rule these aren't called more than once (except for drivers
2089  * using the open-drain emulation idiom) so these are natural places
2090  * to accumulate extra debugging checks.  Note that we can't (yet)
2091  * rely on gpio_request() having been called beforehand.
2092  */
2093
2094 static int gpio_do_set_config(struct gpio_chip *gc, unsigned int offset,
2095                               unsigned long config)
2096 {
2097         if (!gc->set_config)
2098                 return -ENOTSUPP;
2099
2100         return gc->set_config(gc, offset, config);
2101 }
2102
2103 static int gpio_set_config_with_argument(struct gpio_desc *desc,
2104                                          enum pin_config_param mode,
2105                                          u32 argument)
2106 {
2107         struct gpio_chip *gc = desc->gdev->chip;
2108         unsigned long config;
2109
2110         config = pinconf_to_config_packed(mode, argument);
2111         return gpio_do_set_config(gc, gpio_chip_hwgpio(desc), config);
2112 }
2113
2114 static int gpio_set_config_with_argument_optional(struct gpio_desc *desc,
2115                                                   enum pin_config_param mode,
2116                                                   u32 argument)
2117 {
2118         struct device *dev = &desc->gdev->dev;
2119         int gpio = gpio_chip_hwgpio(desc);
2120         int ret;
2121
2122         ret = gpio_set_config_with_argument(desc, mode, argument);
2123         if (ret != -ENOTSUPP)
2124                 return ret;
2125
2126         switch (mode) {
2127         case PIN_CONFIG_PERSIST_STATE:
2128                 dev_dbg(dev, "Persistence not supported for GPIO %d\n", gpio);
2129                 break;
2130         default:
2131                 break;
2132         }
2133
2134         return 0;
2135 }
2136
2137 static int gpio_set_config(struct gpio_desc *desc, enum pin_config_param mode)
2138 {
2139         return gpio_set_config_with_argument(desc, mode, 0);
2140 }
2141
2142 static int gpio_set_bias(struct gpio_desc *desc)
2143 {
2144         enum pin_config_param bias;
2145         unsigned int arg;
2146
2147         if (test_bit(FLAG_BIAS_DISABLE, &desc->flags))
2148                 bias = PIN_CONFIG_BIAS_DISABLE;
2149         else if (test_bit(FLAG_PULL_UP, &desc->flags))
2150                 bias = PIN_CONFIG_BIAS_PULL_UP;
2151         else if (test_bit(FLAG_PULL_DOWN, &desc->flags))
2152                 bias = PIN_CONFIG_BIAS_PULL_DOWN;
2153         else
2154                 return 0;
2155
2156         switch (bias) {
2157         case PIN_CONFIG_BIAS_PULL_DOWN:
2158         case PIN_CONFIG_BIAS_PULL_UP:
2159                 arg = 1;
2160                 break;
2161
2162         default:
2163                 arg = 0;
2164                 break;
2165         }
2166
2167         return gpio_set_config_with_argument_optional(desc, bias, arg);
2168 }
2169
2170 int gpio_set_debounce_timeout(struct gpio_desc *desc, unsigned int debounce)
2171 {
2172         return gpio_set_config_with_argument_optional(desc,
2173                                                       PIN_CONFIG_INPUT_DEBOUNCE,
2174                                                       debounce);
2175 }
2176
2177 /**
2178  * gpiod_direction_input - set the GPIO direction to input
2179  * @desc:       GPIO to set to input
2180  *
2181  * Set the direction of the passed GPIO to input, such as gpiod_get_value() can
2182  * be called safely on it.
2183  *
2184  * Return 0 in case of success, else an error code.
2185  */
2186 int gpiod_direction_input(struct gpio_desc *desc)
2187 {
2188         struct gpio_chip        *gc;
2189         int                     ret = 0;
2190
2191         VALIDATE_DESC(desc);
2192         gc = desc->gdev->chip;
2193
2194         /*
2195          * It is legal to have no .get() and .direction_input() specified if
2196          * the chip is output-only, but you can't specify .direction_input()
2197          * and not support the .get() operation, that doesn't make sense.
2198          */
2199         if (!gc->get && gc->direction_input) {
2200                 gpiod_warn(desc,
2201                            "%s: missing get() but have direction_input()\n",
2202                            __func__);
2203                 return -EIO;
2204         }
2205
2206         /*
2207          * If we have a .direction_input() callback, things are simple,
2208          * just call it. Else we are some input-only chip so try to check the
2209          * direction (if .get_direction() is supported) else we silently
2210          * assume we are in input mode after this.
2211          */
2212         if (gc->direction_input) {
2213                 ret = gc->direction_input(gc, gpio_chip_hwgpio(desc));
2214         } else if (gc->get_direction &&
2215                   (gc->get_direction(gc, gpio_chip_hwgpio(desc)) != 1)) {
2216                 gpiod_warn(desc,
2217                            "%s: missing direction_input() operation and line is output\n",
2218                            __func__);
2219                 return -EIO;
2220         }
2221         if (ret == 0) {
2222                 clear_bit(FLAG_IS_OUT, &desc->flags);
2223                 ret = gpio_set_bias(desc);
2224         }
2225
2226         trace_gpio_direction(desc_to_gpio(desc), 1, ret);
2227
2228         return ret;
2229 }
2230 EXPORT_SYMBOL_GPL(gpiod_direction_input);
2231
2232 static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int value)
2233 {
2234         struct gpio_chip *gc = desc->gdev->chip;
2235         int val = !!value;
2236         int ret = 0;
2237
2238         /*
2239          * It's OK not to specify .direction_output() if the gpiochip is
2240          * output-only, but if there is then not even a .set() operation it
2241          * is pretty tricky to drive the output line.
2242          */
2243         if (!gc->set && !gc->direction_output) {
2244                 gpiod_warn(desc,
2245                            "%s: missing set() and direction_output() operations\n",
2246                            __func__);
2247                 return -EIO;
2248         }
2249
2250         if (gc->direction_output) {
2251                 ret = gc->direction_output(gc, gpio_chip_hwgpio(desc), val);
2252         } else {
2253                 /* Check that we are in output mode if we can */
2254                 if (gc->get_direction &&
2255                     gc->get_direction(gc, gpio_chip_hwgpio(desc))) {
2256                         gpiod_warn(desc,
2257                                 "%s: missing direction_output() operation\n",
2258                                 __func__);
2259                         return -EIO;
2260                 }
2261                 /*
2262                  * If we can't actively set the direction, we are some
2263                  * output-only chip, so just drive the output as desired.
2264                  */
2265                 gc->set(gc, gpio_chip_hwgpio(desc), val);
2266         }
2267
2268         if (!ret)
2269                 set_bit(FLAG_IS_OUT, &desc->flags);
2270         trace_gpio_value(desc_to_gpio(desc), 0, val);
2271         trace_gpio_direction(desc_to_gpio(desc), 0, ret);
2272         return ret;
2273 }
2274
2275 /**
2276  * gpiod_direction_output_raw - set the GPIO direction to output
2277  * @desc:       GPIO to set to output
2278  * @value:      initial output value of the GPIO
2279  *
2280  * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
2281  * be called safely on it. The initial value of the output must be specified
2282  * as raw value on the physical line without regard for the ACTIVE_LOW status.
2283  *
2284  * Return 0 in case of success, else an error code.
2285  */
2286 int gpiod_direction_output_raw(struct gpio_desc *desc, int value)
2287 {
2288         VALIDATE_DESC(desc);
2289         return gpiod_direction_output_raw_commit(desc, value);
2290 }
2291 EXPORT_SYMBOL_GPL(gpiod_direction_output_raw);
2292
2293 /**
2294  * gpiod_direction_output - set the GPIO direction to output
2295  * @desc:       GPIO to set to output
2296  * @value:      initial output value of the GPIO
2297  *
2298  * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
2299  * be called safely on it. The initial value of the output must be specified
2300  * as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
2301  * account.
2302  *
2303  * Return 0 in case of success, else an error code.
2304  */
2305 int gpiod_direction_output(struct gpio_desc *desc, int value)
2306 {
2307         int ret;
2308
2309         VALIDATE_DESC(desc);
2310         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2311                 value = !value;
2312         else
2313                 value = !!value;
2314
2315         /* GPIOs used for enabled IRQs shall not be set as output */
2316         if (test_bit(FLAG_USED_AS_IRQ, &desc->flags) &&
2317             test_bit(FLAG_IRQ_IS_ENABLED, &desc->flags)) {
2318                 gpiod_err(desc,
2319                           "%s: tried to set a GPIO tied to an IRQ as output\n",
2320                           __func__);
2321                 return -EIO;
2322         }
2323
2324         if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) {
2325                 /* First see if we can enable open drain in hardware */
2326                 ret = gpio_set_config(desc, PIN_CONFIG_DRIVE_OPEN_DRAIN);
2327                 if (!ret)
2328                         goto set_output_value;
2329                 /* Emulate open drain by not actively driving the line high */
2330                 if (value) {
2331                         ret = gpiod_direction_input(desc);
2332                         goto set_output_flag;
2333                 }
2334         }
2335         else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) {
2336                 ret = gpio_set_config(desc, PIN_CONFIG_DRIVE_OPEN_SOURCE);
2337                 if (!ret)
2338                         goto set_output_value;
2339                 /* Emulate open source by not actively driving the line low */
2340                 if (!value) {
2341                         ret = gpiod_direction_input(desc);
2342                         goto set_output_flag;
2343                 }
2344         } else {
2345                 gpio_set_config(desc, PIN_CONFIG_DRIVE_PUSH_PULL);
2346         }
2347
2348 set_output_value:
2349         ret = gpio_set_bias(desc);
2350         if (ret)
2351                 return ret;
2352         return gpiod_direction_output_raw_commit(desc, value);
2353
2354 set_output_flag:
2355         /*
2356          * When emulating open-source or open-drain functionalities by not
2357          * actively driving the line (setting mode to input) we still need to
2358          * set the IS_OUT flag or otherwise we won't be able to set the line
2359          * value anymore.
2360          */
2361         if (ret == 0)
2362                 set_bit(FLAG_IS_OUT, &desc->flags);
2363         return ret;
2364 }
2365 EXPORT_SYMBOL_GPL(gpiod_direction_output);
2366
2367 /**
2368  * gpiod_set_config - sets @config for a GPIO
2369  * @desc: descriptor of the GPIO for which to set the configuration
2370  * @config: Same packed config format as generic pinconf
2371  *
2372  * Returns:
2373  * 0 on success, %-ENOTSUPP if the controller doesn't support setting the
2374  * configuration.
2375  */
2376 int gpiod_set_config(struct gpio_desc *desc, unsigned long config)
2377 {
2378         struct gpio_chip *gc;
2379
2380         VALIDATE_DESC(desc);
2381         gc = desc->gdev->chip;
2382
2383         return gpio_do_set_config(gc, gpio_chip_hwgpio(desc), config);
2384 }
2385 EXPORT_SYMBOL_GPL(gpiod_set_config);
2386
2387 /**
2388  * gpiod_set_debounce - sets @debounce time for a GPIO
2389  * @desc: descriptor of the GPIO for which to set debounce time
2390  * @debounce: debounce time in microseconds
2391  *
2392  * Returns:
2393  * 0 on success, %-ENOTSUPP if the controller doesn't support setting the
2394  * debounce time.
2395  */
2396 int gpiod_set_debounce(struct gpio_desc *desc, unsigned int debounce)
2397 {
2398         unsigned long config;
2399
2400         config = pinconf_to_config_packed(PIN_CONFIG_INPUT_DEBOUNCE, debounce);
2401         return gpiod_set_config(desc, config);
2402 }
2403 EXPORT_SYMBOL_GPL(gpiod_set_debounce);
2404
2405 /**
2406  * gpiod_set_transitory - Lose or retain GPIO state on suspend or reset
2407  * @desc: descriptor of the GPIO for which to configure persistence
2408  * @transitory: True to lose state on suspend or reset, false for persistence
2409  *
2410  * Returns:
2411  * 0 on success, otherwise a negative error code.
2412  */
2413 int gpiod_set_transitory(struct gpio_desc *desc, bool transitory)
2414 {
2415         VALIDATE_DESC(desc);
2416         /*
2417          * Handle FLAG_TRANSITORY first, enabling queries to gpiolib for
2418          * persistence state.
2419          */
2420         assign_bit(FLAG_TRANSITORY, &desc->flags, transitory);
2421
2422         /* If the driver supports it, set the persistence state now */
2423         return gpio_set_config_with_argument_optional(desc,
2424                                                       PIN_CONFIG_PERSIST_STATE,
2425                                                       !transitory);
2426 }
2427 EXPORT_SYMBOL_GPL(gpiod_set_transitory);
2428
2429 /**
2430  * gpiod_is_active_low - test whether a GPIO is active-low or not
2431  * @desc: the gpio descriptor to test
2432  *
2433  * Returns 1 if the GPIO is active-low, 0 otherwise.
2434  */
2435 int gpiod_is_active_low(const struct gpio_desc *desc)
2436 {
2437         VALIDATE_DESC(desc);
2438         return test_bit(FLAG_ACTIVE_LOW, &desc->flags);
2439 }
2440 EXPORT_SYMBOL_GPL(gpiod_is_active_low);
2441
2442 /**
2443  * gpiod_toggle_active_low - toggle whether a GPIO is active-low or not
2444  * @desc: the gpio descriptor to change
2445  */
2446 void gpiod_toggle_active_low(struct gpio_desc *desc)
2447 {
2448         VALIDATE_DESC_VOID(desc);
2449         change_bit(FLAG_ACTIVE_LOW, &desc->flags);
2450 }
2451 EXPORT_SYMBOL_GPL(gpiod_toggle_active_low);
2452
2453 /* I/O calls are only valid after configuration completed; the relevant
2454  * "is this a valid GPIO" error checks should already have been done.
2455  *
2456  * "Get" operations are often inlinable as reading a pin value register,
2457  * and masking the relevant bit in that register.
2458  *
2459  * When "set" operations are inlinable, they involve writing that mask to
2460  * one register to set a low value, or a different register to set it high.
2461  * Otherwise locking is needed, so there may be little value to inlining.
2462  *
2463  *------------------------------------------------------------------------
2464  *
2465  * IMPORTANT!!!  The hot paths -- get/set value -- assume that callers
2466  * have requested the GPIO.  That can include implicit requesting by
2467  * a direction setting call.  Marking a gpio as requested locks its chip
2468  * in memory, guaranteeing that these table lookups need no more locking
2469  * and that gpiochip_remove() will fail.
2470  *
2471  * REVISIT when debugging, consider adding some instrumentation to ensure
2472  * that the GPIO was actually requested.
2473  */
2474
2475 static int gpiod_get_raw_value_commit(const struct gpio_desc *desc)
2476 {
2477         struct gpio_chip        *gc;
2478         int offset;
2479         int value;
2480
2481         gc = desc->gdev->chip;
2482         offset = gpio_chip_hwgpio(desc);
2483         value = gc->get ? gc->get(gc, offset) : -EIO;
2484         value = value < 0 ? value : !!value;
2485         trace_gpio_value(desc_to_gpio(desc), 1, value);
2486         return value;
2487 }
2488
2489 static int gpio_chip_get_multiple(struct gpio_chip *gc,
2490                                   unsigned long *mask, unsigned long *bits)
2491 {
2492         if (gc->get_multiple) {
2493                 return gc->get_multiple(gc, mask, bits);
2494         } else if (gc->get) {
2495                 int i, value;
2496
2497                 for_each_set_bit(i, mask, gc->ngpio) {
2498                         value = gc->get(gc, i);
2499                         if (value < 0)
2500                                 return value;
2501                         __assign_bit(i, bits, value);
2502                 }
2503                 return 0;
2504         }
2505         return -EIO;
2506 }
2507
2508 int gpiod_get_array_value_complex(bool raw, bool can_sleep,
2509                                   unsigned int array_size,
2510                                   struct gpio_desc **desc_array,
2511                                   struct gpio_array *array_info,
2512                                   unsigned long *value_bitmap)
2513 {
2514         int ret, i = 0;
2515
2516         /*
2517          * Validate array_info against desc_array and its size.
2518          * It should immediately follow desc_array if both
2519          * have been obtained from the same gpiod_get_array() call.
2520          */
2521         if (array_info && array_info->desc == desc_array &&
2522             array_size <= array_info->size &&
2523             (void *)array_info == desc_array + array_info->size) {
2524                 if (!can_sleep)
2525                         WARN_ON(array_info->chip->can_sleep);
2526
2527                 ret = gpio_chip_get_multiple(array_info->chip,
2528                                              array_info->get_mask,
2529                                              value_bitmap);
2530                 if (ret)
2531                         return ret;
2532
2533                 if (!raw && !bitmap_empty(array_info->invert_mask, array_size))
2534                         bitmap_xor(value_bitmap, value_bitmap,
2535                                    array_info->invert_mask, array_size);
2536
2537                 i = find_first_zero_bit(array_info->get_mask, array_size);
2538                 if (i == array_size)
2539                         return 0;
2540         } else {
2541                 array_info = NULL;
2542         }
2543
2544         while (i < array_size) {
2545                 struct gpio_chip *gc = desc_array[i]->gdev->chip;
2546                 unsigned long fastpath[2 * BITS_TO_LONGS(FASTPATH_NGPIO)];
2547                 unsigned long *mask, *bits;
2548                 int first, j;
2549
2550                 if (likely(gc->ngpio <= FASTPATH_NGPIO)) {
2551                         mask = fastpath;
2552                 } else {
2553                         mask = kmalloc_array(2 * BITS_TO_LONGS(gc->ngpio),
2554                                            sizeof(*mask),
2555                                            can_sleep ? GFP_KERNEL : GFP_ATOMIC);
2556                         if (!mask)
2557                                 return -ENOMEM;
2558                 }
2559
2560                 bits = mask + BITS_TO_LONGS(gc->ngpio);
2561                 bitmap_zero(mask, gc->ngpio);
2562
2563                 if (!can_sleep)
2564                         WARN_ON(gc->can_sleep);
2565
2566                 /* collect all inputs belonging to the same chip */
2567                 first = i;
2568                 do {
2569                         const struct gpio_desc *desc = desc_array[i];
2570                         int hwgpio = gpio_chip_hwgpio(desc);
2571
2572                         __set_bit(hwgpio, mask);
2573                         i++;
2574
2575                         if (array_info)
2576                                 i = find_next_zero_bit(array_info->get_mask,
2577                                                        array_size, i);
2578                 } while ((i < array_size) &&
2579                          (desc_array[i]->gdev->chip == gc));
2580
2581                 ret = gpio_chip_get_multiple(gc, mask, bits);
2582                 if (ret) {
2583                         if (mask != fastpath)
2584                                 kfree(mask);
2585                         return ret;
2586                 }
2587
2588                 for (j = first; j < i; ) {
2589                         const struct gpio_desc *desc = desc_array[j];
2590                         int hwgpio = gpio_chip_hwgpio(desc);
2591                         int value = test_bit(hwgpio, bits);
2592
2593                         if (!raw && test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2594                                 value = !value;
2595                         __assign_bit(j, value_bitmap, value);
2596                         trace_gpio_value(desc_to_gpio(desc), 1, value);
2597                         j++;
2598
2599                         if (array_info)
2600                                 j = find_next_zero_bit(array_info->get_mask, i,
2601                                                        j);
2602                 }
2603
2604                 if (mask != fastpath)
2605                         kfree(mask);
2606         }
2607         return 0;
2608 }
2609
2610 /**
2611  * gpiod_get_raw_value() - return a gpio's raw value
2612  * @desc: gpio whose value will be returned
2613  *
2614  * Return the GPIO's raw value, i.e. the value of the physical line disregarding
2615  * its ACTIVE_LOW status, or negative errno on failure.
2616  *
2617  * This function can be called from contexts where we cannot sleep, and will
2618  * complain if the GPIO chip functions potentially sleep.
2619  */
2620 int gpiod_get_raw_value(const struct gpio_desc *desc)
2621 {
2622         VALIDATE_DESC(desc);
2623         /* Should be using gpiod_get_raw_value_cansleep() */
2624         WARN_ON(desc->gdev->chip->can_sleep);
2625         return gpiod_get_raw_value_commit(desc);
2626 }
2627 EXPORT_SYMBOL_GPL(gpiod_get_raw_value);
2628
2629 /**
2630  * gpiod_get_value() - return a gpio's value
2631  * @desc: gpio whose value will be returned
2632  *
2633  * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into
2634  * account, or negative errno on failure.
2635  *
2636  * This function can be called from contexts where we cannot sleep, and will
2637  * complain if the GPIO chip functions potentially sleep.
2638  */
2639 int gpiod_get_value(const struct gpio_desc *desc)
2640 {
2641         int value;
2642
2643         VALIDATE_DESC(desc);
2644         /* Should be using gpiod_get_value_cansleep() */
2645         WARN_ON(desc->gdev->chip->can_sleep);
2646
2647         value = gpiod_get_raw_value_commit(desc);
2648         if (value < 0)
2649                 return value;
2650
2651         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2652                 value = !value;
2653
2654         return value;
2655 }
2656 EXPORT_SYMBOL_GPL(gpiod_get_value);
2657
2658 /**
2659  * gpiod_get_raw_array_value() - read raw values from an array of GPIOs
2660  * @array_size: number of elements in the descriptor array / value bitmap
2661  * @desc_array: array of GPIO descriptors whose values will be read
2662  * @array_info: information on applicability of fast bitmap processing path
2663  * @value_bitmap: bitmap to store the read values
2664  *
2665  * Read the raw values of the GPIOs, i.e. the values of the physical lines
2666  * without regard for their ACTIVE_LOW status.  Return 0 in case of success,
2667  * else an error code.
2668  *
2669  * This function can be called from contexts where we cannot sleep,
2670  * and it will complain if the GPIO chip functions potentially sleep.
2671  */
2672 int gpiod_get_raw_array_value(unsigned int array_size,
2673                               struct gpio_desc **desc_array,
2674                               struct gpio_array *array_info,
2675                               unsigned long *value_bitmap)
2676 {
2677         if (!desc_array)
2678                 return -EINVAL;
2679         return gpiod_get_array_value_complex(true, false, array_size,
2680                                              desc_array, array_info,
2681                                              value_bitmap);
2682 }
2683 EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value);
2684
2685 /**
2686  * gpiod_get_array_value() - read values from an array of GPIOs
2687  * @array_size: number of elements in the descriptor array / value bitmap
2688  * @desc_array: array of GPIO descriptors whose values will be read
2689  * @array_info: information on applicability of fast bitmap processing path
2690  * @value_bitmap: bitmap to store the read values
2691  *
2692  * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
2693  * into account.  Return 0 in case of success, else an error code.
2694  *
2695  * This function can be called from contexts where we cannot sleep,
2696  * and it will complain if the GPIO chip functions potentially sleep.
2697  */
2698 int gpiod_get_array_value(unsigned int array_size,
2699                           struct gpio_desc **desc_array,
2700                           struct gpio_array *array_info,
2701                           unsigned long *value_bitmap)
2702 {
2703         if (!desc_array)
2704                 return -EINVAL;
2705         return gpiod_get_array_value_complex(false, false, array_size,
2706                                              desc_array, array_info,
2707                                              value_bitmap);
2708 }
2709 EXPORT_SYMBOL_GPL(gpiod_get_array_value);
2710
2711 /*
2712  *  gpio_set_open_drain_value_commit() - Set the open drain gpio's value.
2713  * @desc: gpio descriptor whose state need to be set.
2714  * @value: Non-zero for setting it HIGH otherwise it will set to LOW.
2715  */
2716 static void gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool value)
2717 {
2718         int ret = 0;
2719         struct gpio_chip *gc = desc->gdev->chip;
2720         int offset = gpio_chip_hwgpio(desc);
2721
2722         if (value) {
2723                 ret = gc->direction_input(gc, offset);
2724         } else {
2725                 ret = gc->direction_output(gc, offset, 0);
2726                 if (!ret)
2727                         set_bit(FLAG_IS_OUT, &desc->flags);
2728         }
2729         trace_gpio_direction(desc_to_gpio(desc), value, ret);
2730         if (ret < 0)
2731                 gpiod_err(desc,
2732                           "%s: Error in set_value for open drain err %d\n",
2733                           __func__, ret);
2734 }
2735
2736 /*
2737  *  _gpio_set_open_source_value() - Set the open source gpio's value.
2738  * @desc: gpio descriptor whose state need to be set.
2739  * @value: Non-zero for setting it HIGH otherwise it will set to LOW.
2740  */
2741 static void gpio_set_open_source_value_commit(struct gpio_desc *desc, bool value)
2742 {
2743         int ret = 0;
2744         struct gpio_chip *gc = desc->gdev->chip;
2745         int offset = gpio_chip_hwgpio(desc);
2746
2747         if (value) {
2748                 ret = gc->direction_output(gc, offset, 1);
2749                 if (!ret)
2750                         set_bit(FLAG_IS_OUT, &desc->flags);
2751         } else {
2752                 ret = gc->direction_input(gc, offset);
2753         }
2754         trace_gpio_direction(desc_to_gpio(desc), !value, ret);
2755         if (ret < 0)
2756                 gpiod_err(desc,
2757                           "%s: Error in set_value for open source err %d\n",
2758                           __func__, ret);
2759 }
2760
2761 static void gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value)
2762 {
2763         struct gpio_chip        *gc;
2764
2765         gc = desc->gdev->chip;
2766         trace_gpio_value(desc_to_gpio(desc), 0, value);
2767         gc->set(gc, gpio_chip_hwgpio(desc), value);
2768 }
2769
2770 /*
2771  * set multiple outputs on the same chip;
2772  * use the chip's set_multiple function if available;
2773  * otherwise set the outputs sequentially;
2774  * @chip: the GPIO chip we operate on
2775  * @mask: bit mask array; one bit per output; BITS_PER_LONG bits per word
2776  *        defines which outputs are to be changed
2777  * @bits: bit value array; one bit per output; BITS_PER_LONG bits per word
2778  *        defines the values the outputs specified by mask are to be set to
2779  */
2780 static void gpio_chip_set_multiple(struct gpio_chip *gc,
2781                                    unsigned long *mask, unsigned long *bits)
2782 {
2783         if (gc->set_multiple) {
2784                 gc->set_multiple(gc, mask, bits);
2785         } else {
2786                 unsigned int i;
2787
2788                 /* set outputs if the corresponding mask bit is set */
2789                 for_each_set_bit(i, mask, gc->ngpio)
2790                         gc->set(gc, i, test_bit(i, bits));
2791         }
2792 }
2793
2794 int gpiod_set_array_value_complex(bool raw, bool can_sleep,
2795                                   unsigned int array_size,
2796                                   struct gpio_desc **desc_array,
2797                                   struct gpio_array *array_info,
2798                                   unsigned long *value_bitmap)
2799 {
2800         int i = 0;
2801
2802         /*
2803          * Validate array_info against desc_array and its size.
2804          * It should immediately follow desc_array if both
2805          * have been obtained from the same gpiod_get_array() call.
2806          */
2807         if (array_info && array_info->desc == desc_array &&
2808             array_size <= array_info->size &&
2809             (void *)array_info == desc_array + array_info->size) {
2810                 if (!can_sleep)
2811                         WARN_ON(array_info->chip->can_sleep);
2812
2813                 if (!raw && !bitmap_empty(array_info->invert_mask, array_size))
2814                         bitmap_xor(value_bitmap, value_bitmap,
2815                                    array_info->invert_mask, array_size);
2816
2817                 gpio_chip_set_multiple(array_info->chip, array_info->set_mask,
2818                                        value_bitmap);
2819
2820                 i = find_first_zero_bit(array_info->set_mask, array_size);
2821                 if (i == array_size)
2822                         return 0;
2823         } else {
2824                 array_info = NULL;
2825         }
2826
2827         while (i < array_size) {
2828                 struct gpio_chip *gc = desc_array[i]->gdev->chip;
2829                 unsigned long fastpath[2 * BITS_TO_LONGS(FASTPATH_NGPIO)];
2830                 unsigned long *mask, *bits;
2831                 int count = 0;
2832
2833                 if (likely(gc->ngpio <= FASTPATH_NGPIO)) {
2834                         mask = fastpath;
2835                 } else {
2836                         mask = kmalloc_array(2 * BITS_TO_LONGS(gc->ngpio),
2837                                            sizeof(*mask),
2838                                            can_sleep ? GFP_KERNEL : GFP_ATOMIC);
2839                         if (!mask)
2840                                 return -ENOMEM;
2841                 }
2842
2843                 bits = mask + BITS_TO_LONGS(gc->ngpio);
2844                 bitmap_zero(mask, gc->ngpio);
2845
2846                 if (!can_sleep)
2847                         WARN_ON(gc->can_sleep);
2848
2849                 do {
2850                         struct gpio_desc *desc = desc_array[i];
2851                         int hwgpio = gpio_chip_hwgpio(desc);
2852                         int value = test_bit(i, value_bitmap);
2853
2854                         /*
2855                          * Pins applicable for fast input but not for
2856                          * fast output processing may have been already
2857                          * inverted inside the fast path, skip them.
2858                          */
2859                         if (!raw && !(array_info &&
2860                             test_bit(i, array_info->invert_mask)) &&
2861                             test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2862                                 value = !value;
2863                         trace_gpio_value(desc_to_gpio(desc), 0, value);
2864                         /*
2865                          * collect all normal outputs belonging to the same chip
2866                          * open drain and open source outputs are set individually
2867                          */
2868                         if (test_bit(FLAG_OPEN_DRAIN, &desc->flags) && !raw) {
2869                                 gpio_set_open_drain_value_commit(desc, value);
2870                         } else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags) && !raw) {
2871                                 gpio_set_open_source_value_commit(desc, value);
2872                         } else {
2873                                 __set_bit(hwgpio, mask);
2874                                 __assign_bit(hwgpio, bits, value);
2875                                 count++;
2876                         }
2877                         i++;
2878
2879                         if (array_info)
2880                                 i = find_next_zero_bit(array_info->set_mask,
2881                                                        array_size, i);
2882                 } while ((i < array_size) &&
2883                          (desc_array[i]->gdev->chip == gc));
2884                 /* push collected bits to outputs */
2885                 if (count != 0)
2886                         gpio_chip_set_multiple(gc, mask, bits);
2887
2888                 if (mask != fastpath)
2889                         kfree(mask);
2890         }
2891         return 0;
2892 }
2893
2894 /**
2895  * gpiod_set_raw_value() - assign a gpio's raw value
2896  * @desc: gpio whose value will be assigned
2897  * @value: value to assign
2898  *
2899  * Set the raw value of the GPIO, i.e. the value of its physical line without
2900  * regard for its ACTIVE_LOW status.
2901  *
2902  * This function can be called from contexts where we cannot sleep, and will
2903  * complain if the GPIO chip functions potentially sleep.
2904  */
2905 void gpiod_set_raw_value(struct gpio_desc *desc, int value)
2906 {
2907         VALIDATE_DESC_VOID(desc);
2908         /* Should be using gpiod_set_raw_value_cansleep() */
2909         WARN_ON(desc->gdev->chip->can_sleep);
2910         gpiod_set_raw_value_commit(desc, value);
2911 }
2912 EXPORT_SYMBOL_GPL(gpiod_set_raw_value);
2913
2914 /**
2915  * gpiod_set_value_nocheck() - set a GPIO line value without checking
2916  * @desc: the descriptor to set the value on
2917  * @value: value to set
2918  *
2919  * This sets the value of a GPIO line backing a descriptor, applying
2920  * different semantic quirks like active low and open drain/source
2921  * handling.
2922  */
2923 static void gpiod_set_value_nocheck(struct gpio_desc *desc, int value)
2924 {
2925         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2926                 value = !value;
2927         if (test_bit(FLAG_OPEN_DRAIN, &desc->flags))
2928                 gpio_set_open_drain_value_commit(desc, value);
2929         else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags))
2930                 gpio_set_open_source_value_commit(desc, value);
2931         else
2932                 gpiod_set_raw_value_commit(desc, value);
2933 }
2934
2935 /**
2936  * gpiod_set_value() - assign a gpio's value
2937  * @desc: gpio whose value will be assigned
2938  * @value: value to assign
2939  *
2940  * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW,
2941  * OPEN_DRAIN and OPEN_SOURCE flags into account.
2942  *
2943  * This function can be called from contexts where we cannot sleep, and will
2944  * complain if the GPIO chip functions potentially sleep.
2945  */
2946 void gpiod_set_value(struct gpio_desc *desc, int value)
2947 {
2948         VALIDATE_DESC_VOID(desc);
2949         /* Should be using gpiod_set_value_cansleep() */
2950         WARN_ON(desc->gdev->chip->can_sleep);
2951         gpiod_set_value_nocheck(desc, value);
2952 }
2953 EXPORT_SYMBOL_GPL(gpiod_set_value);
2954
2955 /**
2956  * gpiod_set_raw_array_value() - assign values to an array of GPIOs
2957  * @array_size: number of elements in the descriptor array / value bitmap
2958  * @desc_array: array of GPIO descriptors whose values will be assigned
2959  * @array_info: information on applicability of fast bitmap processing path
2960  * @value_bitmap: bitmap of values to assign
2961  *
2962  * Set the raw values of the GPIOs, i.e. the values of the physical lines
2963  * without regard for their ACTIVE_LOW status.
2964  *
2965  * This function can be called from contexts where we cannot sleep, and will
2966  * complain if the GPIO chip functions potentially sleep.
2967  */
2968 int gpiod_set_raw_array_value(unsigned int array_size,
2969                               struct gpio_desc **desc_array,
2970                               struct gpio_array *array_info,
2971                               unsigned long *value_bitmap)
2972 {
2973         if (!desc_array)
2974                 return -EINVAL;
2975         return gpiod_set_array_value_complex(true, false, array_size,
2976                                         desc_array, array_info, value_bitmap);
2977 }
2978 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value);
2979
2980 /**
2981  * gpiod_set_array_value() - assign values to an array of GPIOs
2982  * @array_size: number of elements in the descriptor array / value bitmap
2983  * @desc_array: array of GPIO descriptors whose values will be assigned
2984  * @array_info: information on applicability of fast bitmap processing path
2985  * @value_bitmap: bitmap of values to assign
2986  *
2987  * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
2988  * into account.
2989  *
2990  * This function can be called from contexts where we cannot sleep, and will
2991  * complain if the GPIO chip functions potentially sleep.
2992  */
2993 int gpiod_set_array_value(unsigned int array_size,
2994                           struct gpio_desc **desc_array,
2995                           struct gpio_array *array_info,
2996                           unsigned long *value_bitmap)
2997 {
2998         if (!desc_array)
2999                 return -EINVAL;
3000         return gpiod_set_array_value_complex(false, false, array_size,
3001                                              desc_array, array_info,
3002                                              value_bitmap);
3003 }
3004 EXPORT_SYMBOL_GPL(gpiod_set_array_value);
3005
3006 /**
3007  * gpiod_cansleep() - report whether gpio value access may sleep
3008  * @desc: gpio to check
3009  *
3010  */
3011 int gpiod_cansleep(const struct gpio_desc *desc)
3012 {
3013         VALIDATE_DESC(desc);
3014         return desc->gdev->chip->can_sleep;
3015 }
3016 EXPORT_SYMBOL_GPL(gpiod_cansleep);
3017
3018 /**
3019  * gpiod_set_consumer_name() - set the consumer name for the descriptor
3020  * @desc: gpio to set the consumer name on
3021  * @name: the new consumer name
3022  */
3023 int gpiod_set_consumer_name(struct gpio_desc *desc, const char *name)
3024 {
3025         VALIDATE_DESC(desc);
3026         if (name) {
3027                 name = kstrdup_const(name, GFP_KERNEL);
3028                 if (!name)
3029                         return -ENOMEM;
3030         }
3031
3032         kfree_const(desc->label);
3033         desc_set_label(desc, name);
3034
3035         return 0;
3036 }
3037 EXPORT_SYMBOL_GPL(gpiod_set_consumer_name);
3038
3039 /**
3040  * gpiod_to_irq() - return the IRQ corresponding to a GPIO
3041  * @desc: gpio whose IRQ will be returned (already requested)
3042  *
3043  * Return the IRQ corresponding to the passed GPIO, or an error code in case of
3044  * error.
3045  */
3046 int gpiod_to_irq(const struct gpio_desc *desc)
3047 {
3048         struct gpio_chip *gc;
3049         int offset;
3050
3051         /*
3052          * Cannot VALIDATE_DESC() here as gpiod_to_irq() consumer semantics
3053          * requires this function to not return zero on an invalid descriptor
3054          * but rather a negative error number.
3055          */
3056         if (!desc || IS_ERR(desc) || !desc->gdev || !desc->gdev->chip)
3057                 return -EINVAL;
3058
3059         gc = desc->gdev->chip;
3060         offset = gpio_chip_hwgpio(desc);
3061         if (gc->to_irq) {
3062                 int retirq = gc->to_irq(gc, offset);
3063
3064                 /* Zero means NO_IRQ */
3065                 if (!retirq)
3066                         return -ENXIO;
3067
3068                 return retirq;
3069         }
3070         return -ENXIO;
3071 }
3072 EXPORT_SYMBOL_GPL(gpiod_to_irq);
3073
3074 /**
3075  * gpiochip_lock_as_irq() - lock a GPIO to be used as IRQ
3076  * @gc: the chip the GPIO to lock belongs to
3077  * @offset: the offset of the GPIO to lock as IRQ
3078  *
3079  * This is used directly by GPIO drivers that want to lock down
3080  * a certain GPIO line to be used for IRQs.
3081  */
3082 int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset)
3083 {
3084         struct gpio_desc *desc;
3085
3086         desc = gpiochip_get_desc(gc, offset);
3087         if (IS_ERR(desc))
3088                 return PTR_ERR(desc);
3089
3090         /*
3091          * If it's fast: flush the direction setting if something changed
3092          * behind our back
3093          */
3094         if (!gc->can_sleep && gc->get_direction) {
3095                 int dir = gpiod_get_direction(desc);
3096
3097                 if (dir < 0) {
3098                         chip_err(gc, "%s: cannot get GPIO direction\n",
3099                                  __func__);
3100                         return dir;
3101                 }
3102         }
3103
3104         /* To be valid for IRQ the line needs to be input or open drain */
3105         if (test_bit(FLAG_IS_OUT, &desc->flags) &&
3106             !test_bit(FLAG_OPEN_DRAIN, &desc->flags)) {
3107                 chip_err(gc,
3108                          "%s: tried to flag a GPIO set as output for IRQ\n",
3109                          __func__);
3110                 return -EIO;
3111         }
3112
3113         set_bit(FLAG_USED_AS_IRQ, &desc->flags);
3114         set_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3115
3116         /*
3117          * If the consumer has not set up a label (such as when the
3118          * IRQ is referenced from .to_irq()) we set up a label here
3119          * so it is clear this is used as an interrupt.
3120          */
3121         if (!desc->label)
3122                 desc_set_label(desc, "interrupt");
3123
3124         return 0;
3125 }
3126 EXPORT_SYMBOL_GPL(gpiochip_lock_as_irq);
3127
3128 /**
3129  * gpiochip_unlock_as_irq() - unlock a GPIO used as IRQ
3130  * @gc: the chip the GPIO to lock belongs to
3131  * @offset: the offset of the GPIO to lock as IRQ
3132  *
3133  * This is used directly by GPIO drivers that want to indicate
3134  * that a certain GPIO is no longer used exclusively for IRQ.
3135  */
3136 void gpiochip_unlock_as_irq(struct gpio_chip *gc, unsigned int offset)
3137 {
3138         struct gpio_desc *desc;
3139
3140         desc = gpiochip_get_desc(gc, offset);
3141         if (IS_ERR(desc))
3142                 return;
3143
3144         clear_bit(FLAG_USED_AS_IRQ, &desc->flags);
3145         clear_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3146
3147         /* If we only had this marking, erase it */
3148         if (desc->label && !strcmp(desc->label, "interrupt"))
3149                 desc_set_label(desc, NULL);
3150 }
3151 EXPORT_SYMBOL_GPL(gpiochip_unlock_as_irq);
3152
3153 void gpiochip_disable_irq(struct gpio_chip *gc, unsigned int offset)
3154 {
3155         struct gpio_desc *desc = gpiochip_get_desc(gc, offset);
3156
3157         if (!IS_ERR(desc) &&
3158             !WARN_ON(!test_bit(FLAG_USED_AS_IRQ, &desc->flags)))
3159                 clear_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3160 }
3161 EXPORT_SYMBOL_GPL(gpiochip_disable_irq);
3162
3163 void gpiochip_enable_irq(struct gpio_chip *gc, unsigned int offset)
3164 {
3165         struct gpio_desc *desc = gpiochip_get_desc(gc, offset);
3166
3167         if (!IS_ERR(desc) &&
3168             !WARN_ON(!test_bit(FLAG_USED_AS_IRQ, &desc->flags))) {
3169                 /*
3170                  * We must not be output when using IRQ UNLESS we are
3171                  * open drain.
3172                  */
3173                 WARN_ON(test_bit(FLAG_IS_OUT, &desc->flags) &&
3174                         !test_bit(FLAG_OPEN_DRAIN, &desc->flags));
3175                 set_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3176         }
3177 }
3178 EXPORT_SYMBOL_GPL(gpiochip_enable_irq);
3179
3180 bool gpiochip_line_is_irq(struct gpio_chip *gc, unsigned int offset)
3181 {
3182         if (offset >= gc->ngpio)
3183                 return false;
3184
3185         return test_bit(FLAG_USED_AS_IRQ, &gc->gpiodev->descs[offset].flags);
3186 }
3187 EXPORT_SYMBOL_GPL(gpiochip_line_is_irq);
3188
3189 int gpiochip_reqres_irq(struct gpio_chip *gc, unsigned int offset)
3190 {
3191         int ret;
3192
3193         if (!try_module_get(gc->gpiodev->owner))
3194                 return -ENODEV;
3195
3196         ret = gpiochip_lock_as_irq(gc, offset);
3197         if (ret) {
3198                 chip_err(gc, "unable to lock HW IRQ %u for IRQ\n", offset);
3199                 module_put(gc->gpiodev->owner);
3200                 return ret;
3201         }
3202         return 0;
3203 }
3204 EXPORT_SYMBOL_GPL(gpiochip_reqres_irq);
3205
3206 void gpiochip_relres_irq(struct gpio_chip *gc, unsigned int offset)
3207 {
3208         gpiochip_unlock_as_irq(gc, offset);
3209         module_put(gc->gpiodev->owner);
3210 }
3211 EXPORT_SYMBOL_GPL(gpiochip_relres_irq);
3212
3213 bool gpiochip_line_is_open_drain(struct gpio_chip *gc, unsigned int offset)
3214 {
3215         if (offset >= gc->ngpio)
3216                 return false;
3217
3218         return test_bit(FLAG_OPEN_DRAIN, &gc->gpiodev->descs[offset].flags);
3219 }
3220 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_drain);
3221
3222 bool gpiochip_line_is_open_source(struct gpio_chip *gc, unsigned int offset)
3223 {
3224         if (offset >= gc->ngpio)
3225                 return false;
3226
3227         return test_bit(FLAG_OPEN_SOURCE, &gc->gpiodev->descs[offset].flags);
3228 }
3229 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_source);
3230
3231 bool gpiochip_line_is_persistent(struct gpio_chip *gc, unsigned int offset)
3232 {
3233         if (offset >= gc->ngpio)
3234                 return false;
3235
3236         return !test_bit(FLAG_TRANSITORY, &gc->gpiodev->descs[offset].flags);
3237 }
3238 EXPORT_SYMBOL_GPL(gpiochip_line_is_persistent);
3239
3240 /**
3241  * gpiod_get_raw_value_cansleep() - return a gpio's raw value
3242  * @desc: gpio whose value will be returned
3243  *
3244  * Return the GPIO's raw value, i.e. the value of the physical line disregarding
3245  * its ACTIVE_LOW status, or negative errno on failure.
3246  *
3247  * This function is to be called from contexts that can sleep.
3248  */
3249 int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc)
3250 {
3251         might_sleep_if(extra_checks);
3252         VALIDATE_DESC(desc);
3253         return gpiod_get_raw_value_commit(desc);
3254 }
3255 EXPORT_SYMBOL_GPL(gpiod_get_raw_value_cansleep);
3256
3257 /**
3258  * gpiod_get_value_cansleep() - return a gpio's value
3259  * @desc: gpio whose value will be returned
3260  *
3261  * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into
3262  * account, or negative errno on failure.
3263  *
3264  * This function is to be called from contexts that can sleep.
3265  */
3266 int gpiod_get_value_cansleep(const struct gpio_desc *desc)
3267 {
3268         int value;
3269
3270         might_sleep_if(extra_checks);
3271         VALIDATE_DESC(desc);
3272         value = gpiod_get_raw_value_commit(desc);
3273         if (value < 0)
3274                 return value;
3275
3276         if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
3277                 value = !value;
3278
3279         return value;
3280 }
3281 EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep);
3282
3283 /**
3284  * gpiod_get_raw_array_value_cansleep() - read raw values from an array of GPIOs
3285  * @array_size: number of elements in the descriptor array / value bitmap
3286  * @desc_array: array of GPIO descriptors whose values will be read
3287  * @array_info: information on applicability of fast bitmap processing path
3288  * @value_bitmap: bitmap to store the read values
3289  *
3290  * Read the raw values of the GPIOs, i.e. the values of the physical lines
3291  * without regard for their ACTIVE_LOW status.  Return 0 in case of success,
3292  * else an error code.
3293  *
3294  * This function is to be called from contexts that can sleep.
3295  */
3296 int gpiod_get_raw_array_value_cansleep(unsigned int array_size,
3297                                        struct gpio_desc **desc_array,
3298                                        struct gpio_array *array_info,
3299                                        unsigned long *value_bitmap)
3300 {
3301         might_sleep_if(extra_checks);
3302         if (!desc_array)
3303                 return -EINVAL;
3304         return gpiod_get_array_value_complex(true, true, array_size,
3305                                              desc_array, array_info,
3306                                              value_bitmap);
3307 }
3308 EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value_cansleep);
3309
3310 /**
3311  * gpiod_get_array_value_cansleep() - read values from an array of GPIOs
3312  * @array_size: number of elements in the descriptor array / value bitmap
3313  * @desc_array: array of GPIO descriptors whose values will be read
3314  * @array_info: information on applicability of fast bitmap processing path
3315  * @value_bitmap: bitmap to store the read values
3316  *
3317  * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3318  * into account.  Return 0 in case of success, else an error code.
3319  *
3320  * This function is to be called from contexts that can sleep.
3321  */
3322 int gpiod_get_array_value_cansleep(unsigned int array_size,
3323                                    struct gpio_desc **desc_array,
3324                                    struct gpio_array *array_info,
3325                                    unsigned long *value_bitmap)
3326 {
3327         might_sleep_if(extra_checks);
3328         if (!desc_array)
3329                 return -EINVAL;
3330         return gpiod_get_array_value_complex(false, true, array_size,
3331                                              desc_array, array_info,
3332                                              value_bitmap);
3333 }
3334 EXPORT_SYMBOL_GPL(gpiod_get_array_value_cansleep);
3335
3336 /**
3337  * gpiod_set_raw_value_cansleep() - assign a gpio's raw value
3338  * @desc: gpio whose value will be assigned
3339  * @value: value to assign
3340  *
3341  * Set the raw value of the GPIO, i.e. the value of its physical line without
3342  * regard for its ACTIVE_LOW status.
3343  *
3344  * This function is to be called from contexts that can sleep.
3345  */
3346 void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value)
3347 {
3348         might_sleep_if(extra_checks);
3349         VALIDATE_DESC_VOID(desc);
3350         gpiod_set_raw_value_commit(desc, value);
3351 }
3352 EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep);
3353
3354 /**
3355  * gpiod_set_value_cansleep() - assign a gpio's value
3356  * @desc: gpio whose value will be assigned
3357  * @value: value to assign
3358  *
3359  * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
3360  * account
3361  *
3362  * This function is to be called from contexts that can sleep.
3363  */
3364 void gpiod_set_value_cansleep(struct gpio_desc *desc, int value)
3365 {
3366         might_sleep_if(extra_checks);
3367         VALIDATE_DESC_VOID(desc);
3368         gpiod_set_value_nocheck(desc, value);
3369 }
3370 EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep);
3371
3372 /**
3373  * gpiod_set_raw_array_value_cansleep() - assign values to an array of GPIOs
3374  * @array_size: number of elements in the descriptor array / value bitmap
3375  * @desc_array: array of GPIO descriptors whose values will be assigned
3376  * @array_info: information on applicability of fast bitmap processing path
3377  * @value_bitmap: bitmap of values to assign
3378  *
3379  * Set the raw values of the GPIOs, i.e. the values of the physical lines
3380  * without regard for their ACTIVE_LOW status.
3381  *
3382  * This function is to be called from contexts that can sleep.
3383  */
3384 int gpiod_set_raw_array_value_cansleep(unsigned int array_size,
3385                                        struct gpio_desc **desc_array,
3386                                        struct gpio_array *array_info,
3387                                        unsigned long *value_bitmap)
3388 {
3389         might_sleep_if(extra_checks);
3390         if (!desc_array)
3391                 return -EINVAL;
3392         return gpiod_set_array_value_complex(true, true, array_size, desc_array,
3393                                       array_info, value_bitmap);
3394 }
3395 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value_cansleep);
3396
3397 /**
3398  * gpiod_add_lookup_tables() - register GPIO device consumers
3399  * @tables: list of tables of consumers to register
3400  * @n: number of tables in the list
3401  */
3402 void gpiod_add_lookup_tables(struct gpiod_lookup_table **tables, size_t n)
3403 {
3404         unsigned int i;
3405
3406         mutex_lock(&gpio_lookup_lock);
3407
3408         for (i = 0; i < n; i++)
3409                 list_add_tail(&tables[i]->list, &gpio_lookup_list);
3410
3411         mutex_unlock(&gpio_lookup_lock);
3412 }
3413
3414 /**
3415  * gpiod_set_array_value_cansleep() - assign values to an array of GPIOs
3416  * @array_size: number of elements in the descriptor array / value bitmap
3417  * @desc_array: array of GPIO descriptors whose values will be assigned
3418  * @array_info: information on applicability of fast bitmap processing path
3419  * @value_bitmap: bitmap of values to assign
3420  *
3421  * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3422  * into account.
3423  *
3424  * This function is to be called from contexts that can sleep.
3425  */
3426 int gpiod_set_array_value_cansleep(unsigned int array_size,
3427                                    struct gpio_desc **desc_array,
3428                                    struct gpio_array *array_info,
3429                                    unsigned long *value_bitmap)
3430 {
3431         might_sleep_if(extra_checks);
3432         if (!desc_array)
3433                 return -EINVAL;
3434         return gpiod_set_array_value_complex(false, true, array_size,
3435                                              desc_array, array_info,
3436                                              value_bitmap);
3437 }
3438 EXPORT_SYMBOL_GPL(gpiod_set_array_value_cansleep);
3439
3440 /**
3441  * gpiod_add_lookup_table() - register GPIO device consumers
3442  * @table: table of consumers to register
3443  */
3444 void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
3445 {
3446         mutex_lock(&gpio_lookup_lock);
3447
3448         list_add_tail(&table->list, &gpio_lookup_list);
3449
3450         mutex_unlock(&gpio_lookup_lock);
3451 }
3452 EXPORT_SYMBOL_GPL(gpiod_add_lookup_table);
3453
3454 /**
3455  * gpiod_remove_lookup_table() - unregister GPIO device consumers
3456  * @table: table of consumers to unregister
3457  */
3458 void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
3459 {
3460         /* Nothing to remove */
3461         if (!table)
3462                 return;
3463
3464         mutex_lock(&gpio_lookup_lock);
3465
3466         list_del(&table->list);
3467
3468         mutex_unlock(&gpio_lookup_lock);
3469 }
3470 EXPORT_SYMBOL_GPL(gpiod_remove_lookup_table);
3471
3472 /**
3473  * gpiod_add_hogs() - register a set of GPIO hogs from machine code
3474  * @hogs: table of gpio hog entries with a zeroed sentinel at the end
3475  */
3476 void gpiod_add_hogs(struct gpiod_hog *hogs)
3477 {
3478         struct gpio_chip *gc;
3479         struct gpiod_hog *hog;
3480
3481         mutex_lock(&gpio_machine_hogs_mutex);
3482
3483         for (hog = &hogs[0]; hog->chip_label; hog++) {
3484                 list_add_tail(&hog->list, &gpio_machine_hogs);
3485
3486                 /*
3487                  * The chip may have been registered earlier, so check if it
3488                  * exists and, if so, try to hog the line now.
3489                  */
3490                 gc = find_chip_by_name(hog->chip_label);
3491                 if (gc)
3492                         gpiochip_machine_hog(gc, hog);
3493         }
3494
3495         mutex_unlock(&gpio_machine_hogs_mutex);
3496 }
3497 EXPORT_SYMBOL_GPL(gpiod_add_hogs);
3498
3499 static struct gpiod_lookup_table *gpiod_find_lookup_table(struct device *dev)
3500 {
3501         const char *dev_id = dev ? dev_name(dev) : NULL;
3502         struct gpiod_lookup_table *table;
3503
3504         mutex_lock(&gpio_lookup_lock);
3505
3506         list_for_each_entry(table, &gpio_lookup_list, list) {
3507                 if (table->dev_id && dev_id) {
3508                         /*
3509                          * Valid strings on both ends, must be identical to have
3510                          * a match
3511                          */
3512                         if (!strcmp(table->dev_id, dev_id))
3513                                 goto found;
3514                 } else {
3515                         /*
3516                          * One of the pointers is NULL, so both must be to have
3517                          * a match
3518                          */
3519                         if (dev_id == table->dev_id)
3520                                 goto found;
3521                 }
3522         }
3523         table = NULL;
3524
3525 found:
3526         mutex_unlock(&gpio_lookup_lock);
3527         return table;
3528 }
3529
3530 static struct gpio_desc *gpiod_find(struct device *dev, const char *con_id,
3531                                     unsigned int idx, unsigned long *flags)
3532 {
3533         struct gpio_desc *desc = ERR_PTR(-ENOENT);
3534         struct gpiod_lookup_table *table;
3535         struct gpiod_lookup *p;
3536
3537         table = gpiod_find_lookup_table(dev);
3538         if (!table)
3539                 return desc;
3540
3541         for (p = &table->table[0]; p->key; p++) {
3542                 struct gpio_chip *gc;
3543
3544                 /* idx must always match exactly */
3545                 if (p->idx != idx)
3546                         continue;
3547
3548                 /* If the lookup entry has a con_id, require exact match */
3549                 if (p->con_id && (!con_id || strcmp(p->con_id, con_id)))
3550                         continue;
3551
3552                 if (p->chip_hwnum == U16_MAX) {
3553                         desc = gpio_name_to_desc(p->key);
3554                         if (desc) {
3555                                 *flags = p->flags;
3556                                 return desc;
3557                         }
3558
3559                         dev_warn(dev, "cannot find GPIO line %s, deferring\n",
3560                                  p->key);
3561                         return ERR_PTR(-EPROBE_DEFER);
3562                 }
3563
3564                 gc = find_chip_by_name(p->key);
3565
3566                 if (!gc) {
3567                         /*
3568                          * As the lookup table indicates a chip with
3569                          * p->key should exist, assume it may
3570                          * still appear later and let the interested
3571                          * consumer be probed again or let the Deferred
3572                          * Probe infrastructure handle the error.
3573                          */
3574                         dev_warn(dev, "cannot find GPIO chip %s, deferring\n",
3575                                  p->key);
3576                         return ERR_PTR(-EPROBE_DEFER);
3577                 }
3578
3579                 if (gc->ngpio <= p->chip_hwnum) {
3580                         dev_err(dev,
3581                                 "requested GPIO %u (%u) is out of range [0..%u] for chip %s\n",
3582                                 idx, p->chip_hwnum, gc->ngpio - 1,
3583                                 gc->label);
3584                         return ERR_PTR(-EINVAL);
3585                 }
3586
3587                 desc = gpiochip_get_desc(gc, p->chip_hwnum);
3588                 *flags = p->flags;
3589
3590                 return desc;
3591         }
3592
3593         return desc;
3594 }
3595
3596 static int platform_gpio_count(struct device *dev, const char *con_id)
3597 {
3598         struct gpiod_lookup_table *table;
3599         struct gpiod_lookup *p;
3600         unsigned int count = 0;
3601
3602         table = gpiod_find_lookup_table(dev);
3603         if (!table)
3604                 return -ENOENT;
3605
3606         for (p = &table->table[0]; p->key; p++) {
3607                 if ((con_id && p->con_id && !strcmp(con_id, p->con_id)) ||
3608                     (!con_id && !p->con_id))
3609                         count++;
3610         }
3611         if (!count)
3612                 return -ENOENT;
3613
3614         return count;
3615 }
3616
3617 /**
3618  * fwnode_gpiod_get_index - obtain a GPIO from firmware node
3619  * @fwnode:     handle of the firmware node
3620  * @con_id:     function within the GPIO consumer
3621  * @index:      index of the GPIO to obtain for the consumer
3622  * @flags:      GPIO initialization flags
3623  * @label:      label to attach to the requested GPIO
3624  *
3625  * This function can be used for drivers that get their configuration
3626  * from opaque firmware.
3627  *
3628  * The function properly finds the corresponding GPIO using whatever is the
3629  * underlying firmware interface and then makes sure that the GPIO
3630  * descriptor is requested before it is returned to the caller.
3631  *
3632  * Returns:
3633  * On successful request the GPIO pin is configured in accordance with
3634  * provided @flags.
3635  *
3636  * In case of error an ERR_PTR() is returned.
3637  */
3638 struct gpio_desc *fwnode_gpiod_get_index(struct fwnode_handle *fwnode,
3639                                          const char *con_id, int index,
3640                                          enum gpiod_flags flags,
3641                                          const char *label)
3642 {
3643         struct gpio_desc *desc;
3644         char prop_name[32]; /* 32 is max size of property name */
3645         unsigned int i;
3646
3647         for (i = 0; i < ARRAY_SIZE(gpio_suffixes); i++) {
3648                 if (con_id)
3649                         snprintf(prop_name, sizeof(prop_name), "%s-%s",
3650                                             con_id, gpio_suffixes[i]);
3651                 else
3652                         snprintf(prop_name, sizeof(prop_name), "%s",
3653                                             gpio_suffixes[i]);
3654
3655                 desc = fwnode_get_named_gpiod(fwnode, prop_name, index, flags,
3656                                               label);
3657                 if (!gpiod_not_found(desc))
3658                         break;
3659         }
3660
3661         return desc;
3662 }
3663 EXPORT_SYMBOL_GPL(fwnode_gpiod_get_index);
3664
3665 /**
3666  * gpiod_count - return the number of GPIOs associated with a device / function
3667  *              or -ENOENT if no GPIO has been assigned to the requested function
3668  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3669  * @con_id:     function within the GPIO consumer
3670  */
3671 int gpiod_count(struct device *dev, const char *con_id)
3672 {
3673         const struct fwnode_handle *fwnode = dev ? dev_fwnode(dev) : NULL;
3674         int count = -ENOENT;
3675
3676         if (is_of_node(fwnode))
3677                 count = of_gpio_get_count(dev, con_id);
3678         else if (is_acpi_node(fwnode))
3679                 count = acpi_gpio_count(dev, con_id);
3680
3681         if (count < 0)
3682                 count = platform_gpio_count(dev, con_id);
3683
3684         return count;
3685 }
3686 EXPORT_SYMBOL_GPL(gpiod_count);
3687
3688 /**
3689  * gpiod_get - obtain a GPIO for a given GPIO function
3690  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3691  * @con_id:     function within the GPIO consumer
3692  * @flags:      optional GPIO initialization flags
3693  *
3694  * Return the GPIO descriptor corresponding to the function con_id of device
3695  * dev, -ENOENT if no GPIO has been assigned to the requested function, or
3696  * another IS_ERR() code if an error occurred while trying to acquire the GPIO.
3697  */
3698 struct gpio_desc *__must_check gpiod_get(struct device *dev, const char *con_id,
3699                                          enum gpiod_flags flags)
3700 {
3701         return gpiod_get_index(dev, con_id, 0, flags);
3702 }
3703 EXPORT_SYMBOL_GPL(gpiod_get);
3704
3705 /**
3706  * gpiod_get_optional - obtain an optional 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  * This is equivalent to gpiod_get(), except that when no GPIO was assigned to
3712  * the requested function it will return NULL. This is convenient for drivers
3713  * that need to handle optional GPIOs.
3714  */
3715 struct gpio_desc *__must_check gpiod_get_optional(struct device *dev,
3716                                                   const char *con_id,
3717                                                   enum gpiod_flags flags)
3718 {
3719         return gpiod_get_index_optional(dev, con_id, 0, flags);
3720 }
3721 EXPORT_SYMBOL_GPL(gpiod_get_optional);
3722
3723
3724 /**
3725  * gpiod_configure_flags - helper function to configure a given GPIO
3726  * @desc:       gpio whose value will be assigned
3727  * @con_id:     function within the GPIO consumer
3728  * @lflags:     bitmask of gpio_lookup_flags GPIO_* values - returned from
3729  *              of_find_gpio() or of_get_gpio_hog()
3730  * @dflags:     gpiod_flags - optional GPIO initialization flags
3731  *
3732  * Return 0 on success, -ENOENT if no GPIO has been assigned to the
3733  * requested function and/or index, or another IS_ERR() code if an error
3734  * occurred while trying to acquire the GPIO.
3735  */
3736 int gpiod_configure_flags(struct gpio_desc *desc, const char *con_id,
3737                 unsigned long lflags, enum gpiod_flags dflags)
3738 {
3739         int ret;
3740
3741         if (lflags & GPIO_ACTIVE_LOW)
3742                 set_bit(FLAG_ACTIVE_LOW, &desc->flags);
3743
3744         if (lflags & GPIO_OPEN_DRAIN)
3745                 set_bit(FLAG_OPEN_DRAIN, &desc->flags);
3746         else if (dflags & GPIOD_FLAGS_BIT_OPEN_DRAIN) {
3747                 /*
3748                  * This enforces open drain mode from the consumer side.
3749                  * This is necessary for some busses like I2C, but the lookup
3750                  * should *REALLY* have specified them as open drain in the
3751                  * first place, so print a little warning here.
3752                  */
3753                 set_bit(FLAG_OPEN_DRAIN, &desc->flags);
3754                 gpiod_warn(desc,
3755                            "enforced open drain please flag it properly in DT/ACPI DSDT/board file\n");
3756         }
3757
3758         if (lflags & GPIO_OPEN_SOURCE)
3759                 set_bit(FLAG_OPEN_SOURCE, &desc->flags);
3760
3761         if ((lflags & GPIO_PULL_UP) && (lflags & GPIO_PULL_DOWN)) {
3762                 gpiod_err(desc,
3763                           "both pull-up and pull-down enabled, invalid configuration\n");
3764                 return -EINVAL;
3765         }
3766
3767         if (lflags & GPIO_PULL_UP)
3768                 set_bit(FLAG_PULL_UP, &desc->flags);
3769         else if (lflags & GPIO_PULL_DOWN)
3770                 set_bit(FLAG_PULL_DOWN, &desc->flags);
3771
3772         ret = gpiod_set_transitory(desc, (lflags & GPIO_TRANSITORY));
3773         if (ret < 0)
3774                 return ret;
3775
3776         /* No particular flag request, return here... */
3777         if (!(dflags & GPIOD_FLAGS_BIT_DIR_SET)) {
3778                 gpiod_dbg(desc, "no flags found for %s\n", con_id);
3779                 return 0;
3780         }
3781
3782         /* Process flags */
3783         if (dflags & GPIOD_FLAGS_BIT_DIR_OUT)
3784                 ret = gpiod_direction_output(desc,
3785                                 !!(dflags & GPIOD_FLAGS_BIT_DIR_VAL));
3786         else
3787                 ret = gpiod_direction_input(desc);
3788
3789         return ret;
3790 }
3791
3792 /**
3793  * gpiod_get_index - obtain a GPIO from a multi-index GPIO function
3794  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3795  * @con_id:     function within the GPIO consumer
3796  * @idx:        index of the GPIO to obtain in the consumer
3797  * @flags:      optional GPIO initialization flags
3798  *
3799  * This variant of gpiod_get() allows to access GPIOs other than the first
3800  * defined one for functions that define several GPIOs.
3801  *
3802  * Return a valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the
3803  * requested function and/or index, or another IS_ERR() code if an error
3804  * occurred while trying to acquire the GPIO.
3805  */
3806 struct gpio_desc *__must_check gpiod_get_index(struct device *dev,
3807                                                const char *con_id,
3808                                                unsigned int idx,
3809                                                enum gpiod_flags flags)
3810 {
3811         unsigned long lookupflags = GPIO_LOOKUP_FLAGS_DEFAULT;
3812         struct gpio_desc *desc = NULL;
3813         int ret;
3814         /* Maybe we have a device name, maybe not */
3815         const char *devname = dev ? dev_name(dev) : "?";
3816         const struct fwnode_handle *fwnode = dev ? dev_fwnode(dev) : NULL;
3817
3818         dev_dbg(dev, "GPIO lookup for consumer %s\n", con_id);
3819
3820         /* Using device tree? */
3821         if (is_of_node(fwnode)) {
3822                 dev_dbg(dev, "using device tree for GPIO lookup\n");
3823                 desc = of_find_gpio(dev, con_id, idx, &lookupflags);
3824         } else if (is_acpi_node(fwnode)) {
3825                 dev_dbg(dev, "using ACPI for GPIO lookup\n");
3826                 desc = acpi_find_gpio(dev, con_id, idx, &flags, &lookupflags);
3827         }
3828
3829         /*
3830          * Either we are not using DT or ACPI, or their lookup did not return
3831          * a result. In that case, use platform lookup as a fallback.
3832          */
3833         if (!desc || gpiod_not_found(desc)) {
3834                 dev_dbg(dev, "using lookup tables for GPIO lookup\n");
3835                 desc = gpiod_find(dev, con_id, idx, &lookupflags);
3836         }
3837
3838         if (IS_ERR(desc)) {
3839                 dev_dbg(dev, "No GPIO consumer %s found\n", con_id);
3840                 return desc;
3841         }
3842
3843         /*
3844          * If a connection label was passed use that, else attempt to use
3845          * the device name as label
3846          */
3847         ret = gpiod_request(desc, con_id ? con_id : devname);
3848         if (ret) {
3849                 if (ret == -EBUSY && flags & GPIOD_FLAGS_BIT_NONEXCLUSIVE) {
3850                         /*
3851                          * This happens when there are several consumers for
3852                          * the same GPIO line: we just return here without
3853                          * further initialization. It is a bit if a hack.
3854                          * This is necessary to support fixed regulators.
3855                          *
3856                          * FIXME: Make this more sane and safe.
3857                          */
3858                         dev_info(dev, "nonexclusive access to GPIO for %s\n",
3859                                  con_id ? con_id : devname);
3860                         return desc;
3861                 } else {
3862                         return ERR_PTR(ret);
3863                 }
3864         }
3865
3866         ret = gpiod_configure_flags(desc, con_id, lookupflags, flags);
3867         if (ret < 0) {
3868                 dev_dbg(dev, "setup of GPIO %s failed\n", con_id);
3869                 gpiod_put(desc);
3870                 return ERR_PTR(ret);
3871         }
3872
3873         blocking_notifier_call_chain(&desc->gdev->notifier,
3874                                      GPIOLINE_CHANGED_REQUESTED, desc);
3875
3876         return desc;
3877 }
3878 EXPORT_SYMBOL_GPL(gpiod_get_index);
3879
3880 /**
3881  * fwnode_get_named_gpiod - obtain a GPIO from firmware node
3882  * @fwnode:     handle of the firmware node
3883  * @propname:   name of the firmware property representing the GPIO
3884  * @index:      index of the GPIO to obtain for the consumer
3885  * @dflags:     GPIO initialization flags
3886  * @label:      label to attach to the requested GPIO
3887  *
3888  * This function can be used for drivers that get their configuration
3889  * from opaque firmware.
3890  *
3891  * The function properly finds the corresponding GPIO using whatever is the
3892  * underlying firmware interface and then makes sure that the GPIO
3893  * descriptor is requested before it is returned to the caller.
3894  *
3895  * Returns:
3896  * On successful request the GPIO pin is configured in accordance with
3897  * provided @dflags.
3898  *
3899  * In case of error an ERR_PTR() is returned.
3900  */
3901 struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
3902                                          const char *propname, int index,
3903                                          enum gpiod_flags dflags,
3904                                          const char *label)
3905 {
3906         unsigned long lflags = GPIO_LOOKUP_FLAGS_DEFAULT;
3907         struct gpio_desc *desc = ERR_PTR(-ENODEV);
3908         int ret;
3909
3910         if (is_of_node(fwnode)) {
3911                 desc = gpiod_get_from_of_node(to_of_node(fwnode),
3912                                               propname, index,
3913                                               dflags,
3914                                               label);
3915                 return desc;
3916         } else if (is_acpi_node(fwnode)) {
3917                 struct acpi_gpio_info info;
3918
3919                 desc = acpi_node_get_gpiod(fwnode, propname, index, &info);
3920                 if (IS_ERR(desc))
3921                         return desc;
3922
3923                 acpi_gpio_update_gpiod_flags(&dflags, &info);
3924                 acpi_gpio_update_gpiod_lookup_flags(&lflags, &info);
3925         } else
3926                 return ERR_PTR(-EINVAL);
3927
3928         /* Currently only ACPI takes this path */
3929         ret = gpiod_request(desc, label);
3930         if (ret)
3931                 return ERR_PTR(ret);
3932
3933         ret = gpiod_configure_flags(desc, propname, lflags, dflags);
3934         if (ret < 0) {
3935                 gpiod_put(desc);
3936                 return ERR_PTR(ret);
3937         }
3938
3939         blocking_notifier_call_chain(&desc->gdev->notifier,
3940                                      GPIOLINE_CHANGED_REQUESTED, desc);
3941
3942         return desc;
3943 }
3944 EXPORT_SYMBOL_GPL(fwnode_get_named_gpiod);
3945
3946 /**
3947  * gpiod_get_index_optional - obtain an optional GPIO from a multi-index GPIO
3948  *                            function
3949  * @dev: GPIO consumer, can be NULL for system-global GPIOs
3950  * @con_id: function within the GPIO consumer
3951  * @index: index of the GPIO to obtain in the consumer
3952  * @flags: optional GPIO initialization flags
3953  *
3954  * This is equivalent to gpiod_get_index(), except that when no GPIO with the
3955  * specified index was assigned to the requested function it will return NULL.
3956  * This is convenient for drivers that need to handle optional GPIOs.
3957  */
3958 struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev,
3959                                                         const char *con_id,
3960                                                         unsigned int index,
3961                                                         enum gpiod_flags flags)
3962 {
3963         struct gpio_desc *desc;
3964
3965         desc = gpiod_get_index(dev, con_id, index, flags);
3966         if (gpiod_not_found(desc))
3967                 return NULL;
3968
3969         return desc;
3970 }
3971 EXPORT_SYMBOL_GPL(gpiod_get_index_optional);
3972
3973 /**
3974  * gpiod_hog - Hog the specified GPIO desc given the provided flags
3975  * @desc:       gpio whose value will be assigned
3976  * @name:       gpio line name
3977  * @lflags:     bitmask of gpio_lookup_flags GPIO_* values - returned from
3978  *              of_find_gpio() or of_get_gpio_hog()
3979  * @dflags:     gpiod_flags - optional GPIO initialization flags
3980  */
3981 int gpiod_hog(struct gpio_desc *desc, const char *name,
3982               unsigned long lflags, enum gpiod_flags dflags)
3983 {
3984         struct gpio_chip *gc;
3985         struct gpio_desc *local_desc;
3986         int hwnum;
3987         int ret;
3988
3989         gc = gpiod_to_chip(desc);
3990         hwnum = gpio_chip_hwgpio(desc);
3991
3992         local_desc = gpiochip_request_own_desc(gc, hwnum, name,
3993                                                lflags, dflags);
3994         if (IS_ERR(local_desc)) {
3995                 ret = PTR_ERR(local_desc);
3996                 pr_err("requesting hog GPIO %s (chip %s, offset %d) failed, %d\n",
3997                        name, gc->label, hwnum, ret);
3998                 return ret;
3999         }
4000
4001         /* Mark GPIO as hogged so it can be identified and removed later */
4002         set_bit(FLAG_IS_HOGGED, &desc->flags);
4003
4004         gpiod_info(desc, "hogged as %s%s\n",
4005                 (dflags & GPIOD_FLAGS_BIT_DIR_OUT) ? "output" : "input",
4006                 (dflags & GPIOD_FLAGS_BIT_DIR_OUT) ?
4007                   (dflags & GPIOD_FLAGS_BIT_DIR_VAL) ? "/high" : "/low" : "");
4008
4009         return 0;
4010 }
4011
4012 /**
4013  * gpiochip_free_hogs - Scan gpio-controller chip and release GPIO hog
4014  * @gc: gpio chip to act on
4015  */
4016 static void gpiochip_free_hogs(struct gpio_chip *gc)
4017 {
4018         int id;
4019
4020         for (id = 0; id < gc->ngpio; id++) {
4021                 if (test_bit(FLAG_IS_HOGGED, &gc->gpiodev->descs[id].flags))
4022                         gpiochip_free_own_desc(&gc->gpiodev->descs[id]);
4023         }
4024 }
4025
4026 /**
4027  * gpiod_get_array - obtain multiple GPIOs from a multi-index GPIO function
4028  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
4029  * @con_id:     function within the GPIO consumer
4030  * @flags:      optional GPIO initialization flags
4031  *
4032  * This function acquires all the GPIOs defined under a given function.
4033  *
4034  * Return a struct gpio_descs containing an array of descriptors, -ENOENT if
4035  * no GPIO has been assigned to the requested function, or another IS_ERR()
4036  * code if an error occurred while trying to acquire the GPIOs.
4037  */
4038 struct gpio_descs *__must_check gpiod_get_array(struct device *dev,
4039                                                 const char *con_id,
4040                                                 enum gpiod_flags flags)
4041 {
4042         struct gpio_desc *desc;
4043         struct gpio_descs *descs;
4044         struct gpio_array *array_info = NULL;
4045         struct gpio_chip *gc;
4046         int count, bitmap_size;
4047
4048         count = gpiod_count(dev, con_id);
4049         if (count < 0)
4050                 return ERR_PTR(count);
4051
4052         descs = kzalloc(struct_size(descs, desc, count), GFP_KERNEL);
4053         if (!descs)
4054                 return ERR_PTR(-ENOMEM);
4055
4056         for (descs->ndescs = 0; descs->ndescs < count; ) {
4057                 desc = gpiod_get_index(dev, con_id, descs->ndescs, flags);
4058                 if (IS_ERR(desc)) {
4059                         gpiod_put_array(descs);
4060                         return ERR_CAST(desc);
4061                 }
4062
4063                 descs->desc[descs->ndescs] = desc;
4064
4065                 gc = gpiod_to_chip(desc);
4066                 /*
4067                  * If pin hardware number of array member 0 is also 0, select
4068                  * its chip as a candidate for fast bitmap processing path.
4069                  */
4070                 if (descs->ndescs == 0 && gpio_chip_hwgpio(desc) == 0) {
4071                         struct gpio_descs *array;
4072
4073                         bitmap_size = BITS_TO_LONGS(gc->ngpio > count ?
4074                                                     gc->ngpio : count);
4075
4076                         array = kzalloc(struct_size(descs, desc, count) +
4077                                         struct_size(array_info, invert_mask,
4078                                         3 * bitmap_size), GFP_KERNEL);
4079                         if (!array) {
4080                                 gpiod_put_array(descs);
4081                                 return ERR_PTR(-ENOMEM);
4082                         }
4083
4084                         memcpy(array, descs,
4085                                struct_size(descs, desc, descs->ndescs + 1));
4086                         kfree(descs);
4087
4088                         descs = array;
4089                         array_info = (void *)(descs->desc + count);
4090                         array_info->get_mask = array_info->invert_mask +
4091                                                   bitmap_size;
4092                         array_info->set_mask = array_info->get_mask +
4093                                                   bitmap_size;
4094
4095                         array_info->desc = descs->desc;
4096                         array_info->size = count;
4097                         array_info->chip = gc;
4098                         bitmap_set(array_info->get_mask, descs->ndescs,
4099                                    count - descs->ndescs);
4100                         bitmap_set(array_info->set_mask, descs->ndescs,
4101                                    count - descs->ndescs);
4102                         descs->info = array_info;
4103                 }
4104                 /* Unmark array members which don't belong to the 'fast' chip */
4105                 if (array_info && array_info->chip != gc) {
4106                         __clear_bit(descs->ndescs, array_info->get_mask);
4107                         __clear_bit(descs->ndescs, array_info->set_mask);
4108                 }
4109                 /*
4110                  * Detect array members which belong to the 'fast' chip
4111                  * but their pins are not in hardware order.
4112                  */
4113                 else if (array_info &&
4114                            gpio_chip_hwgpio(desc) != descs->ndescs) {
4115                         /*
4116                          * Don't use fast path if all array members processed so
4117                          * far belong to the same chip as this one but its pin
4118                          * hardware number is different from its array index.
4119                          */
4120                         if (bitmap_full(array_info->get_mask, descs->ndescs)) {
4121                                 array_info = NULL;
4122                         } else {
4123                                 __clear_bit(descs->ndescs,
4124                                             array_info->get_mask);
4125                                 __clear_bit(descs->ndescs,
4126                                             array_info->set_mask);
4127                         }
4128                 } else if (array_info) {
4129                         /* Exclude open drain or open source from fast output */
4130                         if (gpiochip_line_is_open_drain(gc, descs->ndescs) ||
4131                             gpiochip_line_is_open_source(gc, descs->ndescs))
4132                                 __clear_bit(descs->ndescs,
4133                                             array_info->set_mask);
4134                         /* Identify 'fast' pins which require invertion */
4135                         if (gpiod_is_active_low(desc))
4136                                 __set_bit(descs->ndescs,
4137                                           array_info->invert_mask);
4138                 }
4139
4140                 descs->ndescs++;
4141         }
4142         if (array_info)
4143                 dev_dbg(dev,
4144                         "GPIO array info: chip=%s, size=%d, get_mask=%lx, set_mask=%lx, invert_mask=%lx\n",
4145                         array_info->chip->label, array_info->size,
4146                         *array_info->get_mask, *array_info->set_mask,
4147                         *array_info->invert_mask);
4148         return descs;
4149 }
4150 EXPORT_SYMBOL_GPL(gpiod_get_array);
4151
4152 /**
4153  * gpiod_get_array_optional - obtain multiple GPIOs from a multi-index GPIO
4154  *                            function
4155  * @dev:        GPIO consumer, can be NULL for system-global GPIOs
4156  * @con_id:     function within the GPIO consumer
4157  * @flags:      optional GPIO initialization flags
4158  *
4159  * This is equivalent to gpiod_get_array(), except that when no GPIO was
4160  * assigned to the requested function it will return NULL.
4161  */
4162 struct gpio_descs *__must_check gpiod_get_array_optional(struct device *dev,
4163                                                         const char *con_id,
4164                                                         enum gpiod_flags flags)
4165 {
4166         struct gpio_descs *descs;
4167
4168         descs = gpiod_get_array(dev, con_id, flags);
4169         if (gpiod_not_found(descs))
4170                 return NULL;
4171
4172         return descs;
4173 }
4174 EXPORT_SYMBOL_GPL(gpiod_get_array_optional);
4175
4176 /**
4177  * gpiod_put - dispose of a GPIO descriptor
4178  * @desc:       GPIO descriptor to dispose of
4179  *
4180  * No descriptor can be used after gpiod_put() has been called on it.
4181  */
4182 void gpiod_put(struct gpio_desc *desc)
4183 {
4184         if (desc)
4185                 gpiod_free(desc);
4186 }
4187 EXPORT_SYMBOL_GPL(gpiod_put);
4188
4189 /**
4190  * gpiod_put_array - dispose of multiple GPIO descriptors
4191  * @descs:      struct gpio_descs containing an array of descriptors
4192  */
4193 void gpiod_put_array(struct gpio_descs *descs)
4194 {
4195         unsigned int i;
4196
4197         for (i = 0; i < descs->ndescs; i++)
4198                 gpiod_put(descs->desc[i]);
4199
4200         kfree(descs);
4201 }
4202 EXPORT_SYMBOL_GPL(gpiod_put_array);
4203
4204
4205 static int gpio_bus_match(struct device *dev, struct device_driver *drv)
4206 {
4207         struct fwnode_handle *fwnode = dev_fwnode(dev);
4208
4209         /*
4210          * Only match if the fwnode doesn't already have a proper struct device
4211          * created for it.
4212          */
4213         if (fwnode && fwnode->dev != dev)
4214                 return 0;
4215         return 1;
4216 }
4217
4218 static int gpio_stub_drv_probe(struct device *dev)
4219 {
4220         /*
4221          * The DT node of some GPIO chips have a "compatible" property, but
4222          * never have a struct device added and probed by a driver to register
4223          * the GPIO chip with gpiolib. In such cases, fw_devlink=on will cause
4224          * the consumers of the GPIO chip to get probe deferred forever because
4225          * they will be waiting for a device associated with the GPIO chip
4226          * firmware node to get added and bound to a driver.
4227          *
4228          * To allow these consumers to probe, we associate the struct
4229          * gpio_device of the GPIO chip with the firmware node and then simply
4230          * bind it to this stub driver.
4231          */
4232         return 0;
4233 }
4234
4235 static struct device_driver gpio_stub_drv = {
4236         .name = "gpio_stub_drv",
4237         .bus = &gpio_bus_type,
4238         .probe = gpio_stub_drv_probe,
4239 };
4240
4241 static int __init gpiolib_dev_init(void)
4242 {
4243         int ret;
4244
4245         /* Register GPIO sysfs bus */
4246         ret = bus_register(&gpio_bus_type);
4247         if (ret < 0) {
4248                 pr_err("gpiolib: could not register GPIO bus type\n");
4249                 return ret;
4250         }
4251
4252         ret = driver_register(&gpio_stub_drv);
4253         if (ret < 0) {
4254                 pr_err("gpiolib: could not register GPIO stub driver\n");
4255                 bus_unregister(&gpio_bus_type);
4256                 return ret;
4257         }
4258
4259         ret = alloc_chrdev_region(&gpio_devt, 0, GPIO_DEV_MAX, GPIOCHIP_NAME);
4260         if (ret < 0) {
4261                 pr_err("gpiolib: failed to allocate char dev region\n");
4262                 driver_unregister(&gpio_stub_drv);
4263                 bus_unregister(&gpio_bus_type);
4264                 return ret;
4265         }
4266
4267         gpiolib_initialized = true;
4268         gpiochip_setup_devs();
4269
4270 #if IS_ENABLED(CONFIG_OF_DYNAMIC) && IS_ENABLED(CONFIG_OF_GPIO)
4271         WARN_ON(of_reconfig_notifier_register(&gpio_of_notifier));
4272 #endif /* CONFIG_OF_DYNAMIC && CONFIG_OF_GPIO */
4273
4274         return ret;
4275 }
4276 core_initcall(gpiolib_dev_init);
4277
4278 #ifdef CONFIG_DEBUG_FS
4279
4280 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_device *gdev)
4281 {
4282         unsigned                i;
4283         struct gpio_chip        *gc = gdev->chip;
4284         unsigned                gpio = gdev->base;
4285         struct gpio_desc        *gdesc = &gdev->descs[0];
4286         bool                    is_out;
4287         bool                    is_irq;
4288         bool                    active_low;
4289
4290         for (i = 0; i < gdev->ngpio; i++, gpio++, gdesc++) {
4291                 if (!test_bit(FLAG_REQUESTED, &gdesc->flags)) {
4292                         if (gdesc->name) {
4293                                 seq_printf(s, " gpio-%-3d (%-20.20s)\n",
4294                                            gpio, gdesc->name);
4295                         }
4296                         continue;
4297                 }
4298
4299                 gpiod_get_direction(gdesc);
4300                 is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
4301                 is_irq = test_bit(FLAG_USED_AS_IRQ, &gdesc->flags);
4302                 active_low = test_bit(FLAG_ACTIVE_LOW, &gdesc->flags);
4303                 seq_printf(s, " gpio-%-3d (%-20.20s|%-20.20s) %s %s %s%s",
4304                         gpio, gdesc->name ? gdesc->name : "", gdesc->label,
4305                         is_out ? "out" : "in ",
4306                         gc->get ? (gc->get(gc, i) ? "hi" : "lo") : "?  ",
4307                         is_irq ? "IRQ " : "",
4308                         active_low ? "ACTIVE LOW" : "");
4309                 seq_printf(s, "\n");
4310         }
4311 }
4312
4313 static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos)
4314 {
4315         unsigned long flags;
4316         struct gpio_device *gdev = NULL;
4317         loff_t index = *pos;
4318
4319         s->private = "";
4320
4321         spin_lock_irqsave(&gpio_lock, flags);
4322         list_for_each_entry(gdev, &gpio_devices, list)
4323                 if (index-- == 0) {
4324                         spin_unlock_irqrestore(&gpio_lock, flags);
4325                         return gdev;
4326                 }
4327         spin_unlock_irqrestore(&gpio_lock, flags);
4328
4329         return NULL;
4330 }
4331
4332 static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos)
4333 {
4334         unsigned long flags;
4335         struct gpio_device *gdev = v;
4336         void *ret = NULL;
4337
4338         spin_lock_irqsave(&gpio_lock, flags);
4339         if (list_is_last(&gdev->list, &gpio_devices))
4340                 ret = NULL;
4341         else
4342                 ret = list_entry(gdev->list.next, struct gpio_device, list);
4343         spin_unlock_irqrestore(&gpio_lock, flags);
4344
4345         s->private = "\n";
4346         ++*pos;
4347
4348         return ret;
4349 }
4350
4351 static void gpiolib_seq_stop(struct seq_file *s, void *v)
4352 {
4353 }
4354
4355 static int gpiolib_seq_show(struct seq_file *s, void *v)
4356 {
4357         struct gpio_device *gdev = v;
4358         struct gpio_chip *gc = gdev->chip;
4359         struct device *parent;
4360
4361         if (!gc) {
4362                 seq_printf(s, "%s%s: (dangling chip)", (char *)s->private,
4363                            dev_name(&gdev->dev));
4364                 return 0;
4365         }
4366
4367         seq_printf(s, "%s%s: GPIOs %d-%d", (char *)s->private,
4368                    dev_name(&gdev->dev),
4369                    gdev->base, gdev->base + gdev->ngpio - 1);
4370         parent = gc->parent;
4371         if (parent)
4372                 seq_printf(s, ", parent: %s/%s",
4373                            parent->bus ? parent->bus->name : "no-bus",
4374                            dev_name(parent));
4375         if (gc->label)
4376                 seq_printf(s, ", %s", gc->label);
4377         if (gc->can_sleep)
4378                 seq_printf(s, ", can sleep");
4379         seq_printf(s, ":\n");
4380
4381         if (gc->dbg_show)
4382                 gc->dbg_show(s, gc);
4383         else
4384                 gpiolib_dbg_show(s, gdev);
4385
4386         return 0;
4387 }
4388
4389 static const struct seq_operations gpiolib_sops = {
4390         .start = gpiolib_seq_start,
4391         .next = gpiolib_seq_next,
4392         .stop = gpiolib_seq_stop,
4393         .show = gpiolib_seq_show,
4394 };
4395 DEFINE_SEQ_ATTRIBUTE(gpiolib);
4396
4397 static int __init gpiolib_debugfs_init(void)
4398 {
4399         /* /sys/kernel/debug/gpio */
4400         debugfs_create_file("gpio", 0444, NULL, NULL, &gpiolib_fops);
4401         return 0;
4402 }
4403 subsys_initcall(gpiolib_debugfs_init);
4404
4405 #endif  /* DEBUG_FS */