1 // SPDX-License-Identifier: GPL-2.0
3 #include <linux/acpi.h>
4 #include <linux/array_size.h>
5 #include <linux/bitmap.h>
6 #include <linux/cleanup.h>
7 #include <linux/compat.h>
8 #include <linux/debugfs.h>
9 #include <linux/device.h>
10 #include <linux/err.h>
11 #include <linux/errno.h>
12 #include <linux/file.h>
14 #include <linux/idr.h>
15 #include <linux/interrupt.h>
16 #include <linux/irq.h>
17 #include <linux/irqdesc.h>
18 #include <linux/kernel.h>
19 #include <linux/list.h>
20 #include <linux/lockdep.h>
21 #include <linux/module.h>
22 #include <linux/nospec.h>
24 #include <linux/pinctrl/consumer.h>
25 #include <linux/seq_file.h>
26 #include <linux/slab.h>
27 #include <linux/srcu.h>
28 #include <linux/string.h>
30 #include <linux/gpio.h>
31 #include <linux/gpio/driver.h>
32 #include <linux/gpio/machine.h>
34 #include <uapi/linux/gpio.h>
36 #include "gpiolib-acpi.h"
37 #include "gpiolib-cdev.h"
38 #include "gpiolib-of.h"
39 #include "gpiolib-swnode.h"
40 #include "gpiolib-sysfs.h"
43 #define CREATE_TRACE_POINTS
44 #include <trace/events/gpio.h>
46 /* Implementation infrastructure for GPIO interfaces.
48 * The GPIO programming interface allows for inlining speed-critical
49 * get/set operations for common cases, so that access to SOC-integrated
50 * GPIOs can sometimes cost only an instruction or two per bit.
53 /* Device and char device-related information */
54 static DEFINE_IDA(gpio_ida
);
55 static dev_t gpio_devt
;
56 #define GPIO_DEV_MAX 256 /* 256 GPIO chip devices supported */
58 static int gpio_bus_match(struct device
*dev
, const struct device_driver
*drv
)
60 struct fwnode_handle
*fwnode
= dev_fwnode(dev
);
63 * Only match if the fwnode doesn't already have a proper struct device
66 if (fwnode
&& fwnode
->dev
!= dev
)
71 static const struct bus_type gpio_bus_type
= {
73 .match
= gpio_bus_match
,
77 * Number of GPIOs to use for the fast path in set array
79 #define FASTPATH_NGPIO CONFIG_GPIOLIB_FASTPATH_LIMIT
81 static DEFINE_MUTEX(gpio_lookup_lock
);
82 static LIST_HEAD(gpio_lookup_list
);
84 static LIST_HEAD(gpio_devices
);
85 /* Protects the GPIO device list against concurrent modifications. */
86 static DEFINE_MUTEX(gpio_devices_lock
);
87 /* Ensures coherence during read-only accesses to the list of GPIO devices. */
88 DEFINE_STATIC_SRCU(gpio_devices_srcu
);
90 static DEFINE_MUTEX(gpio_machine_hogs_mutex
);
91 static LIST_HEAD(gpio_machine_hogs
);
93 const char *const gpio_suffixes
[] = { "gpios", "gpio", NULL
};
95 static void gpiochip_free_hogs(struct gpio_chip
*gc
);
96 static int gpiochip_add_irqchip(struct gpio_chip
*gc
,
97 struct lock_class_key
*lock_key
,
98 struct lock_class_key
*request_key
);
99 static void gpiochip_irqchip_remove(struct gpio_chip
*gc
);
100 static int gpiochip_irqchip_init_hw(struct gpio_chip
*gc
);
101 static int gpiochip_irqchip_init_valid_mask(struct gpio_chip
*gc
);
102 static void gpiochip_irqchip_free_valid_mask(struct gpio_chip
*gc
);
104 static bool gpiolib_initialized
;
106 const char *gpiod_get_label(struct gpio_desc
*desc
)
108 struct gpio_desc_label
*label
;
111 flags
= READ_ONCE(desc
->flags
);
113 label
= srcu_dereference_check(desc
->label
, &desc
->gdev
->desc_srcu
,
114 srcu_read_lock_held(&desc
->gdev
->desc_srcu
));
116 if (test_bit(FLAG_USED_AS_IRQ
, &flags
))
117 return label
? label
->str
: "interrupt";
119 if (!test_bit(FLAG_REQUESTED
, &flags
))
122 return label
? label
->str
: NULL
;
125 static void desc_free_label(struct rcu_head
*rh
)
127 kfree(container_of(rh
, struct gpio_desc_label
, rh
));
130 static int desc_set_label(struct gpio_desc
*desc
, const char *label
)
132 struct gpio_desc_label
*new = NULL
, *old
;
135 new = kzalloc(struct_size(new, str
, strlen(label
) + 1),
140 strcpy(new->str
, label
);
143 old
= rcu_replace_pointer(desc
->label
, new, 1);
145 call_srcu(&desc
->gdev
->desc_srcu
, &old
->rh
, desc_free_label
);
151 * gpio_to_desc - Convert a GPIO number to its descriptor
152 * @gpio: global GPIO number
155 * The GPIO descriptor associated with the given GPIO, or %NULL if no GPIO
156 * with the given number exists in the system.
158 struct gpio_desc
*gpio_to_desc(unsigned gpio
)
160 struct gpio_device
*gdev
;
162 scoped_guard(srcu
, &gpio_devices_srcu
) {
163 list_for_each_entry_srcu(gdev
, &gpio_devices
, list
,
164 srcu_read_lock_held(&gpio_devices_srcu
)) {
165 if (gdev
->base
<= gpio
&&
166 gdev
->base
+ gdev
->ngpio
> gpio
)
167 return &gdev
->descs
[gpio
- gdev
->base
];
173 EXPORT_SYMBOL_GPL(gpio_to_desc
);
175 /* This function is deprecated and will be removed soon, don't use. */
176 struct gpio_desc
*gpiochip_get_desc(struct gpio_chip
*gc
,
179 return gpio_device_get_desc(gc
->gpiodev
, hwnum
);
183 * gpio_device_get_desc() - get the GPIO descriptor corresponding to the given
184 * hardware number for this GPIO device
185 * @gdev: GPIO device to get the descriptor from
186 * @hwnum: hardware number of the GPIO for this chip
189 * A pointer to the GPIO descriptor or %EINVAL if no GPIO exists in the given
190 * chip for the specified hardware number or %ENODEV if the underlying chip
193 * The reference count of struct gpio_device is *NOT* increased like when the
194 * GPIO is being requested for exclusive usage. It's up to the caller to make
195 * sure the GPIO device will stay alive together with the descriptor returned
199 gpio_device_get_desc(struct gpio_device
*gdev
, unsigned int hwnum
)
201 if (hwnum
>= gdev
->ngpio
)
202 return ERR_PTR(-EINVAL
);
204 return &gdev
->descs
[array_index_nospec(hwnum
, gdev
->ngpio
)];
206 EXPORT_SYMBOL_GPL(gpio_device_get_desc
);
209 * desc_to_gpio - convert a GPIO descriptor to the integer namespace
210 * @desc: GPIO descriptor
212 * This should disappear in the future but is needed since we still
213 * use GPIO numbers for error messages and sysfs nodes.
216 * The global GPIO number for the GPIO specified by its descriptor.
218 int desc_to_gpio(const struct gpio_desc
*desc
)
220 return desc
->gdev
->base
+ (desc
- &desc
->gdev
->descs
[0]);
222 EXPORT_SYMBOL_GPL(desc_to_gpio
);
226 * gpiod_to_chip - Return the GPIO chip to which a GPIO descriptor belongs
227 * @desc: descriptor to return the chip of
230 * This function is unsafe and should not be used. Using the chip address
231 * without taking the SRCU read lock may result in dereferencing a dangling
235 * Address of the GPIO chip backing this device.
237 struct gpio_chip
*gpiod_to_chip(const struct gpio_desc
*desc
)
242 return gpio_device_get_chip(desc
->gdev
);
244 EXPORT_SYMBOL_GPL(gpiod_to_chip
);
247 * gpiod_to_gpio_device() - Return the GPIO device to which this descriptor
249 * @desc: Descriptor for which to return the GPIO device.
251 * This *DOES NOT* increase the reference count of the GPIO device as it's
252 * expected that the descriptor is requested and the users already holds a
253 * reference to the device.
256 * Address of the GPIO device owning this descriptor.
258 struct gpio_device
*gpiod_to_gpio_device(struct gpio_desc
*desc
)
265 EXPORT_SYMBOL_GPL(gpiod_to_gpio_device
);
268 * gpio_device_get_base() - Get the base GPIO number allocated by this device
272 * First GPIO number in the global GPIO numberspace for this device.
274 int gpio_device_get_base(struct gpio_device
*gdev
)
278 EXPORT_SYMBOL_GPL(gpio_device_get_base
);
281 * gpio_device_get_label() - Get the label of this GPIO device
285 * Pointer to the string containing the GPIO device label. The string's
286 * lifetime is tied to that of the underlying GPIO device.
288 const char *gpio_device_get_label(struct gpio_device
*gdev
)
292 EXPORT_SYMBOL(gpio_device_get_label
);
295 * gpio_device_get_chip() - Get the gpio_chip implementation of this GPIO device
299 * Address of the GPIO chip backing this device.
302 * Until we can get rid of all non-driver users of struct gpio_chip, we must
303 * provide a way of retrieving the pointer to it from struct gpio_device. This
304 * is *NOT* safe as the GPIO API is considered to be hot-unpluggable and the
305 * chip can dissapear at any moment (unlike reference-counted struct
308 * Use at your own risk.
310 struct gpio_chip
*gpio_device_get_chip(struct gpio_device
*gdev
)
312 return rcu_dereference_check(gdev
->chip
, 1);
314 EXPORT_SYMBOL_GPL(gpio_device_get_chip
);
316 /* dynamic allocation of GPIOs, e.g. on a hotplugged device */
317 static int gpiochip_find_base_unlocked(u16 ngpio
)
319 unsigned int base
= GPIO_DYNAMIC_BASE
;
320 struct gpio_device
*gdev
;
322 list_for_each_entry_srcu(gdev
, &gpio_devices
, list
,
323 lockdep_is_held(&gpio_devices_lock
)) {
324 /* found a free space? */
325 if (gdev
->base
>= base
+ ngpio
)
327 /* nope, check the space right after the chip */
328 base
= gdev
->base
+ gdev
->ngpio
;
329 if (base
< GPIO_DYNAMIC_BASE
)
330 base
= GPIO_DYNAMIC_BASE
;
331 if (base
> GPIO_DYNAMIC_MAX
- ngpio
)
335 if (base
<= GPIO_DYNAMIC_MAX
- ngpio
) {
336 pr_debug("%s: found new base at %d\n", __func__
, base
);
339 pr_err("%s: cannot find free range\n", __func__
);
345 * gpiod_get_direction - return the current direction of a GPIO
346 * @desc: GPIO to get the direction of
349 * 0 for output, 1 for input, or an error code in case of error.
351 * This function may sleep if gpiod_cansleep() is true.
353 int gpiod_get_direction(struct gpio_desc
*desc
)
360 * We cannot use VALIDATE_DESC() as we must not return 0 for a NULL
361 * descriptor like we usually do.
363 if (IS_ERR_OR_NULL(desc
))
366 CLASS(gpio_chip_guard
, guard
)(desc
);
370 offset
= gpio_chip_hwgpio(desc
);
371 flags
= READ_ONCE(desc
->flags
);
374 * Open drain emulation using input mode may incorrectly report
375 * input here, fix that up.
377 if (test_bit(FLAG_OPEN_DRAIN
, &flags
) &&
378 test_bit(FLAG_IS_OUT
, &flags
))
381 if (!guard
.gc
->get_direction
)
384 ret
= guard
.gc
->get_direction(guard
.gc
, offset
);
389 * GPIO_LINE_DIRECTION_IN or other positive,
390 * otherwise GPIO_LINE_DIRECTION_OUT.
395 assign_bit(FLAG_IS_OUT
, &flags
, !ret
);
396 WRITE_ONCE(desc
->flags
, flags
);
400 EXPORT_SYMBOL_GPL(gpiod_get_direction
);
403 * Add a new chip to the global chips list, keeping the list of chips sorted
404 * by range(means [base, base + ngpio - 1]) order.
407 * -EBUSY if the new chip overlaps with some other chip's integer space.
409 static int gpiodev_add_to_list_unlocked(struct gpio_device
*gdev
)
411 struct gpio_device
*prev
, *next
;
413 lockdep_assert_held(&gpio_devices_lock
);
415 if (list_empty(&gpio_devices
)) {
416 /* initial entry in list */
417 list_add_tail_rcu(&gdev
->list
, &gpio_devices
);
421 next
= list_first_entry(&gpio_devices
, struct gpio_device
, list
);
422 if (gdev
->base
+ gdev
->ngpio
<= next
->base
) {
423 /* add before first entry */
424 list_add_rcu(&gdev
->list
, &gpio_devices
);
428 prev
= list_last_entry(&gpio_devices
, struct gpio_device
, list
);
429 if (prev
->base
+ prev
->ngpio
<= gdev
->base
) {
430 /* add behind last entry */
431 list_add_tail_rcu(&gdev
->list
, &gpio_devices
);
435 list_for_each_entry_safe(prev
, next
, &gpio_devices
, list
) {
436 /* at the end of the list */
437 if (&next
->list
== &gpio_devices
)
440 /* add between prev and next */
441 if (prev
->base
+ prev
->ngpio
<= gdev
->base
442 && gdev
->base
+ gdev
->ngpio
<= next
->base
) {
443 list_add_rcu(&gdev
->list
, &prev
->list
);
448 synchronize_srcu(&gpio_devices_srcu
);
454 * Convert a GPIO name to its descriptor
455 * Note that there is no guarantee that GPIO names are globally unique!
456 * Hence this function will return, if it exists, a reference to the first GPIO
457 * line found that matches the given name.
459 static struct gpio_desc
*gpio_name_to_desc(const char * const name
)
461 struct gpio_device
*gdev
;
462 struct gpio_desc
*desc
;
463 struct gpio_chip
*gc
;
468 guard(srcu
)(&gpio_devices_srcu
);
470 list_for_each_entry_srcu(gdev
, &gpio_devices
, list
,
471 srcu_read_lock_held(&gpio_devices_srcu
)) {
472 guard(srcu
)(&gdev
->srcu
);
474 gc
= srcu_dereference(gdev
->chip
, &gdev
->srcu
);
478 for_each_gpio_desc(gc
, desc
) {
479 if (desc
->name
&& !strcmp(desc
->name
, name
))
488 * Take the names from gc->names and assign them to their GPIO descriptors.
489 * Warn if a name is already used for a GPIO line on a different GPIO chip.
492 * 1. Non-unique names are still accepted,
493 * 2. Name collisions within the same GPIO chip are not reported.
495 static void gpiochip_set_desc_names(struct gpio_chip
*gc
)
497 struct gpio_device
*gdev
= gc
->gpiodev
;
500 /* First check all names if they are unique */
501 for (i
= 0; i
!= gc
->ngpio
; ++i
) {
502 struct gpio_desc
*gpio
;
504 gpio
= gpio_name_to_desc(gc
->names
[i
]);
507 "Detected name collision for GPIO name '%s'\n",
511 /* Then add all names to the GPIO descriptors */
512 for (i
= 0; i
!= gc
->ngpio
; ++i
)
513 gdev
->descs
[i
].name
= gc
->names
[i
];
517 * gpiochip_set_names - Set GPIO line names using device properties
518 * @chip: GPIO chip whose lines should be named, if possible
520 * Looks for device property "gpio-line-names" and if it exists assigns
521 * GPIO line names for the chip. The memory allocated for the assigned
522 * names belong to the underlying firmware node and should not be released
525 static int gpiochip_set_names(struct gpio_chip
*chip
)
527 struct gpio_device
*gdev
= chip
->gpiodev
;
528 struct device
*dev
= &gdev
->dev
;
533 count
= device_property_string_array_count(dev
, "gpio-line-names");
538 * When offset is set in the driver side we assume the driver internally
539 * is using more than one gpiochip per the same device. We have to stop
540 * setting friendly names if the specified ones with 'gpio-line-names'
541 * are less than the offset in the device itself. This means all the
542 * lines are not present for every single pin within all the internal
545 if (count
<= chip
->offset
) {
546 dev_warn(dev
, "gpio-line-names too short (length %d), cannot map names for the gpiochip at offset %u\n",
547 count
, chip
->offset
);
551 names
= kcalloc(count
, sizeof(*names
), GFP_KERNEL
);
555 ret
= device_property_read_string_array(dev
, "gpio-line-names",
558 dev_warn(dev
, "failed to read GPIO line names\n");
564 * When more that one gpiochip per device is used, 'count' can
565 * contain at most number gpiochips x chip->ngpio. We have to
566 * correctly distribute all defined lines taking into account
567 * chip->offset as starting point from where we will assign
568 * the names to pins from the 'names' array. Since property
569 * 'gpio-line-names' cannot contains gaps, we have to be sure
570 * we only assign those pins that really exists since chip->ngpio
571 * can be different of the chip->offset.
573 count
= (count
> chip
->offset
) ? count
- chip
->offset
: count
;
574 if (count
> chip
->ngpio
)
577 for (i
= 0; i
< count
; i
++) {
579 * Allow overriding "fixed" names provided by the GPIO
580 * provider. The "fixed" names are more often than not
581 * generic and less informative than the names given in
584 if (names
[chip
->offset
+ i
] && names
[chip
->offset
+ i
][0])
585 gdev
->descs
[i
].name
= names
[chip
->offset
+ i
];
593 static unsigned long *gpiochip_allocate_mask(struct gpio_chip
*gc
)
597 p
= bitmap_alloc(gc
->ngpio
, GFP_KERNEL
);
601 /* Assume by default all GPIOs are valid */
602 bitmap_fill(p
, gc
->ngpio
);
607 static void gpiochip_free_mask(unsigned long **p
)
613 static unsigned int gpiochip_count_reserved_ranges(struct gpio_chip
*gc
)
615 struct device
*dev
= &gc
->gpiodev
->dev
;
618 /* Format is "start, count, ..." */
619 size
= device_property_count_u32(dev
, "gpio-reserved-ranges");
620 if (size
> 0 && size
% 2 == 0)
626 static int gpiochip_apply_reserved_ranges(struct gpio_chip
*gc
)
628 struct device
*dev
= &gc
->gpiodev
->dev
;
633 size
= gpiochip_count_reserved_ranges(gc
);
637 ranges
= kmalloc_array(size
, sizeof(*ranges
), GFP_KERNEL
);
641 ret
= device_property_read_u32_array(dev
, "gpio-reserved-ranges",
649 u32 count
= ranges
[--size
];
650 u32 start
= ranges
[--size
];
652 if (start
>= gc
->ngpio
|| start
+ count
> gc
->ngpio
)
655 bitmap_clear(gc
->valid_mask
, start
, count
);
662 static int gpiochip_init_valid_mask(struct gpio_chip
*gc
)
666 if (!(gpiochip_count_reserved_ranges(gc
) || gc
->init_valid_mask
))
669 gc
->valid_mask
= gpiochip_allocate_mask(gc
);
673 ret
= gpiochip_apply_reserved_ranges(gc
);
677 if (gc
->init_valid_mask
)
678 return gc
->init_valid_mask(gc
,
685 static void gpiochip_free_valid_mask(struct gpio_chip
*gc
)
687 gpiochip_free_mask(&gc
->valid_mask
);
690 static int gpiochip_add_pin_ranges(struct gpio_chip
*gc
)
693 * Device Tree platforms are supposed to use "gpio-ranges"
694 * property. This check ensures that the ->add_pin_ranges()
695 * won't be called for them.
697 if (device_property_present(&gc
->gpiodev
->dev
, "gpio-ranges"))
700 if (gc
->add_pin_ranges
)
701 return gc
->add_pin_ranges(gc
);
706 bool gpiochip_line_is_valid(const struct gpio_chip
*gc
,
709 /* No mask means all valid */
710 if (likely(!gc
->valid_mask
))
712 return test_bit(offset
, gc
->valid_mask
);
714 EXPORT_SYMBOL_GPL(gpiochip_line_is_valid
);
716 static void gpiod_free_irqs(struct gpio_desc
*desc
)
718 int irq
= gpiod_to_irq(desc
);
719 struct irq_desc
*irqd
= irq_to_desc(irq
);
724 * Make sure the action doesn't go away while we're
725 * dereferencing it. Retrieve and store the cookie value.
726 * If the irq is freed after we release the lock, that's
727 * alright - the underlying maple tree lookup will return NULL
728 * and nothing will happen in free_irq().
730 scoped_guard(mutex
, &irqd
->request_mutex
) {
731 if (!irq_desc_has_action(irqd
))
734 cookie
= irqd
->action
->dev_id
;
737 free_irq(irq
, cookie
);
742 * The chip is going away but there may be users who had requested interrupts
743 * on its GPIO lines who have no idea about its removal and have no way of
744 * being notified about it. We need to free any interrupts still in use here or
745 * we'll leak memory and resources (like procfs files).
747 static void gpiochip_free_remaining_irqs(struct gpio_chip
*gc
)
749 struct gpio_desc
*desc
;
751 for_each_gpio_desc_with_flag(gc
, desc
, FLAG_USED_AS_IRQ
)
752 gpiod_free_irqs(desc
);
755 static void gpiodev_release(struct device
*dev
)
757 struct gpio_device
*gdev
= to_gpio_device(dev
);
759 /* Call pending kfree()s for descriptor labels. */
760 synchronize_srcu(&gdev
->desc_srcu
);
761 cleanup_srcu_struct(&gdev
->desc_srcu
);
763 ida_free(&gpio_ida
, gdev
->id
);
764 kfree_const(gdev
->label
);
766 cleanup_srcu_struct(&gdev
->srcu
);
770 static const struct device_type gpio_dev_type
= {
772 .release
= gpiodev_release
,
775 #ifdef CONFIG_GPIO_CDEV
776 #define gcdev_register(gdev, devt) gpiolib_cdev_register((gdev), (devt))
777 #define gcdev_unregister(gdev) gpiolib_cdev_unregister((gdev))
780 * gpiolib_cdev_register() indirectly calls device_add(), which is still
781 * required even when cdev is not selected.
783 #define gcdev_register(gdev, devt) device_add(&(gdev)->dev)
784 #define gcdev_unregister(gdev) device_del(&(gdev)->dev)
787 static int gpiochip_setup_dev(struct gpio_device
*gdev
)
789 struct fwnode_handle
*fwnode
= dev_fwnode(&gdev
->dev
);
792 device_initialize(&gdev
->dev
);
795 * If fwnode doesn't belong to another device, it's safe to clear its
798 if (fwnode
&& !fwnode
->dev
)
799 fwnode_dev_initialized(fwnode
, false);
801 ret
= gcdev_register(gdev
, gpio_devt
);
805 ret
= gpiochip_sysfs_register(gdev
);
807 goto err_remove_device
;
809 dev_dbg(&gdev
->dev
, "registered GPIOs %u to %u on %s\n", gdev
->base
,
810 gdev
->base
+ gdev
->ngpio
- 1, gdev
->label
);
815 gcdev_unregister(gdev
);
819 static void gpiochip_machine_hog(struct gpio_chip
*gc
, struct gpiod_hog
*hog
)
821 struct gpio_desc
*desc
;
824 desc
= gpiochip_get_desc(gc
, hog
->chip_hwnum
);
826 chip_err(gc
, "%s: unable to get GPIO desc: %ld\n", __func__
,
831 rv
= gpiod_hog(desc
, hog
->line_name
, hog
->lflags
, hog
->dflags
);
833 gpiod_err(desc
, "%s: unable to hog GPIO line (%s:%u): %d\n",
834 __func__
, gc
->label
, hog
->chip_hwnum
, rv
);
837 static void machine_gpiochip_add(struct gpio_chip
*gc
)
839 struct gpiod_hog
*hog
;
841 mutex_lock(&gpio_machine_hogs_mutex
);
843 list_for_each_entry(hog
, &gpio_machine_hogs
, list
) {
844 if (!strcmp(gc
->label
, hog
->chip_label
))
845 gpiochip_machine_hog(gc
, hog
);
848 mutex_unlock(&gpio_machine_hogs_mutex
);
851 static void gpiochip_setup_devs(void)
853 struct gpio_device
*gdev
;
856 guard(srcu
)(&gpio_devices_srcu
);
858 list_for_each_entry_srcu(gdev
, &gpio_devices
, list
,
859 srcu_read_lock_held(&gpio_devices_srcu
)) {
860 ret
= gpiochip_setup_dev(gdev
);
863 "Failed to initialize gpio device (%d)\n", ret
);
867 static void gpiochip_set_data(struct gpio_chip
*gc
, void *data
)
869 gc
->gpiodev
->data
= data
;
873 * gpiochip_get_data() - get per-subdriver data for the chip
877 * The per-subdriver data for the chip.
879 void *gpiochip_get_data(struct gpio_chip
*gc
)
881 return gc
->gpiodev
->data
;
883 EXPORT_SYMBOL_GPL(gpiochip_get_data
);
885 int gpiochip_get_ngpios(struct gpio_chip
*gc
, struct device
*dev
)
887 u32 ngpios
= gc
->ngpio
;
891 ret
= device_property_read_u32(dev
, "ngpios", &ngpios
);
894 * -ENODATA means that there is no property found and
895 * we want to issue the error message to the user.
896 * Besides that, we want to return different error code
897 * to state that supplied value is not valid.
906 if (gc
->ngpio
== 0) {
907 chip_err(gc
, "tried to insert a GPIO chip with zero lines\n");
911 if (gc
->ngpio
> FASTPATH_NGPIO
)
912 chip_warn(gc
, "line cnt %u is greater than fast path cnt %u\n",
913 gc
->ngpio
, FASTPATH_NGPIO
);
917 EXPORT_SYMBOL_GPL(gpiochip_get_ngpios
);
919 int gpiochip_add_data_with_key(struct gpio_chip
*gc
, void *data
,
920 struct lock_class_key
*lock_key
,
921 struct lock_class_key
*request_key
)
923 struct gpio_device
*gdev
;
924 unsigned int desc_index
;
929 * First: allocate and populate the internal stat container, and
930 * set up the struct device.
932 gdev
= kzalloc(sizeof(*gdev
), GFP_KERNEL
);
936 gdev
->dev
.type
= &gpio_dev_type
;
937 gdev
->dev
.bus
= &gpio_bus_type
;
938 gdev
->dev
.parent
= gc
->parent
;
939 rcu_assign_pointer(gdev
->chip
, gc
);
942 gpiochip_set_data(gc
, data
);
945 * If the calling driver did not initialize firmware node,
946 * do it here using the parent device, if any.
949 device_set_node(&gdev
->dev
, gc
->fwnode
);
951 device_set_node(&gdev
->dev
, dev_fwnode(gc
->parent
));
953 gdev
->id
= ida_alloc(&gpio_ida
, GFP_KERNEL
);
959 ret
= dev_set_name(&gdev
->dev
, GPIOCHIP_NAME
"%d", gdev
->id
);
963 if (gc
->parent
&& gc
->parent
->driver
)
964 gdev
->owner
= gc
->parent
->driver
->owner
;
966 /* TODO: remove chip->owner */
967 gdev
->owner
= gc
->owner
;
969 gdev
->owner
= THIS_MODULE
;
971 ret
= gpiochip_get_ngpios(gc
, &gdev
->dev
);
973 goto err_free_dev_name
;
975 gdev
->descs
= kcalloc(gc
->ngpio
, sizeof(*gdev
->descs
), GFP_KERNEL
);
978 goto err_free_dev_name
;
981 gdev
->label
= kstrdup_const(gc
->label
?: "unknown", GFP_KERNEL
);
987 gdev
->ngpio
= gc
->ngpio
;
988 gdev
->can_sleep
= gc
->can_sleep
;
990 scoped_guard(mutex
, &gpio_devices_lock
) {
992 * TODO: this allocates a Linux GPIO number base in the global
993 * GPIO numberspace for this chip. In the long run we want to
994 * get *rid* of this numberspace and use only descriptors, but
995 * it may be a pipe dream. It will not happen before we get rid
996 * of the sysfs interface anyways.
1000 base
= gpiochip_find_base_unlocked(gc
->ngpio
);
1004 goto err_free_label
;
1008 * TODO: it should not be necessary to reflect the
1009 * assigned base outside of the GPIO subsystem. Go over
1010 * drivers and see if anyone makes use of this, else
1011 * drop this and assign a poison instead.
1015 dev_warn(&gdev
->dev
,
1016 "Static allocation of GPIO base is deprecated, use dynamic allocation.\n");
1021 ret
= gpiodev_add_to_list_unlocked(gdev
);
1023 chip_err(gc
, "GPIO integer space overlap, cannot add chip\n");
1024 goto err_free_label
;
1028 ATOMIC_INIT_NOTIFIER_HEAD(&gdev
->line_state_notifier
);
1029 BLOCKING_INIT_NOTIFIER_HEAD(&gdev
->device_notifier
);
1031 ret
= init_srcu_struct(&gdev
->srcu
);
1033 goto err_remove_from_list
;
1035 ret
= init_srcu_struct(&gdev
->desc_srcu
);
1037 goto err_cleanup_gdev_srcu
;
1039 #ifdef CONFIG_PINCTRL
1040 INIT_LIST_HEAD(&gdev
->pin_ranges
);
1044 gpiochip_set_desc_names(gc
);
1046 ret
= gpiochip_set_names(gc
);
1048 goto err_cleanup_desc_srcu
;
1050 ret
= gpiochip_init_valid_mask(gc
);
1052 goto err_cleanup_desc_srcu
;
1054 for (desc_index
= 0; desc_index
< gc
->ngpio
; desc_index
++) {
1055 struct gpio_desc
*desc
= &gdev
->descs
[desc_index
];
1059 if (gc
->get_direction
&& gpiochip_line_is_valid(gc
, desc_index
)) {
1060 assign_bit(FLAG_IS_OUT
,
1061 &desc
->flags
, !gc
->get_direction(gc
, desc_index
));
1063 assign_bit(FLAG_IS_OUT
,
1064 &desc
->flags
, !gc
->direction_input
);
1068 ret
= of_gpiochip_add(gc
);
1070 goto err_free_valid_mask
;
1072 ret
= gpiochip_add_pin_ranges(gc
);
1074 goto err_remove_of_chip
;
1076 acpi_gpiochip_add(gc
);
1078 machine_gpiochip_add(gc
);
1080 ret
= gpiochip_irqchip_init_valid_mask(gc
);
1084 ret
= gpiochip_irqchip_init_hw(gc
);
1086 goto err_remove_irqchip_mask
;
1088 ret
= gpiochip_add_irqchip(gc
, lock_key
, request_key
);
1090 goto err_remove_irqchip_mask
;
1093 * By first adding the chardev, and then adding the device,
1094 * we get a device node entry in sysfs under
1095 * /sys/bus/gpio/devices/gpiochipN/dev that can be used for
1096 * coldplug of device nodes and other udev business.
1097 * We can do this only if gpiolib has been initialized.
1098 * Otherwise, defer until later.
1100 if (gpiolib_initialized
) {
1101 ret
= gpiochip_setup_dev(gdev
);
1103 goto err_remove_irqchip
;
1108 gpiochip_irqchip_remove(gc
);
1109 err_remove_irqchip_mask
:
1110 gpiochip_irqchip_free_valid_mask(gc
);
1112 gpiochip_free_hogs(gc
);
1113 acpi_gpiochip_remove(gc
);
1114 gpiochip_remove_pin_ranges(gc
);
1116 of_gpiochip_remove(gc
);
1117 err_free_valid_mask
:
1118 gpiochip_free_valid_mask(gc
);
1119 err_cleanup_desc_srcu
:
1120 cleanup_srcu_struct(&gdev
->desc_srcu
);
1121 err_cleanup_gdev_srcu
:
1122 cleanup_srcu_struct(&gdev
->srcu
);
1123 err_remove_from_list
:
1124 scoped_guard(mutex
, &gpio_devices_lock
)
1125 list_del_rcu(&gdev
->list
);
1126 synchronize_srcu(&gpio_devices_srcu
);
1127 if (gdev
->dev
.release
) {
1128 /* release() has been registered by gpiochip_setup_dev() */
1129 gpio_device_put(gdev
);
1130 goto err_print_message
;
1133 kfree_const(gdev
->label
);
1137 kfree(dev_name(&gdev
->dev
));
1139 ida_free(&gpio_ida
, gdev
->id
);
1143 /* failures here can mean systems won't boot... */
1144 if (ret
!= -EPROBE_DEFER
) {
1145 pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__
,
1146 base
, base
+ (int)gc
->ngpio
- 1,
1147 gc
->label
? : "generic", ret
);
1151 EXPORT_SYMBOL_GPL(gpiochip_add_data_with_key
);
1154 * gpiochip_remove() - unregister a gpio_chip
1155 * @gc: the chip to unregister
1157 * A gpio_chip with any GPIOs still requested may not be removed.
1159 void gpiochip_remove(struct gpio_chip
*gc
)
1161 struct gpio_device
*gdev
= gc
->gpiodev
;
1163 /* FIXME: should the legacy sysfs handling be moved to gpio_device? */
1164 gpiochip_sysfs_unregister(gdev
);
1165 gpiochip_free_hogs(gc
);
1166 gpiochip_free_remaining_irqs(gc
);
1168 scoped_guard(mutex
, &gpio_devices_lock
)
1169 list_del_rcu(&gdev
->list
);
1170 synchronize_srcu(&gpio_devices_srcu
);
1172 /* Numb the device, cancelling all outstanding operations */
1173 rcu_assign_pointer(gdev
->chip
, NULL
);
1174 synchronize_srcu(&gdev
->srcu
);
1175 gpiochip_irqchip_remove(gc
);
1176 acpi_gpiochip_remove(gc
);
1177 of_gpiochip_remove(gc
);
1178 gpiochip_remove_pin_ranges(gc
);
1179 gpiochip_free_valid_mask(gc
);
1181 * We accept no more calls into the driver from this point, so
1182 * NULL the driver data pointer.
1184 gpiochip_set_data(gc
, NULL
);
1187 * The gpiochip side puts its use of the device to rest here:
1188 * if there are no userspace clients, the chardev and device will
1189 * be removed, else it will be dangling until the last user is
1192 gcdev_unregister(gdev
);
1193 gpio_device_put(gdev
);
1195 EXPORT_SYMBOL_GPL(gpiochip_remove
);
1198 * gpio_device_find() - find a specific GPIO device
1199 * @data: data to pass to match function
1200 * @match: Callback function to check gpio_chip
1203 * New reference to struct gpio_device.
1205 * Similar to bus_find_device(). It returns a reference to a gpio_device as
1206 * determined by a user supplied @match callback. The callback should return
1207 * 0 if the device doesn't match and non-zero if it does. If the callback
1208 * returns non-zero, this function will return to the caller and not iterate
1209 * over any more gpio_devices.
1211 * The callback takes the GPIO chip structure as argument. During the execution
1212 * of the callback function the chip is protected from being freed. TODO: This
1213 * actually has yet to be implemented.
1215 * If the function returns non-NULL, the returned reference must be freed by
1216 * the caller using gpio_device_put().
1218 struct gpio_device
*gpio_device_find(const void *data
,
1219 int (*match
)(struct gpio_chip
*gc
,
1222 struct gpio_device
*gdev
;
1223 struct gpio_chip
*gc
;
1227 guard(srcu
)(&gpio_devices_srcu
);
1229 list_for_each_entry_srcu(gdev
, &gpio_devices
, list
,
1230 srcu_read_lock_held(&gpio_devices_srcu
)) {
1231 if (!device_is_registered(&gdev
->dev
))
1234 guard(srcu
)(&gdev
->srcu
);
1236 gc
= srcu_dereference(gdev
->chip
, &gdev
->srcu
);
1238 if (gc
&& match(gc
, data
))
1239 return gpio_device_get(gdev
);
1244 EXPORT_SYMBOL_GPL(gpio_device_find
);
1246 static int gpio_chip_match_by_label(struct gpio_chip
*gc
, const void *label
)
1248 return gc
->label
&& !strcmp(gc
->label
, label
);
1252 * gpio_device_find_by_label() - wrapper around gpio_device_find() finding the
1253 * GPIO device by its backing chip's label
1254 * @label: Label to lookup
1257 * Reference to the GPIO device or NULL. Reference must be released with
1258 * gpio_device_put().
1260 struct gpio_device
*gpio_device_find_by_label(const char *label
)
1262 return gpio_device_find((void *)label
, gpio_chip_match_by_label
);
1264 EXPORT_SYMBOL_GPL(gpio_device_find_by_label
);
1266 static int gpio_chip_match_by_fwnode(struct gpio_chip
*gc
, const void *fwnode
)
1268 return device_match_fwnode(&gc
->gpiodev
->dev
, fwnode
);
1272 * gpio_device_find_by_fwnode() - wrapper around gpio_device_find() finding
1273 * the GPIO device by its fwnode
1274 * @fwnode: Firmware node to lookup
1277 * Reference to the GPIO device or NULL. Reference must be released with
1278 * gpio_device_put().
1280 struct gpio_device
*gpio_device_find_by_fwnode(const struct fwnode_handle
*fwnode
)
1282 return gpio_device_find((void *)fwnode
, gpio_chip_match_by_fwnode
);
1284 EXPORT_SYMBOL_GPL(gpio_device_find_by_fwnode
);
1287 * gpio_device_get() - Increase the reference count of this GPIO device
1288 * @gdev: GPIO device to increase the refcount for
1293 struct gpio_device
*gpio_device_get(struct gpio_device
*gdev
)
1295 return to_gpio_device(get_device(&gdev
->dev
));
1297 EXPORT_SYMBOL_GPL(gpio_device_get
);
1300 * gpio_device_put() - Decrease the reference count of this GPIO device and
1301 * possibly free all resources associated with it.
1302 * @gdev: GPIO device to decrease the reference count for
1304 void gpio_device_put(struct gpio_device
*gdev
)
1306 put_device(&gdev
->dev
);
1308 EXPORT_SYMBOL_GPL(gpio_device_put
);
1311 * gpio_device_to_device() - Retrieve the address of the underlying struct
1313 * @gdev: GPIO device for which to return the address.
1315 * This does not increase the reference count of the GPIO device nor the
1316 * underlying struct device.
1319 * Address of struct device backing this GPIO device.
1321 struct device
*gpio_device_to_device(struct gpio_device
*gdev
)
1325 EXPORT_SYMBOL_GPL(gpio_device_to_device
);
1327 #ifdef CONFIG_GPIOLIB_IRQCHIP
1330 * The following is irqchip helper code for gpiochips.
1333 static int gpiochip_irqchip_init_hw(struct gpio_chip
*gc
)
1335 struct gpio_irq_chip
*girq
= &gc
->irq
;
1340 return girq
->init_hw(gc
);
1343 static int gpiochip_irqchip_init_valid_mask(struct gpio_chip
*gc
)
1345 struct gpio_irq_chip
*girq
= &gc
->irq
;
1347 if (!girq
->init_valid_mask
)
1350 girq
->valid_mask
= gpiochip_allocate_mask(gc
);
1351 if (!girq
->valid_mask
)
1354 girq
->init_valid_mask(gc
, girq
->valid_mask
, gc
->ngpio
);
1359 static void gpiochip_irqchip_free_valid_mask(struct gpio_chip
*gc
)
1361 gpiochip_free_mask(&gc
->irq
.valid_mask
);
1364 static bool gpiochip_irqchip_irq_valid(const struct gpio_chip
*gc
,
1365 unsigned int offset
)
1367 if (!gpiochip_line_is_valid(gc
, offset
))
1369 /* No mask means all valid */
1370 if (likely(!gc
->irq
.valid_mask
))
1372 return test_bit(offset
, gc
->irq
.valid_mask
);
1375 #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
1378 * gpiochip_set_hierarchical_irqchip() - connects a hierarchical irqchip
1380 * @gc: the gpiochip to set the irqchip hierarchical handler to
1381 * @irqchip: the irqchip to handle this level of the hierarchy, the interrupt
1382 * will then percolate up to the parent
1384 static void gpiochip_set_hierarchical_irqchip(struct gpio_chip
*gc
,
1385 struct irq_chip
*irqchip
)
1387 /* DT will deal with mapping each IRQ as we go along */
1388 if (is_of_node(gc
->irq
.fwnode
))
1392 * This is for legacy and boardfile "irqchip" fwnodes: allocate
1393 * irqs upfront instead of dynamically since we don't have the
1394 * dynamic type of allocation that hardware description languages
1395 * provide. Once all GPIO drivers using board files are gone from
1396 * the kernel we can delete this code, but for a transitional period
1397 * it is necessary to keep this around.
1399 if (is_fwnode_irqchip(gc
->irq
.fwnode
)) {
1403 for (i
= 0; i
< gc
->ngpio
; i
++) {
1404 struct irq_fwspec fwspec
;
1405 unsigned int parent_hwirq
;
1406 unsigned int parent_type
;
1407 struct gpio_irq_chip
*girq
= &gc
->irq
;
1410 * We call the child to parent translation function
1411 * only to check if the child IRQ is valid or not.
1412 * Just pick the rising edge type here as that is what
1413 * we likely need to support.
1415 ret
= girq
->child_to_parent_hwirq(gc
, i
,
1416 IRQ_TYPE_EDGE_RISING
,
1420 chip_err(gc
, "skip set-up on hwirq %d\n",
1425 fwspec
.fwnode
= gc
->irq
.fwnode
;
1426 /* This is the hwirq for the GPIO line side of things */
1427 fwspec
.param
[0] = girq
->child_offset_to_irq(gc
, i
);
1428 /* Just pick something */
1429 fwspec
.param
[1] = IRQ_TYPE_EDGE_RISING
;
1430 fwspec
.param_count
= 2;
1431 ret
= irq_domain_alloc_irqs(gc
->irq
.domain
, 1,
1432 NUMA_NO_NODE
, &fwspec
);
1435 "can not allocate irq for GPIO line %d parent hwirq %d in hierarchy domain: %d\n",
1442 chip_err(gc
, "%s unknown fwnode type proceed anyway\n", __func__
);
1447 static int gpiochip_hierarchy_irq_domain_translate(struct irq_domain
*d
,
1448 struct irq_fwspec
*fwspec
,
1449 unsigned long *hwirq
,
1452 /* We support standard DT translation */
1453 if (is_of_node(fwspec
->fwnode
) && fwspec
->param_count
== 2) {
1454 return irq_domain_translate_twocell(d
, fwspec
, hwirq
, type
);
1457 /* This is for board files and others not using DT */
1458 if (is_fwnode_irqchip(fwspec
->fwnode
)) {
1461 ret
= irq_domain_translate_twocell(d
, fwspec
, hwirq
, type
);
1464 WARN_ON(*type
== IRQ_TYPE_NONE
);
1470 static int gpiochip_hierarchy_irq_domain_alloc(struct irq_domain
*d
,
1472 unsigned int nr_irqs
,
1475 struct gpio_chip
*gc
= d
->host_data
;
1476 irq_hw_number_t hwirq
;
1477 unsigned int type
= IRQ_TYPE_NONE
;
1478 struct irq_fwspec
*fwspec
= data
;
1479 union gpio_irq_fwspec gpio_parent_fwspec
= {};
1480 unsigned int parent_hwirq
;
1481 unsigned int parent_type
;
1482 struct gpio_irq_chip
*girq
= &gc
->irq
;
1486 * The nr_irqs parameter is always one except for PCI multi-MSI
1487 * so this should not happen.
1489 WARN_ON(nr_irqs
!= 1);
1491 ret
= gc
->irq
.child_irq_domain_ops
.translate(d
, fwspec
, &hwirq
, &type
);
1495 chip_dbg(gc
, "allocate IRQ %d, hwirq %lu\n", irq
, hwirq
);
1497 ret
= girq
->child_to_parent_hwirq(gc
, hwirq
, type
,
1498 &parent_hwirq
, &parent_type
);
1500 chip_err(gc
, "can't look up hwirq %lu\n", hwirq
);
1503 chip_dbg(gc
, "found parent hwirq %u\n", parent_hwirq
);
1506 * We set handle_bad_irq because the .set_type() should
1507 * always be invoked and set the right type of handler.
1509 irq_domain_set_info(d
,
1518 /* This parent only handles asserted level IRQs */
1519 ret
= girq
->populate_parent_alloc_arg(gc
, &gpio_parent_fwspec
,
1520 parent_hwirq
, parent_type
);
1524 chip_dbg(gc
, "alloc_irqs_parent for %d parent hwirq %d\n",
1526 irq_set_lockdep_class(irq
, gc
->irq
.lock_key
, gc
->irq
.request_key
);
1527 ret
= irq_domain_alloc_irqs_parent(d
, irq
, 1, &gpio_parent_fwspec
);
1529 * If the parent irqdomain is msi, the interrupts have already
1530 * been allocated, so the EEXIST is good.
1532 if (irq_domain_is_msi(d
->parent
) && (ret
== -EEXIST
))
1536 "failed to allocate parent hwirq %d for hwirq %lu\n",
1537 parent_hwirq
, hwirq
);
1542 static unsigned int gpiochip_child_offset_to_irq_noop(struct gpio_chip
*gc
,
1543 unsigned int offset
)
1549 * gpiochip_irq_domain_activate() - Lock a GPIO to be used as an IRQ
1550 * @domain: The IRQ domain used by this IRQ chip
1551 * @data: Outermost irq_data associated with the IRQ
1552 * @reserve: If set, only reserve an interrupt vector instead of assigning one
1554 * This function is a wrapper that calls gpiochip_lock_as_irq() and is to be
1555 * used as the activate function for the &struct irq_domain_ops. The host_data
1556 * for the IRQ domain must be the &struct gpio_chip.
1559 * 0 on success, or negative errno on failure.
1561 static int gpiochip_irq_domain_activate(struct irq_domain
*domain
,
1562 struct irq_data
*data
, bool reserve
)
1564 struct gpio_chip
*gc
= domain
->host_data
;
1565 unsigned int hwirq
= irqd_to_hwirq(data
);
1567 return gpiochip_lock_as_irq(gc
, hwirq
);
1571 * gpiochip_irq_domain_deactivate() - Unlock a GPIO used as an IRQ
1572 * @domain: The IRQ domain used by this IRQ chip
1573 * @data: Outermost irq_data associated with the IRQ
1575 * This function is a wrapper that will call gpiochip_unlock_as_irq() and is to
1576 * be used as the deactivate function for the &struct irq_domain_ops. The
1577 * host_data for the IRQ domain must be the &struct gpio_chip.
1579 static void gpiochip_irq_domain_deactivate(struct irq_domain
*domain
,
1580 struct irq_data
*data
)
1582 struct gpio_chip
*gc
= domain
->host_data
;
1583 unsigned int hwirq
= irqd_to_hwirq(data
);
1585 return gpiochip_unlock_as_irq(gc
, hwirq
);
1588 static void gpiochip_hierarchy_setup_domain_ops(struct irq_domain_ops
*ops
)
1590 ops
->activate
= gpiochip_irq_domain_activate
;
1591 ops
->deactivate
= gpiochip_irq_domain_deactivate
;
1592 ops
->alloc
= gpiochip_hierarchy_irq_domain_alloc
;
1595 * We only allow overriding the translate() and free() functions for
1596 * hierarchical chips, and this should only be done if the user
1597 * really need something other than 1:1 translation for translate()
1598 * callback and free if user wants to free up any resources which
1599 * were allocated during callbacks, for example populate_parent_alloc_arg.
1601 if (!ops
->translate
)
1602 ops
->translate
= gpiochip_hierarchy_irq_domain_translate
;
1604 ops
->free
= irq_domain_free_irqs_common
;
1607 static struct irq_domain
*gpiochip_hierarchy_create_domain(struct gpio_chip
*gc
)
1609 struct irq_domain
*domain
;
1611 if (!gc
->irq
.child_to_parent_hwirq
||
1613 chip_err(gc
, "missing irqdomain vital data\n");
1614 return ERR_PTR(-EINVAL
);
1617 if (!gc
->irq
.child_offset_to_irq
)
1618 gc
->irq
.child_offset_to_irq
= gpiochip_child_offset_to_irq_noop
;
1620 if (!gc
->irq
.populate_parent_alloc_arg
)
1621 gc
->irq
.populate_parent_alloc_arg
=
1622 gpiochip_populate_parent_fwspec_twocell
;
1624 gpiochip_hierarchy_setup_domain_ops(&gc
->irq
.child_irq_domain_ops
);
1626 domain
= irq_domain_create_hierarchy(
1627 gc
->irq
.parent_domain
,
1631 &gc
->irq
.child_irq_domain_ops
,
1635 return ERR_PTR(-ENOMEM
);
1637 gpiochip_set_hierarchical_irqchip(gc
, gc
->irq
.chip
);
1642 static bool gpiochip_hierarchy_is_hierarchical(struct gpio_chip
*gc
)
1644 return !!gc
->irq
.parent_domain
;
1647 int gpiochip_populate_parent_fwspec_twocell(struct gpio_chip
*gc
,
1648 union gpio_irq_fwspec
*gfwspec
,
1649 unsigned int parent_hwirq
,
1650 unsigned int parent_type
)
1652 struct irq_fwspec
*fwspec
= &gfwspec
->fwspec
;
1654 fwspec
->fwnode
= gc
->irq
.parent_domain
->fwnode
;
1655 fwspec
->param_count
= 2;
1656 fwspec
->param
[0] = parent_hwirq
;
1657 fwspec
->param
[1] = parent_type
;
1661 EXPORT_SYMBOL_GPL(gpiochip_populate_parent_fwspec_twocell
);
1663 int gpiochip_populate_parent_fwspec_fourcell(struct gpio_chip
*gc
,
1664 union gpio_irq_fwspec
*gfwspec
,
1665 unsigned int parent_hwirq
,
1666 unsigned int parent_type
)
1668 struct irq_fwspec
*fwspec
= &gfwspec
->fwspec
;
1670 fwspec
->fwnode
= gc
->irq
.parent_domain
->fwnode
;
1671 fwspec
->param_count
= 4;
1672 fwspec
->param
[0] = 0;
1673 fwspec
->param
[1] = parent_hwirq
;
1674 fwspec
->param
[2] = 0;
1675 fwspec
->param
[3] = parent_type
;
1679 EXPORT_SYMBOL_GPL(gpiochip_populate_parent_fwspec_fourcell
);
1683 static struct irq_domain
*gpiochip_hierarchy_create_domain(struct gpio_chip
*gc
)
1685 return ERR_PTR(-EINVAL
);
1688 static bool gpiochip_hierarchy_is_hierarchical(struct gpio_chip
*gc
)
1693 #endif /* CONFIG_IRQ_DOMAIN_HIERARCHY */
1696 * gpiochip_irq_map() - maps an IRQ into a GPIO irqchip
1697 * @d: the irqdomain used by this irqchip
1698 * @irq: the global irq number used by this GPIO irqchip irq
1699 * @hwirq: the local IRQ/GPIO line offset on this gpiochip
1701 * This function will set up the mapping for a certain IRQ line on a
1702 * gpiochip by assigning the gpiochip as chip data, and using the irqchip
1703 * stored inside the gpiochip.
1706 * 0 on success, or negative errno on failure.
1708 static int gpiochip_irq_map(struct irq_domain
*d
, unsigned int irq
,
1709 irq_hw_number_t hwirq
)
1711 struct gpio_chip
*gc
= d
->host_data
;
1714 if (!gpiochip_irqchip_irq_valid(gc
, hwirq
))
1717 irq_set_chip_data(irq
, gc
);
1719 * This lock class tells lockdep that GPIO irqs are in a different
1720 * category than their parents, so it won't report false recursion.
1722 irq_set_lockdep_class(irq
, gc
->irq
.lock_key
, gc
->irq
.request_key
);
1723 irq_set_chip_and_handler(irq
, gc
->irq
.chip
, gc
->irq
.handler
);
1724 /* Chips that use nested thread handlers have them marked */
1725 if (gc
->irq
.threaded
)
1726 irq_set_nested_thread(irq
, 1);
1727 irq_set_noprobe(irq
);
1729 if (gc
->irq
.num_parents
== 1)
1730 ret
= irq_set_parent(irq
, gc
->irq
.parents
[0]);
1731 else if (gc
->irq
.map
)
1732 ret
= irq_set_parent(irq
, gc
->irq
.map
[hwirq
]);
1738 * No set-up of the hardware will happen if IRQ_TYPE_NONE
1739 * is passed as default type.
1741 if (gc
->irq
.default_type
!= IRQ_TYPE_NONE
)
1742 irq_set_irq_type(irq
, gc
->irq
.default_type
);
1747 static void gpiochip_irq_unmap(struct irq_domain
*d
, unsigned int irq
)
1749 struct gpio_chip
*gc
= d
->host_data
;
1751 if (gc
->irq
.threaded
)
1752 irq_set_nested_thread(irq
, 0);
1753 irq_set_chip_and_handler(irq
, NULL
, NULL
);
1754 irq_set_chip_data(irq
, NULL
);
1757 static const struct irq_domain_ops gpiochip_domain_ops
= {
1758 .map
= gpiochip_irq_map
,
1759 .unmap
= gpiochip_irq_unmap
,
1760 /* Virtually all GPIO irqchips are twocell:ed */
1761 .xlate
= irq_domain_xlate_twocell
,
1764 static struct irq_domain
*gpiochip_simple_create_domain(struct gpio_chip
*gc
)
1766 struct fwnode_handle
*fwnode
= dev_fwnode(&gc
->gpiodev
->dev
);
1767 struct irq_domain
*domain
;
1769 domain
= irq_domain_create_simple(fwnode
, gc
->ngpio
, gc
->irq
.first
,
1770 &gpiochip_domain_ops
, gc
);
1772 return ERR_PTR(-EINVAL
);
1777 static int gpiochip_to_irq(struct gpio_chip
*gc
, unsigned int offset
)
1779 struct irq_domain
*domain
= gc
->irq
.domain
;
1781 #ifdef CONFIG_GPIOLIB_IRQCHIP
1783 * Avoid race condition with other code, which tries to lookup
1784 * an IRQ before the irqchip has been properly registered,
1785 * i.e. while gpiochip is still being brought up.
1787 if (!gc
->irq
.initialized
)
1788 return -EPROBE_DEFER
;
1791 if (!gpiochip_irqchip_irq_valid(gc
, offset
))
1794 #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
1795 if (irq_domain_is_hierarchy(domain
)) {
1796 struct irq_fwspec spec
;
1798 spec
.fwnode
= domain
->fwnode
;
1799 spec
.param_count
= 2;
1800 spec
.param
[0] = gc
->irq
.child_offset_to_irq(gc
, offset
);
1801 spec
.param
[1] = IRQ_TYPE_NONE
;
1803 return irq_create_fwspec_mapping(&spec
);
1807 return irq_create_mapping(domain
, offset
);
1810 int gpiochip_irq_reqres(struct irq_data
*d
)
1812 struct gpio_chip
*gc
= irq_data_get_irq_chip_data(d
);
1813 unsigned int hwirq
= irqd_to_hwirq(d
);
1815 return gpiochip_reqres_irq(gc
, hwirq
);
1817 EXPORT_SYMBOL(gpiochip_irq_reqres
);
1819 void gpiochip_irq_relres(struct irq_data
*d
)
1821 struct gpio_chip
*gc
= irq_data_get_irq_chip_data(d
);
1822 unsigned int hwirq
= irqd_to_hwirq(d
);
1824 gpiochip_relres_irq(gc
, hwirq
);
1826 EXPORT_SYMBOL(gpiochip_irq_relres
);
1828 static void gpiochip_irq_mask(struct irq_data
*d
)
1830 struct gpio_chip
*gc
= irq_data_get_irq_chip_data(d
);
1831 unsigned int hwirq
= irqd_to_hwirq(d
);
1833 if (gc
->irq
.irq_mask
)
1834 gc
->irq
.irq_mask(d
);
1835 gpiochip_disable_irq(gc
, hwirq
);
1838 static void gpiochip_irq_unmask(struct irq_data
*d
)
1840 struct gpio_chip
*gc
= irq_data_get_irq_chip_data(d
);
1841 unsigned int hwirq
= irqd_to_hwirq(d
);
1843 gpiochip_enable_irq(gc
, hwirq
);
1844 if (gc
->irq
.irq_unmask
)
1845 gc
->irq
.irq_unmask(d
);
1848 static void gpiochip_irq_enable(struct irq_data
*d
)
1850 struct gpio_chip
*gc
= irq_data_get_irq_chip_data(d
);
1851 unsigned int hwirq
= irqd_to_hwirq(d
);
1853 gpiochip_enable_irq(gc
, hwirq
);
1854 gc
->irq
.irq_enable(d
);
1857 static void gpiochip_irq_disable(struct irq_data
*d
)
1859 struct gpio_chip
*gc
= irq_data_get_irq_chip_data(d
);
1860 unsigned int hwirq
= irqd_to_hwirq(d
);
1862 gc
->irq
.irq_disable(d
);
1863 gpiochip_disable_irq(gc
, hwirq
);
1866 static void gpiochip_set_irq_hooks(struct gpio_chip
*gc
)
1868 struct irq_chip
*irqchip
= gc
->irq
.chip
;
1870 if (irqchip
->flags
& IRQCHIP_IMMUTABLE
)
1873 chip_warn(gc
, "not an immutable chip, please consider fixing it!\n");
1875 if (!irqchip
->irq_request_resources
&&
1876 !irqchip
->irq_release_resources
) {
1877 irqchip
->irq_request_resources
= gpiochip_irq_reqres
;
1878 irqchip
->irq_release_resources
= gpiochip_irq_relres
;
1880 if (WARN_ON(gc
->irq
.irq_enable
))
1882 /* Check if the irqchip already has this hook... */
1883 if (irqchip
->irq_enable
== gpiochip_irq_enable
||
1884 irqchip
->irq_mask
== gpiochip_irq_mask
) {
1886 * ...and if so, give a gentle warning that this is bad
1890 "detected irqchip that is shared with multiple gpiochips: please fix the driver.\n");
1894 if (irqchip
->irq_disable
) {
1895 gc
->irq
.irq_disable
= irqchip
->irq_disable
;
1896 irqchip
->irq_disable
= gpiochip_irq_disable
;
1898 gc
->irq
.irq_mask
= irqchip
->irq_mask
;
1899 irqchip
->irq_mask
= gpiochip_irq_mask
;
1902 if (irqchip
->irq_enable
) {
1903 gc
->irq
.irq_enable
= irqchip
->irq_enable
;
1904 irqchip
->irq_enable
= gpiochip_irq_enable
;
1906 gc
->irq
.irq_unmask
= irqchip
->irq_unmask
;
1907 irqchip
->irq_unmask
= gpiochip_irq_unmask
;
1911 static int gpiochip_irqchip_add_allocated_domain(struct gpio_chip
*gc
,
1912 struct irq_domain
*domain
,
1913 bool allocated_externally
)
1919 chip_warn(gc
, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__
);
1921 gc
->to_irq
= gpiochip_to_irq
;
1922 gc
->irq
.domain
= domain
;
1923 gc
->irq
.domain_is_allocated_externally
= allocated_externally
;
1926 * Using barrier() here to prevent compiler from reordering
1927 * gc->irq.initialized before adding irqdomain.
1931 gc
->irq
.initialized
= true;
1937 * gpiochip_add_irqchip() - adds an IRQ chip to a GPIO chip
1938 * @gc: the GPIO chip to add the IRQ chip to
1939 * @lock_key: lockdep class for IRQ lock
1940 * @request_key: lockdep class for IRQ request
1943 * 0 on success, or a negative errno on failure.
1945 static int gpiochip_add_irqchip(struct gpio_chip
*gc
,
1946 struct lock_class_key
*lock_key
,
1947 struct lock_class_key
*request_key
)
1949 struct fwnode_handle
*fwnode
= dev_fwnode(&gc
->gpiodev
->dev
);
1950 struct irq_chip
*irqchip
= gc
->irq
.chip
;
1951 struct irq_domain
*domain
;
1959 if (gc
->irq
.parent_handler
&& gc
->can_sleep
) {
1960 chip_err(gc
, "you cannot have chained interrupts on a chip that may sleep\n");
1964 type
= gc
->irq
.default_type
;
1967 * Specifying a default trigger is a terrible idea if DT or ACPI is
1968 * used to configure the interrupts, as you may end up with
1969 * conflicting triggers. Tell the user, and reset to NONE.
1971 if (WARN(fwnode
&& type
!= IRQ_TYPE_NONE
,
1972 "%pfw: Ignoring %u default trigger\n", fwnode
, type
))
1973 type
= IRQ_TYPE_NONE
;
1975 gc
->irq
.default_type
= type
;
1976 gc
->irq
.lock_key
= lock_key
;
1977 gc
->irq
.request_key
= request_key
;
1979 /* If a parent irqdomain is provided, let's build a hierarchy */
1980 if (gpiochip_hierarchy_is_hierarchical(gc
)) {
1981 domain
= gpiochip_hierarchy_create_domain(gc
);
1983 domain
= gpiochip_simple_create_domain(gc
);
1986 return PTR_ERR(domain
);
1988 if (gc
->irq
.parent_handler
) {
1989 for (i
= 0; i
< gc
->irq
.num_parents
; i
++) {
1992 if (gc
->irq
.per_parent_data
)
1993 data
= gc
->irq
.parent_handler_data_array
[i
];
1995 data
= gc
->irq
.parent_handler_data
?: gc
;
1998 * The parent IRQ chip is already using the chip_data
1999 * for this IRQ chip, so our callbacks simply use the
2002 irq_set_chained_handler_and_data(gc
->irq
.parents
[i
],
2003 gc
->irq
.parent_handler
,
2008 gpiochip_set_irq_hooks(gc
);
2010 ret
= gpiochip_irqchip_add_allocated_domain(gc
, domain
, false);
2014 acpi_gpiochip_request_interrupts(gc
);
2020 * gpiochip_irqchip_remove() - removes an irqchip added to a gpiochip
2021 * @gc: the gpiochip to remove the irqchip from
2023 * This is called only from gpiochip_remove()
2025 static void gpiochip_irqchip_remove(struct gpio_chip
*gc
)
2027 struct irq_chip
*irqchip
= gc
->irq
.chip
;
2028 unsigned int offset
;
2030 acpi_gpiochip_free_interrupts(gc
);
2032 if (irqchip
&& gc
->irq
.parent_handler
) {
2033 struct gpio_irq_chip
*irq
= &gc
->irq
;
2036 for (i
= 0; i
< irq
->num_parents
; i
++)
2037 irq_set_chained_handler_and_data(irq
->parents
[i
],
2041 /* Remove all IRQ mappings and delete the domain */
2042 if (!gc
->irq
.domain_is_allocated_externally
&& gc
->irq
.domain
) {
2045 for (offset
= 0; offset
< gc
->ngpio
; offset
++) {
2046 if (!gpiochip_irqchip_irq_valid(gc
, offset
))
2049 irq
= irq_find_mapping(gc
->irq
.domain
, offset
);
2050 irq_dispose_mapping(irq
);
2053 irq_domain_remove(gc
->irq
.domain
);
2056 if (irqchip
&& !(irqchip
->flags
& IRQCHIP_IMMUTABLE
)) {
2057 if (irqchip
->irq_request_resources
== gpiochip_irq_reqres
) {
2058 irqchip
->irq_request_resources
= NULL
;
2059 irqchip
->irq_release_resources
= NULL
;
2061 if (irqchip
->irq_enable
== gpiochip_irq_enable
) {
2062 irqchip
->irq_enable
= gc
->irq
.irq_enable
;
2063 irqchip
->irq_disable
= gc
->irq
.irq_disable
;
2066 gc
->irq
.irq_enable
= NULL
;
2067 gc
->irq
.irq_disable
= NULL
;
2068 gc
->irq
.chip
= NULL
;
2070 gpiochip_irqchip_free_valid_mask(gc
);
2074 * gpiochip_irqchip_add_domain() - adds an irqdomain to a gpiochip
2075 * @gc: the gpiochip to add the irqchip to
2076 * @domain: the irqdomain to add to the gpiochip
2078 * This function adds an IRQ domain to the gpiochip.
2081 * 0 on success, or negative errno on failure.
2083 int gpiochip_irqchip_add_domain(struct gpio_chip
*gc
,
2084 struct irq_domain
*domain
)
2086 return gpiochip_irqchip_add_allocated_domain(gc
, domain
, true);
2088 EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_domain
);
2090 #else /* CONFIG_GPIOLIB_IRQCHIP */
2092 static inline int gpiochip_add_irqchip(struct gpio_chip
*gc
,
2093 struct lock_class_key
*lock_key
,
2094 struct lock_class_key
*request_key
)
2098 static void gpiochip_irqchip_remove(struct gpio_chip
*gc
) {}
2100 static inline int gpiochip_irqchip_init_hw(struct gpio_chip
*gc
)
2105 static inline int gpiochip_irqchip_init_valid_mask(struct gpio_chip
*gc
)
2109 static inline void gpiochip_irqchip_free_valid_mask(struct gpio_chip
*gc
)
2112 #endif /* CONFIG_GPIOLIB_IRQCHIP */
2115 * gpiochip_generic_request() - request the gpio function for a pin
2116 * @gc: the gpiochip owning the GPIO
2117 * @offset: the offset of the GPIO to request for GPIO function
2120 * 0 on success, or negative errno on failure.
2122 int gpiochip_generic_request(struct gpio_chip
*gc
, unsigned int offset
)
2124 #ifdef CONFIG_PINCTRL
2125 if (list_empty(&gc
->gpiodev
->pin_ranges
))
2129 return pinctrl_gpio_request(gc
, offset
);
2131 EXPORT_SYMBOL_GPL(gpiochip_generic_request
);
2134 * gpiochip_generic_free() - free the gpio function from a pin
2135 * @gc: the gpiochip to request the gpio function for
2136 * @offset: the offset of the GPIO to free from GPIO function
2138 void gpiochip_generic_free(struct gpio_chip
*gc
, unsigned int offset
)
2140 #ifdef CONFIG_PINCTRL
2141 if (list_empty(&gc
->gpiodev
->pin_ranges
))
2145 pinctrl_gpio_free(gc
, offset
);
2147 EXPORT_SYMBOL_GPL(gpiochip_generic_free
);
2150 * gpiochip_generic_config() - apply configuration for a pin
2151 * @gc: the gpiochip owning the GPIO
2152 * @offset: the offset of the GPIO to apply the configuration
2153 * @config: the configuration to be applied
2156 * 0 on success, or negative errno on failure.
2158 int gpiochip_generic_config(struct gpio_chip
*gc
, unsigned int offset
,
2159 unsigned long config
)
2161 #ifdef CONFIG_PINCTRL
2162 if (list_empty(&gc
->gpiodev
->pin_ranges
))
2166 return pinctrl_gpio_set_config(gc
, offset
, config
);
2168 EXPORT_SYMBOL_GPL(gpiochip_generic_config
);
2170 #ifdef CONFIG_PINCTRL
2173 * gpiochip_add_pingroup_range() - add a range for GPIO <-> pin mapping
2174 * @gc: the gpiochip to add the range for
2175 * @pctldev: the pin controller to map to
2176 * @gpio_offset: the start offset in the current gpio_chip number space
2177 * @pin_group: name of the pin group inside the pin controller
2179 * Calling this function directly from a DeviceTree-supported
2180 * pinctrl driver is DEPRECATED. Please see Section 2.1 of
2181 * Documentation/devicetree/bindings/gpio/gpio.txt on how to
2182 * bind pinctrl and gpio drivers via the "gpio-ranges" property.
2185 * 0 on success, or negative errno on failure.
2187 int gpiochip_add_pingroup_range(struct gpio_chip
*gc
,
2188 struct pinctrl_dev
*pctldev
,
2189 unsigned int gpio_offset
, const char *pin_group
)
2191 struct gpio_pin_range
*pin_range
;
2192 struct gpio_device
*gdev
= gc
->gpiodev
;
2195 pin_range
= kzalloc(sizeof(*pin_range
), GFP_KERNEL
);
2197 chip_err(gc
, "failed to allocate pin ranges\n");
2201 /* Use local offset as range ID */
2202 pin_range
->range
.id
= gpio_offset
;
2203 pin_range
->range
.gc
= gc
;
2204 pin_range
->range
.name
= gc
->label
;
2205 pin_range
->range
.base
= gdev
->base
+ gpio_offset
;
2206 pin_range
->pctldev
= pctldev
;
2208 ret
= pinctrl_get_group_pins(pctldev
, pin_group
,
2209 &pin_range
->range
.pins
,
2210 &pin_range
->range
.npins
);
2216 pinctrl_add_gpio_range(pctldev
, &pin_range
->range
);
2218 chip_dbg(gc
, "created GPIO range %d->%d ==> %s PINGRP %s\n",
2219 gpio_offset
, gpio_offset
+ pin_range
->range
.npins
- 1,
2220 pinctrl_dev_get_devname(pctldev
), pin_group
);
2222 list_add_tail(&pin_range
->node
, &gdev
->pin_ranges
);
2226 EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range
);
2229 * gpiochip_add_pin_range() - add a range for GPIO <-> pin mapping
2230 * @gc: the gpiochip to add the range for
2231 * @pinctl_name: the dev_name() of the pin controller to map to
2232 * @gpio_offset: the start offset in the current gpio_chip number space
2233 * @pin_offset: the start offset in the pin controller number space
2234 * @npins: the number of pins from the offset of each pin space (GPIO and
2235 * pin controller) to accumulate in this range
2237 * Calling this function directly from a DeviceTree-supported
2238 * pinctrl driver is DEPRECATED. Please see Section 2.1 of
2239 * Documentation/devicetree/bindings/gpio/gpio.txt on how to
2240 * bind pinctrl and gpio drivers via the "gpio-ranges" property.
2243 * 0 on success, or a negative errno on failure.
2245 int gpiochip_add_pin_range(struct gpio_chip
*gc
, const char *pinctl_name
,
2246 unsigned int gpio_offset
, unsigned int pin_offset
,
2249 struct gpio_pin_range
*pin_range
;
2250 struct gpio_device
*gdev
= gc
->gpiodev
;
2253 pin_range
= kzalloc(sizeof(*pin_range
), GFP_KERNEL
);
2255 chip_err(gc
, "failed to allocate pin ranges\n");
2259 /* Use local offset as range ID */
2260 pin_range
->range
.id
= gpio_offset
;
2261 pin_range
->range
.gc
= gc
;
2262 pin_range
->range
.name
= gc
->label
;
2263 pin_range
->range
.base
= gdev
->base
+ gpio_offset
;
2264 pin_range
->range
.pin_base
= pin_offset
;
2265 pin_range
->range
.npins
= npins
;
2266 pin_range
->pctldev
= pinctrl_find_and_add_gpio_range(pinctl_name
,
2268 if (IS_ERR(pin_range
->pctldev
)) {
2269 ret
= PTR_ERR(pin_range
->pctldev
);
2270 chip_err(gc
, "could not create pin range\n");
2274 chip_dbg(gc
, "created GPIO range %d->%d ==> %s PIN %d->%d\n",
2275 gpio_offset
, gpio_offset
+ npins
- 1,
2277 pin_offset
, pin_offset
+ npins
- 1);
2279 list_add_tail(&pin_range
->node
, &gdev
->pin_ranges
);
2283 EXPORT_SYMBOL_GPL(gpiochip_add_pin_range
);
2286 * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings
2287 * @gc: the chip to remove all the mappings for
2289 void gpiochip_remove_pin_ranges(struct gpio_chip
*gc
)
2291 struct gpio_pin_range
*pin_range
, *tmp
;
2292 struct gpio_device
*gdev
= gc
->gpiodev
;
2294 list_for_each_entry_safe(pin_range
, tmp
, &gdev
->pin_ranges
, node
) {
2295 list_del(&pin_range
->node
);
2296 pinctrl_remove_gpio_range(pin_range
->pctldev
,
2301 EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges
);
2303 #endif /* CONFIG_PINCTRL */
2305 /* These "optional" allocation calls help prevent drivers from stomping
2306 * on each other, and help provide better diagnostics in debugfs.
2307 * They're called even less than the "set direction" calls.
2309 static int gpiod_request_commit(struct gpio_desc
*desc
, const char *label
)
2311 unsigned int offset
;
2314 CLASS(gpio_chip_guard
, guard
)(desc
);
2318 if (test_and_set_bit(FLAG_REQUESTED
, &desc
->flags
))
2321 /* NOTE: gpio_request() can be called in early boot,
2322 * before IRQs are enabled, for non-sleeping (SOC) GPIOs.
2325 if (guard
.gc
->request
) {
2326 offset
= gpio_chip_hwgpio(desc
);
2327 if (gpiochip_line_is_valid(guard
.gc
, offset
))
2328 ret
= guard
.gc
->request(guard
.gc
, offset
);
2335 if (guard
.gc
->get_direction
)
2336 gpiod_get_direction(desc
);
2338 ret
= desc_set_label(desc
, label
? : "?");
2345 clear_bit(FLAG_REQUESTED
, &desc
->flags
);
2350 * This descriptor validation needs to be inserted verbatim into each
2351 * function taking a descriptor, so we need to use a preprocessor
2352 * macro to avoid endless duplication. If the desc is NULL it is an
2353 * optional GPIO and calls should just bail out.
2355 static int validate_desc(const struct gpio_desc
*desc
, const char *func
)
2361 pr_warn("%s: invalid GPIO (errorpointer)\n", func
);
2362 return PTR_ERR(desc
);
2368 #define VALIDATE_DESC(desc) do { \
2369 int __valid = validate_desc(desc, __func__); \
2374 #define VALIDATE_DESC_VOID(desc) do { \
2375 int __valid = validate_desc(desc, __func__); \
2380 int gpiod_request(struct gpio_desc
*desc
, const char *label
)
2382 int ret
= -EPROBE_DEFER
;
2384 VALIDATE_DESC(desc
);
2386 if (try_module_get(desc
->gdev
->owner
)) {
2387 ret
= gpiod_request_commit(desc
, label
);
2389 module_put(desc
->gdev
->owner
);
2391 gpio_device_get(desc
->gdev
);
2395 gpiod_dbg(desc
, "%s: status %d\n", __func__
, ret
);
2400 static void gpiod_free_commit(struct gpio_desc
*desc
)
2402 unsigned long flags
;
2406 CLASS(gpio_chip_guard
, guard
)(desc
);
2408 flags
= READ_ONCE(desc
->flags
);
2410 if (guard
.gc
&& test_bit(FLAG_REQUESTED
, &flags
)) {
2412 guard
.gc
->free(guard
.gc
, gpio_chip_hwgpio(desc
));
2414 clear_bit(FLAG_ACTIVE_LOW
, &flags
);
2415 clear_bit(FLAG_REQUESTED
, &flags
);
2416 clear_bit(FLAG_OPEN_DRAIN
, &flags
);
2417 clear_bit(FLAG_OPEN_SOURCE
, &flags
);
2418 clear_bit(FLAG_PULL_UP
, &flags
);
2419 clear_bit(FLAG_PULL_DOWN
, &flags
);
2420 clear_bit(FLAG_BIAS_DISABLE
, &flags
);
2421 clear_bit(FLAG_EDGE_RISING
, &flags
);
2422 clear_bit(FLAG_EDGE_FALLING
, &flags
);
2423 clear_bit(FLAG_IS_HOGGED
, &flags
);
2424 #ifdef CONFIG_OF_DYNAMIC
2425 WRITE_ONCE(desc
->hog
, NULL
);
2427 desc_set_label(desc
, NULL
);
2428 WRITE_ONCE(desc
->flags
, flags
);
2429 #ifdef CONFIG_GPIO_CDEV
2430 WRITE_ONCE(desc
->debounce_period_us
, 0);
2432 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_RELEASED
);
2436 void gpiod_free(struct gpio_desc
*desc
)
2438 VALIDATE_DESC_VOID(desc
);
2440 gpiod_free_commit(desc
);
2441 module_put(desc
->gdev
->owner
);
2442 gpio_device_put(desc
->gdev
);
2446 * gpiochip_dup_line_label - Get a copy of the consumer label.
2447 * @gc: GPIO chip controlling this line.
2448 * @offset: Hardware offset of the line.
2451 * Pointer to a copy of the consumer label if the line is requested or NULL
2452 * if it's not. If a valid pointer was returned, it must be freed using
2453 * kfree(). In case of a memory allocation error, the function returns %ENOMEM.
2455 * Must not be called from atomic context.
2457 char *gpiochip_dup_line_label(struct gpio_chip
*gc
, unsigned int offset
)
2459 struct gpio_desc
*desc
;
2462 desc
= gpiochip_get_desc(gc
, offset
);
2466 if (!test_bit(FLAG_REQUESTED
, &desc
->flags
))
2469 guard(srcu
)(&desc
->gdev
->desc_srcu
);
2471 label
= kstrdup(gpiod_get_label(desc
), GFP_KERNEL
);
2473 return ERR_PTR(-ENOMEM
);
2477 EXPORT_SYMBOL_GPL(gpiochip_dup_line_label
);
2479 static inline const char *function_name_or_default(const char *con_id
)
2481 return con_id
?: "(default)";
2485 * gpiochip_request_own_desc - Allow GPIO chip to request its own descriptor
2487 * @hwnum: hardware number of the GPIO for which to request the descriptor
2488 * @label: label for the GPIO
2489 * @lflags: lookup flags for this GPIO or 0 if default, this can be used to
2490 * specify things like line inversion semantics with the machine flags
2491 * such as GPIO_OUT_LOW
2492 * @dflags: descriptor request flags for this GPIO or 0 if default, this
2493 * can be used to specify consumer semantics such as open drain
2495 * Function allows GPIO chip drivers to request and use their own GPIO
2496 * descriptors via gpiolib API. Difference to gpiod_request() is that this
2497 * function will not increase reference count of the GPIO chip module. This
2498 * allows the GPIO chip module to be unloaded as needed (we assume that the
2499 * GPIO chip driver handles freeing the GPIOs it has requested).
2502 * A pointer to the GPIO descriptor, or an ERR_PTR()-encoded negative error
2505 struct gpio_desc
*gpiochip_request_own_desc(struct gpio_chip
*gc
,
2508 enum gpio_lookup_flags lflags
,
2509 enum gpiod_flags dflags
)
2511 struct gpio_desc
*desc
= gpiochip_get_desc(gc
, hwnum
);
2512 const char *name
= function_name_or_default(label
);
2516 chip_err(gc
, "failed to get GPIO %s descriptor\n", name
);
2520 ret
= gpiod_request_commit(desc
, label
);
2522 return ERR_PTR(ret
);
2524 ret
= gpiod_configure_flags(desc
, label
, lflags
, dflags
);
2526 gpiod_free_commit(desc
);
2527 chip_err(gc
, "setup of own GPIO %s failed\n", name
);
2528 return ERR_PTR(ret
);
2531 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_REQUESTED
);
2535 EXPORT_SYMBOL_GPL(gpiochip_request_own_desc
);
2538 * gpiochip_free_own_desc - Free GPIO requested by the chip driver
2539 * @desc: GPIO descriptor to free
2541 * Function frees the given GPIO requested previously with
2542 * gpiochip_request_own_desc().
2544 void gpiochip_free_own_desc(struct gpio_desc
*desc
)
2547 gpiod_free_commit(desc
);
2549 EXPORT_SYMBOL_GPL(gpiochip_free_own_desc
);
2552 * Drivers MUST set GPIO direction before making get/set calls. In
2553 * some cases this is done in early boot, before IRQs are enabled.
2555 * As a rule these aren't called more than once (except for drivers
2556 * using the open-drain emulation idiom) so these are natural places
2557 * to accumulate extra debugging checks. Note that we can't (yet)
2558 * rely on gpio_request() having been called beforehand.
2561 int gpio_do_set_config(struct gpio_desc
*desc
, unsigned long config
)
2565 CLASS(gpio_chip_guard
, guard
)(desc
);
2569 if (!guard
.gc
->set_config
)
2572 ret
= guard
.gc
->set_config(guard
.gc
, gpio_chip_hwgpio(desc
), config
);
2573 #ifdef CONFIG_GPIO_CDEV
2575 * Special case - if we're setting debounce period, we need to store
2576 * it in the descriptor in case user-space wants to know it.
2578 if (!ret
&& pinconf_to_config_param(config
) == PIN_CONFIG_INPUT_DEBOUNCE
)
2579 WRITE_ONCE(desc
->debounce_period_us
,
2580 pinconf_to_config_argument(config
));
2585 static int gpio_set_config_with_argument(struct gpio_desc
*desc
,
2586 enum pin_config_param mode
,
2589 unsigned long config
;
2591 config
= pinconf_to_config_packed(mode
, argument
);
2592 return gpio_do_set_config(desc
, config
);
2595 static int gpio_set_config_with_argument_optional(struct gpio_desc
*desc
,
2596 enum pin_config_param mode
,
2599 struct device
*dev
= &desc
->gdev
->dev
;
2600 int gpio
= gpio_chip_hwgpio(desc
);
2603 ret
= gpio_set_config_with_argument(desc
, mode
, argument
);
2604 if (ret
!= -ENOTSUPP
)
2608 case PIN_CONFIG_PERSIST_STATE
:
2609 dev_dbg(dev
, "Persistence not supported for GPIO %d\n", gpio
);
2618 static int gpio_set_config(struct gpio_desc
*desc
, enum pin_config_param mode
)
2620 return gpio_set_config_with_argument(desc
, mode
, 0);
2623 static int gpio_set_bias(struct gpio_desc
*desc
)
2625 enum pin_config_param bias
;
2626 unsigned long flags
;
2629 flags
= READ_ONCE(desc
->flags
);
2631 if (test_bit(FLAG_BIAS_DISABLE
, &flags
))
2632 bias
= PIN_CONFIG_BIAS_DISABLE
;
2633 else if (test_bit(FLAG_PULL_UP
, &flags
))
2634 bias
= PIN_CONFIG_BIAS_PULL_UP
;
2635 else if (test_bit(FLAG_PULL_DOWN
, &flags
))
2636 bias
= PIN_CONFIG_BIAS_PULL_DOWN
;
2641 case PIN_CONFIG_BIAS_PULL_DOWN
:
2642 case PIN_CONFIG_BIAS_PULL_UP
:
2651 return gpio_set_config_with_argument_optional(desc
, bias
, arg
);
2655 * gpio_set_debounce_timeout() - Set debounce timeout
2656 * @desc: GPIO descriptor to set the debounce timeout
2657 * @debounce: Debounce timeout in microseconds
2659 * The function calls the certain GPIO driver to set debounce timeout
2663 * 0 on success, or negative errno on failure.
2665 int gpio_set_debounce_timeout(struct gpio_desc
*desc
, unsigned int debounce
)
2669 ret
= gpio_set_config_with_argument_optional(desc
,
2670 PIN_CONFIG_INPUT_DEBOUNCE
,
2673 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_CONFIG
);
2679 * gpiod_direction_input - set the GPIO direction to input
2680 * @desc: GPIO to set to input
2682 * Set the direction of the passed GPIO to input, such as gpiod_get_value() can
2683 * be called safely on it.
2686 * 0 on success, or negative errno on failure.
2688 int gpiod_direction_input(struct gpio_desc
*desc
)
2692 VALIDATE_DESC(desc
);
2694 ret
= gpiod_direction_input_nonotify(desc
);
2696 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_CONFIG
);
2700 EXPORT_SYMBOL_GPL(gpiod_direction_input
);
2702 int gpiod_direction_input_nonotify(struct gpio_desc
*desc
)
2706 CLASS(gpio_chip_guard
, guard
)(desc
);
2711 * It is legal to have no .get() and .direction_input() specified if
2712 * the chip is output-only, but you can't specify .direction_input()
2713 * and not support the .get() operation, that doesn't make sense.
2715 if (!guard
.gc
->get
&& guard
.gc
->direction_input
) {
2717 "%s: missing get() but have direction_input()\n",
2723 * If we have a .direction_input() callback, things are simple,
2724 * just call it. Else we are some input-only chip so try to check the
2725 * direction (if .get_direction() is supported) else we silently
2726 * assume we are in input mode after this.
2728 if (guard
.gc
->direction_input
) {
2729 ret
= guard
.gc
->direction_input(guard
.gc
,
2730 gpio_chip_hwgpio(desc
));
2731 } else if (guard
.gc
->get_direction
&&
2732 (guard
.gc
->get_direction(guard
.gc
,
2733 gpio_chip_hwgpio(desc
)) != 1)) {
2735 "%s: missing direction_input() operation and line is output\n",
2740 clear_bit(FLAG_IS_OUT
, &desc
->flags
);
2741 ret
= gpio_set_bias(desc
);
2744 trace_gpio_direction(desc_to_gpio(desc
), 1, ret
);
2749 static int gpiod_direction_output_raw_commit(struct gpio_desc
*desc
, int value
)
2751 int val
= !!value
, ret
= 0;
2753 CLASS(gpio_chip_guard
, guard
)(desc
);
2758 * It's OK not to specify .direction_output() if the gpiochip is
2759 * output-only, but if there is then not even a .set() operation it
2760 * is pretty tricky to drive the output line.
2762 if (!guard
.gc
->set
&& !guard
.gc
->direction_output
) {
2764 "%s: missing set() and direction_output() operations\n",
2769 if (guard
.gc
->direction_output
) {
2770 ret
= guard
.gc
->direction_output(guard
.gc
,
2771 gpio_chip_hwgpio(desc
), val
);
2773 /* Check that we are in output mode if we can */
2774 if (guard
.gc
->get_direction
&&
2775 guard
.gc
->get_direction(guard
.gc
, gpio_chip_hwgpio(desc
))) {
2777 "%s: missing direction_output() operation\n",
2782 * If we can't actively set the direction, we are some
2783 * output-only chip, so just drive the output as desired.
2785 guard
.gc
->set(guard
.gc
, gpio_chip_hwgpio(desc
), val
);
2789 set_bit(FLAG_IS_OUT
, &desc
->flags
);
2790 trace_gpio_value(desc_to_gpio(desc
), 0, val
);
2791 trace_gpio_direction(desc_to_gpio(desc
), 0, ret
);
2796 * gpiod_direction_output_raw - set the GPIO direction to output
2797 * @desc: GPIO to set to output
2798 * @value: initial output value of the GPIO
2800 * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
2801 * be called safely on it. The initial value of the output must be specified
2802 * as raw value on the physical line without regard for the ACTIVE_LOW status.
2805 * 0 on success, or negative errno on failure.
2807 int gpiod_direction_output_raw(struct gpio_desc
*desc
, int value
)
2811 VALIDATE_DESC(desc
);
2813 ret
= gpiod_direction_output_raw_commit(desc
, value
);
2815 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_CONFIG
);
2819 EXPORT_SYMBOL_GPL(gpiod_direction_output_raw
);
2822 * gpiod_direction_output - set the GPIO direction to output
2823 * @desc: GPIO to set to output
2824 * @value: initial output value of the GPIO
2826 * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
2827 * be called safely on it. The initial value of the output must be specified
2828 * as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
2832 * 0 on success, or negative errno on failure.
2834 int gpiod_direction_output(struct gpio_desc
*desc
, int value
)
2838 VALIDATE_DESC(desc
);
2840 ret
= gpiod_direction_output_nonotify(desc
, value
);
2842 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_CONFIG
);
2846 EXPORT_SYMBOL_GPL(gpiod_direction_output
);
2848 int gpiod_direction_output_nonotify(struct gpio_desc
*desc
, int value
)
2850 unsigned long flags
;
2853 flags
= READ_ONCE(desc
->flags
);
2855 if (test_bit(FLAG_ACTIVE_LOW
, &flags
))
2860 /* GPIOs used for enabled IRQs shall not be set as output */
2861 if (test_bit(FLAG_USED_AS_IRQ
, &flags
) &&
2862 test_bit(FLAG_IRQ_IS_ENABLED
, &flags
)) {
2864 "%s: tried to set a GPIO tied to an IRQ as output\n",
2869 if (test_bit(FLAG_OPEN_DRAIN
, &flags
)) {
2870 /* First see if we can enable open drain in hardware */
2871 ret
= gpio_set_config(desc
, PIN_CONFIG_DRIVE_OPEN_DRAIN
);
2873 goto set_output_value
;
2874 /* Emulate open drain by not actively driving the line high */
2876 ret
= gpiod_direction_input_nonotify(desc
);
2877 goto set_output_flag
;
2879 } else if (test_bit(FLAG_OPEN_SOURCE
, &flags
)) {
2880 ret
= gpio_set_config(desc
, PIN_CONFIG_DRIVE_OPEN_SOURCE
);
2882 goto set_output_value
;
2883 /* Emulate open source by not actively driving the line low */
2885 ret
= gpiod_direction_input_nonotify(desc
);
2886 goto set_output_flag
;
2889 gpio_set_config(desc
, PIN_CONFIG_DRIVE_PUSH_PULL
);
2893 ret
= gpio_set_bias(desc
);
2896 return gpiod_direction_output_raw_commit(desc
, value
);
2900 * When emulating open-source or open-drain functionalities by not
2901 * actively driving the line (setting mode to input) we still need to
2902 * set the IS_OUT flag or otherwise we won't be able to set the line
2906 set_bit(FLAG_IS_OUT
, &desc
->flags
);
2911 * gpiod_enable_hw_timestamp_ns - Enable hardware timestamp in nanoseconds.
2913 * @desc: GPIO to enable.
2914 * @flags: Flags related to GPIO edge.
2917 * 0 on success, or negative errno on failure.
2919 int gpiod_enable_hw_timestamp_ns(struct gpio_desc
*desc
, unsigned long flags
)
2923 VALIDATE_DESC(desc
);
2925 CLASS(gpio_chip_guard
, guard
)(desc
);
2929 if (!guard
.gc
->en_hw_timestamp
) {
2930 gpiod_warn(desc
, "%s: hw ts not supported\n", __func__
);
2934 ret
= guard
.gc
->en_hw_timestamp(guard
.gc
,
2935 gpio_chip_hwgpio(desc
), flags
);
2937 gpiod_warn(desc
, "%s: hw ts request failed\n", __func__
);
2941 EXPORT_SYMBOL_GPL(gpiod_enable_hw_timestamp_ns
);
2944 * gpiod_disable_hw_timestamp_ns - Disable hardware timestamp.
2946 * @desc: GPIO to disable.
2947 * @flags: Flags related to GPIO edge, same value as used during enable call.
2950 * 0 on success, or negative errno on failure.
2952 int gpiod_disable_hw_timestamp_ns(struct gpio_desc
*desc
, unsigned long flags
)
2956 VALIDATE_DESC(desc
);
2958 CLASS(gpio_chip_guard
, guard
)(desc
);
2962 if (!guard
.gc
->dis_hw_timestamp
) {
2963 gpiod_warn(desc
, "%s: hw ts not supported\n", __func__
);
2967 ret
= guard
.gc
->dis_hw_timestamp(guard
.gc
, gpio_chip_hwgpio(desc
),
2970 gpiod_warn(desc
, "%s: hw ts release failed\n", __func__
);
2974 EXPORT_SYMBOL_GPL(gpiod_disable_hw_timestamp_ns
);
2977 * gpiod_set_config - sets @config for a GPIO
2978 * @desc: descriptor of the GPIO for which to set the configuration
2979 * @config: Same packed config format as generic pinconf
2982 * 0 on success, %-ENOTSUPP if the controller doesn't support setting the
2985 int gpiod_set_config(struct gpio_desc
*desc
, unsigned long config
)
2989 VALIDATE_DESC(desc
);
2991 ret
= gpio_do_set_config(desc
, config
);
2993 /* These are the only options we notify the userspace about. */
2994 switch (pinconf_to_config_param(config
)) {
2995 case PIN_CONFIG_BIAS_DISABLE
:
2996 case PIN_CONFIG_BIAS_PULL_DOWN
:
2997 case PIN_CONFIG_BIAS_PULL_UP
:
2998 case PIN_CONFIG_DRIVE_OPEN_DRAIN
:
2999 case PIN_CONFIG_DRIVE_OPEN_SOURCE
:
3000 case PIN_CONFIG_DRIVE_PUSH_PULL
:
3001 case PIN_CONFIG_INPUT_DEBOUNCE
:
3002 gpiod_line_state_notify(desc
,
3003 GPIO_V2_LINE_CHANGED_CONFIG
);
3012 EXPORT_SYMBOL_GPL(gpiod_set_config
);
3015 * gpiod_set_debounce - sets @debounce time for a GPIO
3016 * @desc: descriptor of the GPIO for which to set debounce time
3017 * @debounce: debounce time in microseconds
3020 * 0 on success, %-ENOTSUPP if the controller doesn't support setting the
3023 int gpiod_set_debounce(struct gpio_desc
*desc
, unsigned int debounce
)
3025 unsigned long config
;
3027 config
= pinconf_to_config_packed(PIN_CONFIG_INPUT_DEBOUNCE
, debounce
);
3028 return gpiod_set_config(desc
, config
);
3030 EXPORT_SYMBOL_GPL(gpiod_set_debounce
);
3033 * gpiod_set_transitory - Lose or retain GPIO state on suspend or reset
3034 * @desc: descriptor of the GPIO for which to configure persistence
3035 * @transitory: True to lose state on suspend or reset, false for persistence
3038 * 0 on success, otherwise a negative error code.
3040 int gpiod_set_transitory(struct gpio_desc
*desc
, bool transitory
)
3042 VALIDATE_DESC(desc
);
3044 * Handle FLAG_TRANSITORY first, enabling queries to gpiolib for
3045 * persistence state.
3047 assign_bit(FLAG_TRANSITORY
, &desc
->flags
, transitory
);
3049 /* If the driver supports it, set the persistence state now */
3050 return gpio_set_config_with_argument_optional(desc
,
3051 PIN_CONFIG_PERSIST_STATE
,
3056 * gpiod_is_active_low - test whether a GPIO is active-low or not
3057 * @desc: the gpio descriptor to test
3060 * 1 if the GPIO is active-low, 0 otherwise.
3062 int gpiod_is_active_low(const struct gpio_desc
*desc
)
3064 VALIDATE_DESC(desc
);
3065 return test_bit(FLAG_ACTIVE_LOW
, &desc
->flags
);
3067 EXPORT_SYMBOL_GPL(gpiod_is_active_low
);
3070 * gpiod_toggle_active_low - toggle whether a GPIO is active-low or not
3071 * @desc: the gpio descriptor to change
3073 void gpiod_toggle_active_low(struct gpio_desc
*desc
)
3075 VALIDATE_DESC_VOID(desc
);
3076 change_bit(FLAG_ACTIVE_LOW
, &desc
->flags
);
3077 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_CONFIG
);
3079 EXPORT_SYMBOL_GPL(gpiod_toggle_active_low
);
3081 static int gpio_chip_get_value(struct gpio_chip
*gc
, const struct gpio_desc
*desc
)
3083 return gc
->get
? gc
->get(gc
, gpio_chip_hwgpio(desc
)) : -EIO
;
3086 /* I/O calls are only valid after configuration completed; the relevant
3087 * "is this a valid GPIO" error checks should already have been done.
3089 * "Get" operations are often inlinable as reading a pin value register,
3090 * and masking the relevant bit in that register.
3092 * When "set" operations are inlinable, they involve writing that mask to
3093 * one register to set a low value, or a different register to set it high.
3094 * Otherwise locking is needed, so there may be little value to inlining.
3096 *------------------------------------------------------------------------
3098 * IMPORTANT!!! The hot paths -- get/set value -- assume that callers
3099 * have requested the GPIO. That can include implicit requesting by
3100 * a direction setting call. Marking a gpio as requested locks its chip
3101 * in memory, guaranteeing that these table lookups need no more locking
3102 * and that gpiochip_remove() will fail.
3104 * REVISIT when debugging, consider adding some instrumentation to ensure
3105 * that the GPIO was actually requested.
3108 static int gpiod_get_raw_value_commit(const struct gpio_desc
*desc
)
3110 struct gpio_device
*gdev
;
3111 struct gpio_chip
*gc
;
3114 /* FIXME Unable to use gpio_chip_guard due to const desc. */
3117 guard(srcu
)(&gdev
->srcu
);
3119 gc
= srcu_dereference(gdev
->chip
, &gdev
->srcu
);
3123 value
= gpio_chip_get_value(gc
, desc
);
3124 value
= value
< 0 ? value
: !!value
;
3125 trace_gpio_value(desc_to_gpio(desc
), 1, value
);
3129 static int gpio_chip_get_multiple(struct gpio_chip
*gc
,
3130 unsigned long *mask
, unsigned long *bits
)
3132 if (gc
->get_multiple
)
3133 return gc
->get_multiple(gc
, mask
, bits
);
3137 for_each_set_bit(i
, mask
, gc
->ngpio
) {
3138 value
= gc
->get(gc
, i
);
3141 __assign_bit(i
, bits
, value
);
3148 /* The 'other' chip must be protected with its GPIO device's SRCU. */
3149 static bool gpio_device_chip_cmp(struct gpio_device
*gdev
, struct gpio_chip
*gc
)
3151 guard(srcu
)(&gdev
->srcu
);
3153 return gc
== srcu_dereference(gdev
->chip
, &gdev
->srcu
);
3156 int gpiod_get_array_value_complex(bool raw
, bool can_sleep
,
3157 unsigned int array_size
,
3158 struct gpio_desc
**desc_array
,
3159 struct gpio_array
*array_info
,
3160 unsigned long *value_bitmap
)
3165 * Validate array_info against desc_array and its size.
3166 * It should immediately follow desc_array if both
3167 * have been obtained from the same gpiod_get_array() call.
3169 if (array_info
&& array_info
->desc
== desc_array
&&
3170 array_size
<= array_info
->size
&&
3171 (void *)array_info
== desc_array
+ array_info
->size
) {
3173 WARN_ON(array_info
->chip
->can_sleep
);
3175 ret
= gpio_chip_get_multiple(array_info
->chip
,
3176 array_info
->get_mask
,
3181 if (!raw
&& !bitmap_empty(array_info
->invert_mask
, array_size
))
3182 bitmap_xor(value_bitmap
, value_bitmap
,
3183 array_info
->invert_mask
, array_size
);
3185 i
= find_first_zero_bit(array_info
->get_mask
, array_size
);
3186 if (i
== array_size
)
3192 while (i
< array_size
) {
3193 DECLARE_BITMAP(fastpath_mask
, FASTPATH_NGPIO
);
3194 DECLARE_BITMAP(fastpath_bits
, FASTPATH_NGPIO
);
3195 unsigned long *mask
, *bits
;
3198 CLASS(gpio_chip_guard
, guard
)(desc_array
[i
]);
3202 if (likely(guard
.gc
->ngpio
<= FASTPATH_NGPIO
)) {
3203 mask
= fastpath_mask
;
3204 bits
= fastpath_bits
;
3206 gfp_t flags
= can_sleep
? GFP_KERNEL
: GFP_ATOMIC
;
3208 mask
= bitmap_alloc(guard
.gc
->ngpio
, flags
);
3212 bits
= bitmap_alloc(guard
.gc
->ngpio
, flags
);
3219 bitmap_zero(mask
, guard
.gc
->ngpio
);
3222 WARN_ON(guard
.gc
->can_sleep
);
3224 /* collect all inputs belonging to the same chip */
3227 const struct gpio_desc
*desc
= desc_array
[i
];
3228 int hwgpio
= gpio_chip_hwgpio(desc
);
3230 __set_bit(hwgpio
, mask
);
3234 i
= find_next_zero_bit(array_info
->get_mask
,
3236 } while ((i
< array_size
) &&
3237 gpio_device_chip_cmp(desc_array
[i
]->gdev
, guard
.gc
));
3239 ret
= gpio_chip_get_multiple(guard
.gc
, mask
, bits
);
3241 if (mask
!= fastpath_mask
)
3243 if (bits
!= fastpath_bits
)
3248 for (j
= first
; j
< i
; ) {
3249 const struct gpio_desc
*desc
= desc_array
[j
];
3250 int hwgpio
= gpio_chip_hwgpio(desc
);
3251 int value
= test_bit(hwgpio
, bits
);
3253 if (!raw
&& test_bit(FLAG_ACTIVE_LOW
, &desc
->flags
))
3255 __assign_bit(j
, value_bitmap
, value
);
3256 trace_gpio_value(desc_to_gpio(desc
), 1, value
);
3260 j
= find_next_zero_bit(array_info
->get_mask
, i
,
3264 if (mask
!= fastpath_mask
)
3266 if (bits
!= fastpath_bits
)
3273 * gpiod_get_raw_value() - return a gpio's raw value
3274 * @desc: gpio whose value will be returned
3277 * The GPIO's raw value, i.e. the value of the physical line disregarding
3278 * its ACTIVE_LOW status, or negative errno on failure.
3280 * This function can be called from contexts where we cannot sleep, and will
3281 * complain if the GPIO chip functions potentially sleep.
3283 int gpiod_get_raw_value(const struct gpio_desc
*desc
)
3285 VALIDATE_DESC(desc
);
3286 /* Should be using gpiod_get_raw_value_cansleep() */
3287 WARN_ON(desc
->gdev
->can_sleep
);
3288 return gpiod_get_raw_value_commit(desc
);
3290 EXPORT_SYMBOL_GPL(gpiod_get_raw_value
);
3293 * gpiod_get_value() - return a gpio's value
3294 * @desc: gpio whose value will be returned
3297 * The GPIO's logical value, i.e. taking the ACTIVE_LOW status into
3298 * account, or negative errno on failure.
3300 * This function can be called from contexts where we cannot sleep, and will
3301 * complain if the GPIO chip functions potentially sleep.
3303 int gpiod_get_value(const struct gpio_desc
*desc
)
3307 VALIDATE_DESC(desc
);
3308 /* Should be using gpiod_get_value_cansleep() */
3309 WARN_ON(desc
->gdev
->can_sleep
);
3311 value
= gpiod_get_raw_value_commit(desc
);
3315 if (test_bit(FLAG_ACTIVE_LOW
, &desc
->flags
))
3320 EXPORT_SYMBOL_GPL(gpiod_get_value
);
3323 * gpiod_get_raw_array_value() - read raw values from an array of GPIOs
3324 * @array_size: number of elements in the descriptor array / value bitmap
3325 * @desc_array: array of GPIO descriptors whose values will be read
3326 * @array_info: information on applicability of fast bitmap processing path
3327 * @value_bitmap: bitmap to store the read values
3329 * Read the raw values of the GPIOs, i.e. the values of the physical lines
3330 * without regard for their ACTIVE_LOW status.
3332 * This function can be called from contexts where we cannot sleep,
3333 * and it will complain if the GPIO chip functions potentially sleep.
3336 * 0 on success, or negative errno on failure.
3338 int gpiod_get_raw_array_value(unsigned int array_size
,
3339 struct gpio_desc
**desc_array
,
3340 struct gpio_array
*array_info
,
3341 unsigned long *value_bitmap
)
3345 return gpiod_get_array_value_complex(true, false, array_size
,
3346 desc_array
, array_info
,
3349 EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value
);
3352 * gpiod_get_array_value() - read values from an array of GPIOs
3353 * @array_size: number of elements in the descriptor array / value bitmap
3354 * @desc_array: array of GPIO descriptors whose values will be read
3355 * @array_info: information on applicability of fast bitmap processing path
3356 * @value_bitmap: bitmap to store the read values
3358 * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3361 * This function can be called from contexts where we cannot sleep,
3362 * and it will complain if the GPIO chip functions potentially sleep.
3365 * 0 on success, or negative errno on failure.
3367 int gpiod_get_array_value(unsigned int array_size
,
3368 struct gpio_desc
**desc_array
,
3369 struct gpio_array
*array_info
,
3370 unsigned long *value_bitmap
)
3374 return gpiod_get_array_value_complex(false, false, array_size
,
3375 desc_array
, array_info
,
3378 EXPORT_SYMBOL_GPL(gpiod_get_array_value
);
3381 * gpio_set_open_drain_value_commit() - Set the open drain gpio's value.
3382 * @desc: gpio descriptor whose state need to be set.
3383 * @value: Non-zero for setting it HIGH otherwise it will set to LOW.
3385 static void gpio_set_open_drain_value_commit(struct gpio_desc
*desc
, bool value
)
3387 int ret
= 0, offset
= gpio_chip_hwgpio(desc
);
3389 CLASS(gpio_chip_guard
, guard
)(desc
);
3394 ret
= guard
.gc
->direction_input(guard
.gc
, offset
);
3396 ret
= guard
.gc
->direction_output(guard
.gc
, offset
, 0);
3398 set_bit(FLAG_IS_OUT
, &desc
->flags
);
3400 trace_gpio_direction(desc_to_gpio(desc
), value
, ret
);
3403 "%s: Error in set_value for open drain err %d\n",
3408 * _gpio_set_open_source_value() - Set the open source gpio's value.
3409 * @desc: gpio descriptor whose state need to be set.
3410 * @value: Non-zero for setting it HIGH otherwise it will set to LOW.
3412 static void gpio_set_open_source_value_commit(struct gpio_desc
*desc
, bool value
)
3414 int ret
= 0, offset
= gpio_chip_hwgpio(desc
);
3416 CLASS(gpio_chip_guard
, guard
)(desc
);
3421 ret
= guard
.gc
->direction_output(guard
.gc
, offset
, 1);
3423 set_bit(FLAG_IS_OUT
, &desc
->flags
);
3425 ret
= guard
.gc
->direction_input(guard
.gc
, offset
);
3427 trace_gpio_direction(desc_to_gpio(desc
), !value
, ret
);
3430 "%s: Error in set_value for open source err %d\n",
3434 static void gpiod_set_raw_value_commit(struct gpio_desc
*desc
, bool value
)
3436 CLASS(gpio_chip_guard
, guard
)(desc
);
3440 trace_gpio_value(desc_to_gpio(desc
), 0, value
);
3441 guard
.gc
->set(guard
.gc
, gpio_chip_hwgpio(desc
), value
);
3445 * set multiple outputs on the same chip;
3446 * use the chip's set_multiple function if available;
3447 * otherwise set the outputs sequentially;
3448 * @chip: the GPIO chip we operate on
3449 * @mask: bit mask array; one bit per output; BITS_PER_LONG bits per word
3450 * defines which outputs are to be changed
3451 * @bits: bit value array; one bit per output; BITS_PER_LONG bits per word
3452 * defines the values the outputs specified by mask are to be set to
3454 static void gpio_chip_set_multiple(struct gpio_chip
*gc
,
3455 unsigned long *mask
, unsigned long *bits
)
3457 if (gc
->set_multiple
) {
3458 gc
->set_multiple(gc
, mask
, bits
);
3462 /* set outputs if the corresponding mask bit is set */
3463 for_each_set_bit(i
, mask
, gc
->ngpio
)
3464 gc
->set(gc
, i
, test_bit(i
, bits
));
3468 int gpiod_set_array_value_complex(bool raw
, bool can_sleep
,
3469 unsigned int array_size
,
3470 struct gpio_desc
**desc_array
,
3471 struct gpio_array
*array_info
,
3472 unsigned long *value_bitmap
)
3477 * Validate array_info against desc_array and its size.
3478 * It should immediately follow desc_array if both
3479 * have been obtained from the same gpiod_get_array() call.
3481 if (array_info
&& array_info
->desc
== desc_array
&&
3482 array_size
<= array_info
->size
&&
3483 (void *)array_info
== desc_array
+ array_info
->size
) {
3485 WARN_ON(array_info
->chip
->can_sleep
);
3487 if (!raw
&& !bitmap_empty(array_info
->invert_mask
, array_size
))
3488 bitmap_xor(value_bitmap
, value_bitmap
,
3489 array_info
->invert_mask
, array_size
);
3491 gpio_chip_set_multiple(array_info
->chip
, array_info
->set_mask
,
3494 i
= find_first_zero_bit(array_info
->set_mask
, array_size
);
3495 if (i
== array_size
)
3501 while (i
< array_size
) {
3502 DECLARE_BITMAP(fastpath_mask
, FASTPATH_NGPIO
);
3503 DECLARE_BITMAP(fastpath_bits
, FASTPATH_NGPIO
);
3504 unsigned long *mask
, *bits
;
3507 CLASS(gpio_chip_guard
, guard
)(desc_array
[i
]);
3511 if (likely(guard
.gc
->ngpio
<= FASTPATH_NGPIO
)) {
3512 mask
= fastpath_mask
;
3513 bits
= fastpath_bits
;
3515 gfp_t flags
= can_sleep
? GFP_KERNEL
: GFP_ATOMIC
;
3517 mask
= bitmap_alloc(guard
.gc
->ngpio
, flags
);
3521 bits
= bitmap_alloc(guard
.gc
->ngpio
, flags
);
3528 bitmap_zero(mask
, guard
.gc
->ngpio
);
3531 WARN_ON(guard
.gc
->can_sleep
);
3534 struct gpio_desc
*desc
= desc_array
[i
];
3535 int hwgpio
= gpio_chip_hwgpio(desc
);
3536 int value
= test_bit(i
, value_bitmap
);
3539 * Pins applicable for fast input but not for
3540 * fast output processing may have been already
3541 * inverted inside the fast path, skip them.
3543 if (!raw
&& !(array_info
&&
3544 test_bit(i
, array_info
->invert_mask
)) &&
3545 test_bit(FLAG_ACTIVE_LOW
, &desc
->flags
))
3547 trace_gpio_value(desc_to_gpio(desc
), 0, value
);
3549 * collect all normal outputs belonging to the same chip
3550 * open drain and open source outputs are set individually
3552 if (test_bit(FLAG_OPEN_DRAIN
, &desc
->flags
) && !raw
) {
3553 gpio_set_open_drain_value_commit(desc
, value
);
3554 } else if (test_bit(FLAG_OPEN_SOURCE
, &desc
->flags
) && !raw
) {
3555 gpio_set_open_source_value_commit(desc
, value
);
3557 __set_bit(hwgpio
, mask
);
3558 __assign_bit(hwgpio
, bits
, value
);
3564 i
= find_next_zero_bit(array_info
->set_mask
,
3566 } while ((i
< array_size
) &&
3567 gpio_device_chip_cmp(desc_array
[i
]->gdev
, guard
.gc
));
3568 /* push collected bits to outputs */
3570 gpio_chip_set_multiple(guard
.gc
, mask
, bits
);
3572 if (mask
!= fastpath_mask
)
3574 if (bits
!= fastpath_bits
)
3581 * gpiod_set_raw_value() - assign a gpio's raw value
3582 * @desc: gpio whose value will be assigned
3583 * @value: value to assign
3585 * Set the raw value of the GPIO, i.e. the value of its physical line without
3586 * regard for its ACTIVE_LOW status.
3588 * This function can be called from contexts where we cannot sleep, and will
3589 * complain if the GPIO chip functions potentially sleep.
3591 void gpiod_set_raw_value(struct gpio_desc
*desc
, int value
)
3593 VALIDATE_DESC_VOID(desc
);
3594 /* Should be using gpiod_set_raw_value_cansleep() */
3595 WARN_ON(desc
->gdev
->can_sleep
);
3596 gpiod_set_raw_value_commit(desc
, value
);
3598 EXPORT_SYMBOL_GPL(gpiod_set_raw_value
);
3601 * gpiod_set_value_nocheck() - set a GPIO line value without checking
3602 * @desc: the descriptor to set the value on
3603 * @value: value to set
3605 * This sets the value of a GPIO line backing a descriptor, applying
3606 * different semantic quirks like active low and open drain/source
3609 static void gpiod_set_value_nocheck(struct gpio_desc
*desc
, int value
)
3611 if (test_bit(FLAG_ACTIVE_LOW
, &desc
->flags
))
3613 if (test_bit(FLAG_OPEN_DRAIN
, &desc
->flags
))
3614 gpio_set_open_drain_value_commit(desc
, value
);
3615 else if (test_bit(FLAG_OPEN_SOURCE
, &desc
->flags
))
3616 gpio_set_open_source_value_commit(desc
, value
);
3618 gpiod_set_raw_value_commit(desc
, value
);
3622 * gpiod_set_value() - assign a gpio's value
3623 * @desc: gpio whose value will be assigned
3624 * @value: value to assign
3626 * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW,
3627 * OPEN_DRAIN and OPEN_SOURCE flags into account.
3629 * This function can be called from contexts where we cannot sleep, and will
3630 * complain if the GPIO chip functions potentially sleep.
3632 void gpiod_set_value(struct gpio_desc
*desc
, int value
)
3634 VALIDATE_DESC_VOID(desc
);
3635 /* Should be using gpiod_set_value_cansleep() */
3636 WARN_ON(desc
->gdev
->can_sleep
);
3637 gpiod_set_value_nocheck(desc
, value
);
3639 EXPORT_SYMBOL_GPL(gpiod_set_value
);
3642 * gpiod_set_raw_array_value() - assign values to an array of GPIOs
3643 * @array_size: number of elements in the descriptor array / value bitmap
3644 * @desc_array: array of GPIO descriptors whose values will be assigned
3645 * @array_info: information on applicability of fast bitmap processing path
3646 * @value_bitmap: bitmap of values to assign
3648 * Set the raw values of the GPIOs, i.e. the values of the physical lines
3649 * without regard for their ACTIVE_LOW status.
3651 * This function can be called from contexts where we cannot sleep, and will
3652 * complain if the GPIO chip functions potentially sleep.
3655 * 0 on success, or negative errno on failure.
3657 int gpiod_set_raw_array_value(unsigned int array_size
,
3658 struct gpio_desc
**desc_array
,
3659 struct gpio_array
*array_info
,
3660 unsigned long *value_bitmap
)
3664 return gpiod_set_array_value_complex(true, false, array_size
,
3665 desc_array
, array_info
, value_bitmap
);
3667 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value
);
3670 * gpiod_set_array_value() - assign values to an array of GPIOs
3671 * @array_size: number of elements in the descriptor array / value bitmap
3672 * @desc_array: array of GPIO descriptors whose values will be assigned
3673 * @array_info: information on applicability of fast bitmap processing path
3674 * @value_bitmap: bitmap of values to assign
3676 * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3679 * This function can be called from contexts where we cannot sleep, and will
3680 * complain if the GPIO chip functions potentially sleep.
3683 * 0 on success, or negative errno on failure.
3685 int gpiod_set_array_value(unsigned int array_size
,
3686 struct gpio_desc
**desc_array
,
3687 struct gpio_array
*array_info
,
3688 unsigned long *value_bitmap
)
3692 return gpiod_set_array_value_complex(false, false, array_size
,
3693 desc_array
, array_info
,
3696 EXPORT_SYMBOL_GPL(gpiod_set_array_value
);
3699 * gpiod_cansleep() - report whether gpio value access may sleep
3700 * @desc: gpio to check
3703 * 0 for non-sleepable, 1 for sleepable, or an error code in case of error.
3705 int gpiod_cansleep(const struct gpio_desc
*desc
)
3707 VALIDATE_DESC(desc
);
3708 return desc
->gdev
->can_sleep
;
3710 EXPORT_SYMBOL_GPL(gpiod_cansleep
);
3713 * gpiod_set_consumer_name() - set the consumer name for the descriptor
3714 * @desc: gpio to set the consumer name on
3715 * @name: the new consumer name
3718 * 0 on success, or negative errno on failure.
3720 int gpiod_set_consumer_name(struct gpio_desc
*desc
, const char *name
)
3724 VALIDATE_DESC(desc
);
3726 ret
= desc_set_label(desc
, name
);
3728 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_CONFIG
);
3732 EXPORT_SYMBOL_GPL(gpiod_set_consumer_name
);
3735 * gpiod_to_irq() - return the IRQ corresponding to a GPIO
3736 * @desc: gpio whose IRQ will be returned (already requested)
3739 * The IRQ corresponding to the passed GPIO, or an error code in case of error.
3741 int gpiod_to_irq(const struct gpio_desc
*desc
)
3743 struct gpio_device
*gdev
;
3744 struct gpio_chip
*gc
;
3748 * Cannot VALIDATE_DESC() here as gpiod_to_irq() consumer semantics
3749 * requires this function to not return zero on an invalid descriptor
3750 * but rather a negative error number.
3752 if (IS_ERR_OR_NULL(desc
))
3756 /* FIXME Cannot use gpio_chip_guard due to const desc. */
3757 guard(srcu
)(&gdev
->srcu
);
3758 gc
= srcu_dereference(gdev
->chip
, &gdev
->srcu
);
3762 offset
= gpio_chip_hwgpio(desc
);
3764 int retirq
= gc
->to_irq(gc
, offset
);
3766 /* Zero means NO_IRQ */
3772 #ifdef CONFIG_GPIOLIB_IRQCHIP
3775 * Avoid race condition with other code, which tries to lookup
3776 * an IRQ before the irqchip has been properly registered,
3777 * i.e. while gpiochip is still being brought up.
3779 return -EPROBE_DEFER
;
3784 EXPORT_SYMBOL_GPL(gpiod_to_irq
);
3787 * gpiochip_lock_as_irq() - lock a GPIO to be used as IRQ
3788 * @gc: the chip the GPIO to lock belongs to
3789 * @offset: the offset of the GPIO to lock as IRQ
3791 * This is used directly by GPIO drivers that want to lock down
3792 * a certain GPIO line to be used for IRQs.
3795 * 0 on success, or negative errno on failure.
3797 int gpiochip_lock_as_irq(struct gpio_chip
*gc
, unsigned int offset
)
3799 struct gpio_desc
*desc
;
3801 desc
= gpiochip_get_desc(gc
, offset
);
3803 return PTR_ERR(desc
);
3806 * If it's fast: flush the direction setting if something changed
3809 if (!gc
->can_sleep
&& gc
->get_direction
) {
3810 int dir
= gpiod_get_direction(desc
);
3813 chip_err(gc
, "%s: cannot get GPIO direction\n",
3819 /* To be valid for IRQ the line needs to be input or open drain */
3820 if (test_bit(FLAG_IS_OUT
, &desc
->flags
) &&
3821 !test_bit(FLAG_OPEN_DRAIN
, &desc
->flags
)) {
3823 "%s: tried to flag a GPIO set as output for IRQ\n",
3828 set_bit(FLAG_USED_AS_IRQ
, &desc
->flags
);
3829 set_bit(FLAG_IRQ_IS_ENABLED
, &desc
->flags
);
3833 EXPORT_SYMBOL_GPL(gpiochip_lock_as_irq
);
3836 * gpiochip_unlock_as_irq() - unlock a GPIO used as IRQ
3837 * @gc: the chip the GPIO to lock belongs to
3838 * @offset: the offset of the GPIO to lock as IRQ
3840 * This is used directly by GPIO drivers that want to indicate
3841 * that a certain GPIO is no longer used exclusively for IRQ.
3843 void gpiochip_unlock_as_irq(struct gpio_chip
*gc
, unsigned int offset
)
3845 struct gpio_desc
*desc
;
3847 desc
= gpiochip_get_desc(gc
, offset
);
3851 clear_bit(FLAG_USED_AS_IRQ
, &desc
->flags
);
3852 clear_bit(FLAG_IRQ_IS_ENABLED
, &desc
->flags
);
3854 EXPORT_SYMBOL_GPL(gpiochip_unlock_as_irq
);
3856 void gpiochip_disable_irq(struct gpio_chip
*gc
, unsigned int offset
)
3858 struct gpio_desc
*desc
= gpiochip_get_desc(gc
, offset
);
3860 if (!IS_ERR(desc
) &&
3861 !WARN_ON(!test_bit(FLAG_USED_AS_IRQ
, &desc
->flags
)))
3862 clear_bit(FLAG_IRQ_IS_ENABLED
, &desc
->flags
);
3864 EXPORT_SYMBOL_GPL(gpiochip_disable_irq
);
3866 void gpiochip_enable_irq(struct gpio_chip
*gc
, unsigned int offset
)
3868 struct gpio_desc
*desc
= gpiochip_get_desc(gc
, offset
);
3870 if (!IS_ERR(desc
) &&
3871 !WARN_ON(!test_bit(FLAG_USED_AS_IRQ
, &desc
->flags
))) {
3873 * We must not be output when using IRQ UNLESS we are
3876 WARN_ON(test_bit(FLAG_IS_OUT
, &desc
->flags
) &&
3877 !test_bit(FLAG_OPEN_DRAIN
, &desc
->flags
));
3878 set_bit(FLAG_IRQ_IS_ENABLED
, &desc
->flags
);
3881 EXPORT_SYMBOL_GPL(gpiochip_enable_irq
);
3883 bool gpiochip_line_is_irq(struct gpio_chip
*gc
, unsigned int offset
)
3885 if (offset
>= gc
->ngpio
)
3888 return test_bit(FLAG_USED_AS_IRQ
, &gc
->gpiodev
->descs
[offset
].flags
);
3890 EXPORT_SYMBOL_GPL(gpiochip_line_is_irq
);
3892 int gpiochip_reqres_irq(struct gpio_chip
*gc
, unsigned int offset
)
3896 if (!try_module_get(gc
->gpiodev
->owner
))
3899 ret
= gpiochip_lock_as_irq(gc
, offset
);
3901 chip_err(gc
, "unable to lock HW IRQ %u for IRQ\n", offset
);
3902 module_put(gc
->gpiodev
->owner
);
3907 EXPORT_SYMBOL_GPL(gpiochip_reqres_irq
);
3909 void gpiochip_relres_irq(struct gpio_chip
*gc
, unsigned int offset
)
3911 gpiochip_unlock_as_irq(gc
, offset
);
3912 module_put(gc
->gpiodev
->owner
);
3914 EXPORT_SYMBOL_GPL(gpiochip_relres_irq
);
3916 bool gpiochip_line_is_open_drain(struct gpio_chip
*gc
, unsigned int offset
)
3918 if (offset
>= gc
->ngpio
)
3921 return test_bit(FLAG_OPEN_DRAIN
, &gc
->gpiodev
->descs
[offset
].flags
);
3923 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_drain
);
3925 bool gpiochip_line_is_open_source(struct gpio_chip
*gc
, unsigned int offset
)
3927 if (offset
>= gc
->ngpio
)
3930 return test_bit(FLAG_OPEN_SOURCE
, &gc
->gpiodev
->descs
[offset
].flags
);
3932 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_source
);
3934 bool gpiochip_line_is_persistent(struct gpio_chip
*gc
, unsigned int offset
)
3936 if (offset
>= gc
->ngpio
)
3939 return !test_bit(FLAG_TRANSITORY
, &gc
->gpiodev
->descs
[offset
].flags
);
3941 EXPORT_SYMBOL_GPL(gpiochip_line_is_persistent
);
3944 * gpiod_get_raw_value_cansleep() - return a gpio's raw value
3945 * @desc: gpio whose value will be returned
3948 * The GPIO's raw value, i.e. the value of the physical line disregarding
3949 * its ACTIVE_LOW status, or negative errno on failure.
3951 * This function is to be called from contexts that can sleep.
3953 int gpiod_get_raw_value_cansleep(const struct gpio_desc
*desc
)
3956 VALIDATE_DESC(desc
);
3957 return gpiod_get_raw_value_commit(desc
);
3959 EXPORT_SYMBOL_GPL(gpiod_get_raw_value_cansleep
);
3962 * gpiod_get_value_cansleep() - return a gpio's value
3963 * @desc: gpio whose value will be returned
3966 * The GPIO's logical value, i.e. taking the ACTIVE_LOW status into
3967 * account, or negative errno on failure.
3969 * This function is to be called from contexts that can sleep.
3971 int gpiod_get_value_cansleep(const struct gpio_desc
*desc
)
3976 VALIDATE_DESC(desc
);
3977 value
= gpiod_get_raw_value_commit(desc
);
3981 if (test_bit(FLAG_ACTIVE_LOW
, &desc
->flags
))
3986 EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep
);
3989 * gpiod_get_raw_array_value_cansleep() - read raw values from an array of GPIOs
3990 * @array_size: number of elements in the descriptor array / value bitmap
3991 * @desc_array: array of GPIO descriptors whose values will be read
3992 * @array_info: information on applicability of fast bitmap processing path
3993 * @value_bitmap: bitmap to store the read values
3995 * Read the raw values of the GPIOs, i.e. the values of the physical lines
3996 * without regard for their ACTIVE_LOW status.
3998 * This function is to be called from contexts that can sleep.
4001 * 0 on success, or negative errno on failure.
4003 int gpiod_get_raw_array_value_cansleep(unsigned int array_size
,
4004 struct gpio_desc
**desc_array
,
4005 struct gpio_array
*array_info
,
4006 unsigned long *value_bitmap
)
4011 return gpiod_get_array_value_complex(true, true, array_size
,
4012 desc_array
, array_info
,
4015 EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value_cansleep
);
4018 * gpiod_get_array_value_cansleep() - read values from an array of GPIOs
4019 * @array_size: number of elements in the descriptor array / value bitmap
4020 * @desc_array: array of GPIO descriptors whose values will be read
4021 * @array_info: information on applicability of fast bitmap processing path
4022 * @value_bitmap: bitmap to store the read values
4024 * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
4027 * This function is to be called from contexts that can sleep.
4030 * 0 on success, or negative errno on failure.
4032 int gpiod_get_array_value_cansleep(unsigned int array_size
,
4033 struct gpio_desc
**desc_array
,
4034 struct gpio_array
*array_info
,
4035 unsigned long *value_bitmap
)
4040 return gpiod_get_array_value_complex(false, true, array_size
,
4041 desc_array
, array_info
,
4044 EXPORT_SYMBOL_GPL(gpiod_get_array_value_cansleep
);
4047 * gpiod_set_raw_value_cansleep() - assign a gpio's raw value
4048 * @desc: gpio whose value will be assigned
4049 * @value: value to assign
4051 * Set the raw value of the GPIO, i.e. the value of its physical line without
4052 * regard for its ACTIVE_LOW status.
4054 * This function is to be called from contexts that can sleep.
4056 void gpiod_set_raw_value_cansleep(struct gpio_desc
*desc
, int value
)
4059 VALIDATE_DESC_VOID(desc
);
4060 gpiod_set_raw_value_commit(desc
, value
);
4062 EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep
);
4065 * gpiod_set_value_cansleep() - assign a gpio's value
4066 * @desc: gpio whose value will be assigned
4067 * @value: value to assign
4069 * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
4072 * This function is to be called from contexts that can sleep.
4074 void gpiod_set_value_cansleep(struct gpio_desc
*desc
, int value
)
4077 VALIDATE_DESC_VOID(desc
);
4078 gpiod_set_value_nocheck(desc
, value
);
4080 EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep
);
4083 * gpiod_set_raw_array_value_cansleep() - assign values to an array of GPIOs
4084 * @array_size: number of elements in the descriptor array / value bitmap
4085 * @desc_array: array of GPIO descriptors whose values will be assigned
4086 * @array_info: information on applicability of fast bitmap processing path
4087 * @value_bitmap: bitmap of values to assign
4089 * Set the raw values of the GPIOs, i.e. the values of the physical lines
4090 * without regard for their ACTIVE_LOW status.
4092 * This function is to be called from contexts that can sleep.
4095 * 0 on success, or negative errno on failure.
4097 int gpiod_set_raw_array_value_cansleep(unsigned int array_size
,
4098 struct gpio_desc
**desc_array
,
4099 struct gpio_array
*array_info
,
4100 unsigned long *value_bitmap
)
4105 return gpiod_set_array_value_complex(true, true, array_size
, desc_array
,
4106 array_info
, value_bitmap
);
4108 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value_cansleep
);
4111 * gpiod_add_lookup_tables() - register GPIO device consumers
4112 * @tables: list of tables of consumers to register
4113 * @n: number of tables in the list
4115 void gpiod_add_lookup_tables(struct gpiod_lookup_table
**tables
, size_t n
)
4119 mutex_lock(&gpio_lookup_lock
);
4121 for (i
= 0; i
< n
; i
++)
4122 list_add_tail(&tables
[i
]->list
, &gpio_lookup_list
);
4124 mutex_unlock(&gpio_lookup_lock
);
4128 * gpiod_set_array_value_cansleep() - assign values to an array of GPIOs
4129 * @array_size: number of elements in the descriptor array / value bitmap
4130 * @desc_array: array of GPIO descriptors whose values will be assigned
4131 * @array_info: information on applicability of fast bitmap processing path
4132 * @value_bitmap: bitmap of values to assign
4134 * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
4137 * This function is to be called from contexts that can sleep.
4140 * 0 on success, or negative errno on failure.
4142 int gpiod_set_array_value_cansleep(unsigned int array_size
,
4143 struct gpio_desc
**desc_array
,
4144 struct gpio_array
*array_info
,
4145 unsigned long *value_bitmap
)
4150 return gpiod_set_array_value_complex(false, true, array_size
,
4151 desc_array
, array_info
,
4154 EXPORT_SYMBOL_GPL(gpiod_set_array_value_cansleep
);
4156 void gpiod_line_state_notify(struct gpio_desc
*desc
, unsigned long action
)
4158 atomic_notifier_call_chain(&desc
->gdev
->line_state_notifier
,
4163 * gpiod_add_lookup_table() - register GPIO device consumers
4164 * @table: table of consumers to register
4166 void gpiod_add_lookup_table(struct gpiod_lookup_table
*table
)
4168 gpiod_add_lookup_tables(&table
, 1);
4170 EXPORT_SYMBOL_GPL(gpiod_add_lookup_table
);
4173 * gpiod_remove_lookup_table() - unregister GPIO device consumers
4174 * @table: table of consumers to unregister
4176 void gpiod_remove_lookup_table(struct gpiod_lookup_table
*table
)
4178 /* Nothing to remove */
4182 mutex_lock(&gpio_lookup_lock
);
4184 list_del(&table
->list
);
4186 mutex_unlock(&gpio_lookup_lock
);
4188 EXPORT_SYMBOL_GPL(gpiod_remove_lookup_table
);
4191 * gpiod_add_hogs() - register a set of GPIO hogs from machine code
4192 * @hogs: table of gpio hog entries with a zeroed sentinel at the end
4194 void gpiod_add_hogs(struct gpiod_hog
*hogs
)
4196 struct gpiod_hog
*hog
;
4198 mutex_lock(&gpio_machine_hogs_mutex
);
4200 for (hog
= &hogs
[0]; hog
->chip_label
; hog
++) {
4201 list_add_tail(&hog
->list
, &gpio_machine_hogs
);
4204 * The chip may have been registered earlier, so check if it
4205 * exists and, if so, try to hog the line now.
4207 struct gpio_device
*gdev
__free(gpio_device_put
) =
4208 gpio_device_find_by_label(hog
->chip_label
);
4210 gpiochip_machine_hog(gpio_device_get_chip(gdev
), hog
);
4213 mutex_unlock(&gpio_machine_hogs_mutex
);
4215 EXPORT_SYMBOL_GPL(gpiod_add_hogs
);
4217 void gpiod_remove_hogs(struct gpiod_hog
*hogs
)
4219 struct gpiod_hog
*hog
;
4221 mutex_lock(&gpio_machine_hogs_mutex
);
4222 for (hog
= &hogs
[0]; hog
->chip_label
; hog
++)
4223 list_del(&hog
->list
);
4224 mutex_unlock(&gpio_machine_hogs_mutex
);
4226 EXPORT_SYMBOL_GPL(gpiod_remove_hogs
);
4228 static struct gpiod_lookup_table
*gpiod_find_lookup_table(struct device
*dev
)
4230 const char *dev_id
= dev
? dev_name(dev
) : NULL
;
4231 struct gpiod_lookup_table
*table
;
4233 list_for_each_entry(table
, &gpio_lookup_list
, list
) {
4234 if (table
->dev_id
&& dev_id
) {
4236 * Valid strings on both ends, must be identical to have
4239 if (!strcmp(table
->dev_id
, dev_id
))
4243 * One of the pointers is NULL, so both must be to have
4246 if (dev_id
== table
->dev_id
)
4254 static struct gpio_desc
*gpiod_find(struct device
*dev
, const char *con_id
,
4255 unsigned int idx
, unsigned long *flags
)
4257 struct gpio_desc
*desc
= ERR_PTR(-ENOENT
);
4258 struct gpiod_lookup_table
*table
;
4259 struct gpiod_lookup
*p
;
4260 struct gpio_chip
*gc
;
4262 guard(mutex
)(&gpio_lookup_lock
);
4264 table
= gpiod_find_lookup_table(dev
);
4268 for (p
= &table
->table
[0]; p
->key
; p
++) {
4269 /* idx must always match exactly */
4273 /* If the lookup entry has a con_id, require exact match */
4274 if (p
->con_id
&& (!con_id
|| strcmp(p
->con_id
, con_id
)))
4277 if (p
->chip_hwnum
== U16_MAX
) {
4278 desc
= gpio_name_to_desc(p
->key
);
4284 dev_warn(dev
, "cannot find GPIO line %s, deferring\n",
4286 return ERR_PTR(-EPROBE_DEFER
);
4289 struct gpio_device
*gdev
__free(gpio_device_put
) =
4290 gpio_device_find_by_label(p
->key
);
4293 * As the lookup table indicates a chip with
4294 * p->key should exist, assume it may
4295 * still appear later and let the interested
4296 * consumer be probed again or let the Deferred
4297 * Probe infrastructure handle the error.
4299 dev_warn(dev
, "cannot find GPIO chip %s, deferring\n",
4301 return ERR_PTR(-EPROBE_DEFER
);
4304 gc
= gpio_device_get_chip(gdev
);
4306 if (gc
->ngpio
<= p
->chip_hwnum
) {
4308 "requested GPIO %u (%u) is out of range [0..%u] for chip %s\n",
4309 idx
, p
->chip_hwnum
, gc
->ngpio
- 1,
4311 return ERR_PTR(-EINVAL
);
4314 desc
= gpio_device_get_desc(gdev
, p
->chip_hwnum
);
4323 static int platform_gpio_count(struct device
*dev
, const char *con_id
)
4325 struct gpiod_lookup_table
*table
;
4326 struct gpiod_lookup
*p
;
4327 unsigned int count
= 0;
4329 scoped_guard(mutex
, &gpio_lookup_lock
) {
4330 table
= gpiod_find_lookup_table(dev
);
4334 for (p
= &table
->table
[0]; p
->key
; p
++) {
4335 if ((con_id
&& p
->con_id
&& !strcmp(con_id
, p
->con_id
)) ||
4336 (!con_id
&& !p
->con_id
))
4347 static struct gpio_desc
*gpiod_find_by_fwnode(struct fwnode_handle
*fwnode
,
4348 struct device
*consumer
,
4351 enum gpiod_flags
*flags
,
4352 unsigned long *lookupflags
)
4354 const char *name
= function_name_or_default(con_id
);
4355 struct gpio_desc
*desc
= ERR_PTR(-ENOENT
);
4357 if (is_of_node(fwnode
)) {
4358 dev_dbg(consumer
, "using DT '%pfw' for '%s' GPIO lookup\n", fwnode
, name
);
4359 desc
= of_find_gpio(to_of_node(fwnode
), con_id
, idx
, lookupflags
);
4360 } else if (is_acpi_node(fwnode
)) {
4361 dev_dbg(consumer
, "using ACPI '%pfw' for '%s' GPIO lookup\n", fwnode
, name
);
4362 desc
= acpi_find_gpio(fwnode
, con_id
, idx
, flags
, lookupflags
);
4363 } else if (is_software_node(fwnode
)) {
4364 dev_dbg(consumer
, "using swnode '%pfw' for '%s' GPIO lookup\n", fwnode
, name
);
4365 desc
= swnode_find_gpio(fwnode
, con_id
, idx
, lookupflags
);
4371 struct gpio_desc
*gpiod_find_and_request(struct device
*consumer
,
4372 struct fwnode_handle
*fwnode
,
4375 enum gpiod_flags flags
,
4377 bool platform_lookup_allowed
)
4379 unsigned long lookupflags
= GPIO_LOOKUP_FLAGS_DEFAULT
;
4380 const char *name
= function_name_or_default(con_id
);
4382 * scoped_guard() is implemented as a for loop, meaning static
4383 * analyzers will complain about these two not being initialized.
4385 struct gpio_desc
*desc
= NULL
;
4388 scoped_guard(srcu
, &gpio_devices_srcu
) {
4389 desc
= gpiod_find_by_fwnode(fwnode
, consumer
, con_id
, idx
,
4390 &flags
, &lookupflags
);
4391 if (gpiod_not_found(desc
) && platform_lookup_allowed
) {
4393 * Either we are not using DT or ACPI, or their lookup
4394 * did not return a result. In that case, use platform
4395 * lookup as a fallback.
4398 "using lookup tables for GPIO lookup\n");
4399 desc
= gpiod_find(consumer
, con_id
, idx
, &lookupflags
);
4403 dev_dbg(consumer
, "No GPIO consumer %s found\n", name
);
4408 * If a connection label was passed use that, else attempt to use
4409 * the device name as label
4411 ret
= gpiod_request(desc
, label
);
4414 if (!(ret
== -EBUSY
&& flags
& GPIOD_FLAGS_BIT_NONEXCLUSIVE
))
4415 return ERR_PTR(ret
);
4418 * This happens when there are several consumers for
4419 * the same GPIO line: we just return here without
4420 * further initialization. It is a bit of a hack.
4421 * This is necessary to support fixed regulators.
4423 * FIXME: Make this more sane and safe.
4425 dev_info(consumer
, "nonexclusive access to GPIO for %s\n", name
);
4429 ret
= gpiod_configure_flags(desc
, con_id
, lookupflags
, flags
);
4432 dev_err(consumer
, "setup of GPIO %s failed: %d\n", name
, ret
);
4433 return ERR_PTR(ret
);
4436 gpiod_line_state_notify(desc
, GPIO_V2_LINE_CHANGED_REQUESTED
);
4442 * fwnode_gpiod_get_index - obtain a GPIO from firmware node
4443 * @fwnode: handle of the firmware node
4444 * @con_id: function within the GPIO consumer
4445 * @index: index of the GPIO to obtain for the consumer
4446 * @flags: GPIO initialization flags
4447 * @label: label to attach to the requested GPIO
4449 * This function can be used for drivers that get their configuration
4450 * from opaque firmware.
4452 * The function properly finds the corresponding GPIO using whatever is the
4453 * underlying firmware interface and then makes sure that the GPIO
4454 * descriptor is requested before it is returned to the caller.
4457 * On successful request the GPIO pin is configured in accordance with
4460 * In case of error an ERR_PTR() is returned.
4462 struct gpio_desc
*fwnode_gpiod_get_index(struct fwnode_handle
*fwnode
,
4465 enum gpiod_flags flags
,
4468 return gpiod_find_and_request(NULL
, fwnode
, con_id
, index
, flags
, label
, false);
4470 EXPORT_SYMBOL_GPL(fwnode_gpiod_get_index
);
4473 * gpiod_count - return the number of GPIOs associated with a device / function
4474 * @dev: GPIO consumer, can be NULL for system-global GPIOs
4475 * @con_id: function within the GPIO consumer
4478 * The number of GPIOs associated with a device / function or -ENOENT if no
4479 * GPIO has been assigned to the requested function.
4481 int gpiod_count(struct device
*dev
, const char *con_id
)
4483 const struct fwnode_handle
*fwnode
= dev
? dev_fwnode(dev
) : NULL
;
4484 int count
= -ENOENT
;
4486 if (is_of_node(fwnode
))
4487 count
= of_gpio_count(fwnode
, con_id
);
4488 else if (is_acpi_node(fwnode
))
4489 count
= acpi_gpio_count(fwnode
, con_id
);
4490 else if (is_software_node(fwnode
))
4491 count
= swnode_gpio_count(fwnode
, con_id
);
4494 count
= platform_gpio_count(dev
, con_id
);
4498 EXPORT_SYMBOL_GPL(gpiod_count
);
4501 * gpiod_get - obtain a GPIO for a given GPIO function
4502 * @dev: GPIO consumer, can be NULL for system-global GPIOs
4503 * @con_id: function within the GPIO consumer
4504 * @flags: optional GPIO initialization flags
4507 * The GPIO descriptor corresponding to the function @con_id of device
4508 * dev, -ENOENT if no GPIO has been assigned to the requested function, or
4509 * another IS_ERR() code if an error occurred while trying to acquire the GPIO.
4511 struct gpio_desc
*__must_check
gpiod_get(struct device
*dev
, const char *con_id
,
4512 enum gpiod_flags flags
)
4514 return gpiod_get_index(dev
, con_id
, 0, flags
);
4516 EXPORT_SYMBOL_GPL(gpiod_get
);
4519 * gpiod_get_optional - obtain an optional GPIO for a given GPIO function
4520 * @dev: GPIO consumer, can be NULL for system-global GPIOs
4521 * @con_id: function within the GPIO consumer
4522 * @flags: optional GPIO initialization flags
4524 * This is equivalent to gpiod_get(), except that when no GPIO was assigned to
4525 * the requested function it will return NULL. This is convenient for drivers
4526 * that need to handle optional GPIOs.
4529 * The GPIO descriptor corresponding to the function @con_id of device
4530 * dev, NULL if no GPIO has been assigned to the requested function, or
4531 * another IS_ERR() code if an error occurred while trying to acquire the GPIO.
4533 struct gpio_desc
*__must_check
gpiod_get_optional(struct device
*dev
,
4535 enum gpiod_flags flags
)
4537 return gpiod_get_index_optional(dev
, con_id
, 0, flags
);
4539 EXPORT_SYMBOL_GPL(gpiod_get_optional
);
4543 * gpiod_configure_flags - helper function to configure a given GPIO
4544 * @desc: gpio whose value will be assigned
4545 * @con_id: function within the GPIO consumer
4546 * @lflags: bitmask of gpio_lookup_flags GPIO_* values - returned from
4547 * of_find_gpio() or of_get_gpio_hog()
4548 * @dflags: gpiod_flags - optional GPIO initialization flags
4551 * 0 on success, -ENOENT if no GPIO has been assigned to the
4552 * requested function and/or index, or another IS_ERR() code if an error
4553 * occurred while trying to acquire the GPIO.
4555 int gpiod_configure_flags(struct gpio_desc
*desc
, const char *con_id
,
4556 unsigned long lflags
, enum gpiod_flags dflags
)
4558 const char *name
= function_name_or_default(con_id
);
4561 if (lflags
& GPIO_ACTIVE_LOW
)
4562 set_bit(FLAG_ACTIVE_LOW
, &desc
->flags
);
4564 if (lflags
& GPIO_OPEN_DRAIN
)
4565 set_bit(FLAG_OPEN_DRAIN
, &desc
->flags
);
4566 else if (dflags
& GPIOD_FLAGS_BIT_OPEN_DRAIN
) {
4568 * This enforces open drain mode from the consumer side.
4569 * This is necessary for some busses like I2C, but the lookup
4570 * should *REALLY* have specified them as open drain in the
4571 * first place, so print a little warning here.
4573 set_bit(FLAG_OPEN_DRAIN
, &desc
->flags
);
4575 "enforced open drain please flag it properly in DT/ACPI DSDT/board file\n");
4578 if (lflags
& GPIO_OPEN_SOURCE
)
4579 set_bit(FLAG_OPEN_SOURCE
, &desc
->flags
);
4581 if (((lflags
& GPIO_PULL_UP
) && (lflags
& GPIO_PULL_DOWN
)) ||
4582 ((lflags
& GPIO_PULL_UP
) && (lflags
& GPIO_PULL_DISABLE
)) ||
4583 ((lflags
& GPIO_PULL_DOWN
) && (lflags
& GPIO_PULL_DISABLE
))) {
4585 "multiple pull-up, pull-down or pull-disable enabled, invalid configuration\n");
4589 if (lflags
& GPIO_PULL_UP
)
4590 set_bit(FLAG_PULL_UP
, &desc
->flags
);
4591 else if (lflags
& GPIO_PULL_DOWN
)
4592 set_bit(FLAG_PULL_DOWN
, &desc
->flags
);
4593 else if (lflags
& GPIO_PULL_DISABLE
)
4594 set_bit(FLAG_BIAS_DISABLE
, &desc
->flags
);
4596 ret
= gpiod_set_transitory(desc
, (lflags
& GPIO_TRANSITORY
));
4600 /* No particular flag request, return here... */
4601 if (!(dflags
& GPIOD_FLAGS_BIT_DIR_SET
)) {
4602 gpiod_dbg(desc
, "no flags found for GPIO %s\n", name
);
4607 if (dflags
& GPIOD_FLAGS_BIT_DIR_OUT
)
4608 ret
= gpiod_direction_output_nonotify(desc
,
4609 !!(dflags
& GPIOD_FLAGS_BIT_DIR_VAL
));
4611 ret
= gpiod_direction_input_nonotify(desc
);
4617 * gpiod_get_index - obtain a GPIO from a multi-index GPIO function
4618 * @dev: GPIO consumer, can be NULL for system-global GPIOs
4619 * @con_id: function within the GPIO consumer
4620 * @idx: index of the GPIO to obtain in the consumer
4621 * @flags: optional GPIO initialization flags
4623 * This variant of gpiod_get() allows to access GPIOs other than the first
4624 * defined one for functions that define several GPIOs.
4627 * A valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the
4628 * requested function and/or index, or another IS_ERR() code if an error
4629 * occurred while trying to acquire the GPIO.
4631 struct gpio_desc
*__must_check
gpiod_get_index(struct device
*dev
,
4634 enum gpiod_flags flags
)
4636 struct fwnode_handle
*fwnode
= dev
? dev_fwnode(dev
) : NULL
;
4637 const char *devname
= dev
? dev_name(dev
) : "?";
4638 const char *label
= con_id
?: devname
;
4640 return gpiod_find_and_request(dev
, fwnode
, con_id
, idx
, flags
, label
, true);
4642 EXPORT_SYMBOL_GPL(gpiod_get_index
);
4645 * gpiod_get_index_optional - obtain an optional GPIO from a multi-index GPIO
4647 * @dev: GPIO consumer, can be NULL for system-global GPIOs
4648 * @con_id: function within the GPIO consumer
4649 * @index: index of the GPIO to obtain in the consumer
4650 * @flags: optional GPIO initialization flags
4652 * This is equivalent to gpiod_get_index(), except that when no GPIO with the
4653 * specified index was assigned to the requested function it will return NULL.
4654 * This is convenient for drivers that need to handle optional GPIOs.
4657 * A valid GPIO descriptor, NULL if no GPIO has been assigned to the
4658 * requested function and/or index, or another IS_ERR() code if an error
4659 * occurred while trying to acquire the GPIO.
4661 struct gpio_desc
*__must_check
gpiod_get_index_optional(struct device
*dev
,
4664 enum gpiod_flags flags
)
4666 struct gpio_desc
*desc
;
4668 desc
= gpiod_get_index(dev
, con_id
, index
, flags
);
4669 if (gpiod_not_found(desc
))
4674 EXPORT_SYMBOL_GPL(gpiod_get_index_optional
);
4677 * gpiod_hog - Hog the specified GPIO desc given the provided flags
4678 * @desc: gpio whose value will be assigned
4679 * @name: gpio line name
4680 * @lflags: bitmask of gpio_lookup_flags GPIO_* values - returned from
4681 * of_find_gpio() or of_get_gpio_hog()
4682 * @dflags: gpiod_flags - optional GPIO initialization flags
4685 * 0 on success, or negative errno on failure.
4687 int gpiod_hog(struct gpio_desc
*desc
, const char *name
,
4688 unsigned long lflags
, enum gpiod_flags dflags
)
4690 struct gpio_device
*gdev
= desc
->gdev
;
4691 struct gpio_desc
*local_desc
;
4695 CLASS(gpio_chip_guard
, guard
)(desc
);
4699 if (test_and_set_bit(FLAG_IS_HOGGED
, &desc
->flags
))
4702 hwnum
= gpio_chip_hwgpio(desc
);
4704 local_desc
= gpiochip_request_own_desc(guard
.gc
, hwnum
, name
,
4706 if (IS_ERR(local_desc
)) {
4707 clear_bit(FLAG_IS_HOGGED
, &desc
->flags
);
4708 ret
= PTR_ERR(local_desc
);
4709 pr_err("requesting hog GPIO %s (chip %s, offset %d) failed, %d\n",
4710 name
, gdev
->label
, hwnum
, ret
);
4714 gpiod_dbg(desc
, "hogged as %s%s\n",
4715 (dflags
& GPIOD_FLAGS_BIT_DIR_OUT
) ? "output" : "input",
4716 (dflags
& GPIOD_FLAGS_BIT_DIR_OUT
) ?
4717 (dflags
& GPIOD_FLAGS_BIT_DIR_VAL
) ? "/high" : "/low" : "");
4723 * gpiochip_free_hogs - Scan gpio-controller chip and release GPIO hog
4724 * @gc: gpio chip to act on
4726 static void gpiochip_free_hogs(struct gpio_chip
*gc
)
4728 struct gpio_desc
*desc
;
4730 for_each_gpio_desc_with_flag(gc
, desc
, FLAG_IS_HOGGED
)
4731 gpiochip_free_own_desc(desc
);
4735 * gpiod_get_array - obtain multiple GPIOs from a multi-index GPIO function
4736 * @dev: GPIO consumer, can be NULL for system-global GPIOs
4737 * @con_id: function within the GPIO consumer
4738 * @flags: optional GPIO initialization flags
4740 * This function acquires all the GPIOs defined under a given function.
4743 * The GPIO descriptors corresponding to the function @con_id of device
4744 * dev, -ENOENT if no GPIO has been assigned to the requested function,
4745 * or another IS_ERR() code if an error occurred while trying to acquire
4748 struct gpio_descs
*__must_check
gpiod_get_array(struct device
*dev
,
4750 enum gpiod_flags flags
)
4752 struct gpio_desc
*desc
;
4753 struct gpio_descs
*descs
;
4754 struct gpio_array
*array_info
= NULL
;
4755 struct gpio_chip
*gc
;
4756 int count
, bitmap_size
;
4759 count
= gpiod_count(dev
, con_id
);
4761 return ERR_PTR(count
);
4763 descs_size
= struct_size(descs
, desc
, count
);
4764 descs
= kzalloc(descs_size
, GFP_KERNEL
);
4766 return ERR_PTR(-ENOMEM
);
4768 for (descs
->ndescs
= 0; descs
->ndescs
< count
; descs
->ndescs
++) {
4769 desc
= gpiod_get_index(dev
, con_id
, descs
->ndescs
, flags
);
4771 gpiod_put_array(descs
);
4772 return ERR_CAST(desc
);
4775 descs
->desc
[descs
->ndescs
] = desc
;
4777 gc
= gpiod_to_chip(desc
);
4779 * If pin hardware number of array member 0 is also 0, select
4780 * its chip as a candidate for fast bitmap processing path.
4782 if (descs
->ndescs
== 0 && gpio_chip_hwgpio(desc
) == 0) {
4783 struct gpio_descs
*array
;
4785 bitmap_size
= BITS_TO_LONGS(gc
->ngpio
> count
?
4788 array
= krealloc(descs
, descs_size
+
4789 struct_size(array_info
, invert_mask
, 3 * bitmap_size
),
4790 GFP_KERNEL
| __GFP_ZERO
);
4792 gpiod_put_array(descs
);
4793 return ERR_PTR(-ENOMEM
);
4798 array_info
= (void *)descs
+ descs_size
;
4799 array_info
->get_mask
= array_info
->invert_mask
+
4801 array_info
->set_mask
= array_info
->get_mask
+
4804 array_info
->desc
= descs
->desc
;
4805 array_info
->size
= count
;
4806 array_info
->chip
= gc
;
4807 bitmap_set(array_info
->get_mask
, descs
->ndescs
,
4808 count
- descs
->ndescs
);
4809 bitmap_set(array_info
->set_mask
, descs
->ndescs
,
4810 count
- descs
->ndescs
);
4811 descs
->info
= array_info
;
4814 /* If there is no cache for fast bitmap processing path, continue */
4818 /* Unmark array members which don't belong to the 'fast' chip */
4819 if (array_info
->chip
!= gc
) {
4820 __clear_bit(descs
->ndescs
, array_info
->get_mask
);
4821 __clear_bit(descs
->ndescs
, array_info
->set_mask
);
4824 * Detect array members which belong to the 'fast' chip
4825 * but their pins are not in hardware order.
4827 else if (gpio_chip_hwgpio(desc
) != descs
->ndescs
) {
4829 * Don't use fast path if all array members processed so
4830 * far belong to the same chip as this one but its pin
4831 * hardware number is different from its array index.
4833 if (bitmap_full(array_info
->get_mask
, descs
->ndescs
)) {
4836 __clear_bit(descs
->ndescs
,
4837 array_info
->get_mask
);
4838 __clear_bit(descs
->ndescs
,
4839 array_info
->set_mask
);
4842 /* Exclude open drain or open source from fast output */
4843 if (gpiochip_line_is_open_drain(gc
, descs
->ndescs
) ||
4844 gpiochip_line_is_open_source(gc
, descs
->ndescs
))
4845 __clear_bit(descs
->ndescs
,
4846 array_info
->set_mask
);
4847 /* Identify 'fast' pins which require invertion */
4848 if (gpiod_is_active_low(desc
))
4849 __set_bit(descs
->ndescs
,
4850 array_info
->invert_mask
);
4855 "GPIO array info: chip=%s, size=%d, get_mask=%lx, set_mask=%lx, invert_mask=%lx\n",
4856 array_info
->chip
->label
, array_info
->size
,
4857 *array_info
->get_mask
, *array_info
->set_mask
,
4858 *array_info
->invert_mask
);
4861 EXPORT_SYMBOL_GPL(gpiod_get_array
);
4864 * gpiod_get_array_optional - obtain multiple GPIOs from a multi-index GPIO
4866 * @dev: GPIO consumer, can be NULL for system-global GPIOs
4867 * @con_id: function within the GPIO consumer
4868 * @flags: optional GPIO initialization flags
4870 * This is equivalent to gpiod_get_array(), except that when no GPIO was
4871 * assigned to the requested function it will return NULL.
4874 * The GPIO descriptors corresponding to the function @con_id of device
4875 * dev, NULL if no GPIO has been assigned to the requested function,
4876 * or another IS_ERR() code if an error occurred while trying to acquire
4879 struct gpio_descs
*__must_check
gpiod_get_array_optional(struct device
*dev
,
4881 enum gpiod_flags flags
)
4883 struct gpio_descs
*descs
;
4885 descs
= gpiod_get_array(dev
, con_id
, flags
);
4886 if (gpiod_not_found(descs
))
4891 EXPORT_SYMBOL_GPL(gpiod_get_array_optional
);
4894 * gpiod_put - dispose of a GPIO descriptor
4895 * @desc: GPIO descriptor to dispose of
4897 * No descriptor can be used after gpiod_put() has been called on it.
4899 void gpiod_put(struct gpio_desc
*desc
)
4904 EXPORT_SYMBOL_GPL(gpiod_put
);
4907 * gpiod_put_array - dispose of multiple GPIO descriptors
4908 * @descs: struct gpio_descs containing an array of descriptors
4910 void gpiod_put_array(struct gpio_descs
*descs
)
4914 for (i
= 0; i
< descs
->ndescs
; i
++)
4915 gpiod_put(descs
->desc
[i
]);
4919 EXPORT_SYMBOL_GPL(gpiod_put_array
);
4921 static int gpio_stub_drv_probe(struct device
*dev
)
4924 * The DT node of some GPIO chips have a "compatible" property, but
4925 * never have a struct device added and probed by a driver to register
4926 * the GPIO chip with gpiolib. In such cases, fw_devlink=on will cause
4927 * the consumers of the GPIO chip to get probe deferred forever because
4928 * they will be waiting for a device associated with the GPIO chip
4929 * firmware node to get added and bound to a driver.
4931 * To allow these consumers to probe, we associate the struct
4932 * gpio_device of the GPIO chip with the firmware node and then simply
4933 * bind it to this stub driver.
4938 static struct device_driver gpio_stub_drv
= {
4939 .name
= "gpio_stub_drv",
4940 .bus
= &gpio_bus_type
,
4941 .probe
= gpio_stub_drv_probe
,
4944 static int __init
gpiolib_dev_init(void)
4948 /* Register GPIO sysfs bus */
4949 ret
= bus_register(&gpio_bus_type
);
4951 pr_err("gpiolib: could not register GPIO bus type\n");
4955 ret
= driver_register(&gpio_stub_drv
);
4957 pr_err("gpiolib: could not register GPIO stub driver\n");
4958 bus_unregister(&gpio_bus_type
);
4962 ret
= alloc_chrdev_region(&gpio_devt
, 0, GPIO_DEV_MAX
, GPIOCHIP_NAME
);
4964 pr_err("gpiolib: failed to allocate char dev region\n");
4965 driver_unregister(&gpio_stub_drv
);
4966 bus_unregister(&gpio_bus_type
);
4970 gpiolib_initialized
= true;
4971 gpiochip_setup_devs();
4973 #if IS_ENABLED(CONFIG_OF_DYNAMIC) && IS_ENABLED(CONFIG_OF_GPIO)
4974 WARN_ON(of_reconfig_notifier_register(&gpio_of_notifier
));
4975 #endif /* CONFIG_OF_DYNAMIC && CONFIG_OF_GPIO */
4979 core_initcall(gpiolib_dev_init
);
4981 #ifdef CONFIG_DEBUG_FS
4983 static void gpiolib_dbg_show(struct seq_file
*s
, struct gpio_device
*gdev
)
4985 bool active_low
, is_irq
, is_out
;
4986 unsigned int gpio
= gdev
->base
;
4987 struct gpio_desc
*desc
;
4988 struct gpio_chip
*gc
;
4991 guard(srcu
)(&gdev
->srcu
);
4993 gc
= srcu_dereference(gdev
->chip
, &gdev
->srcu
);
4995 seq_puts(s
, "Underlying GPIO chip is gone\n");
4999 for_each_gpio_desc(gc
, desc
) {
5000 guard(srcu
)(&desc
->gdev
->desc_srcu
);
5001 is_irq
= test_bit(FLAG_USED_AS_IRQ
, &desc
->flags
);
5002 if (is_irq
|| test_bit(FLAG_REQUESTED
, &desc
->flags
)) {
5003 gpiod_get_direction(desc
);
5004 is_out
= test_bit(FLAG_IS_OUT
, &desc
->flags
);
5005 value
= gpio_chip_get_value(gc
, desc
);
5006 active_low
= test_bit(FLAG_ACTIVE_LOW
, &desc
->flags
);
5007 seq_printf(s
, " gpio-%-3u (%-20.20s|%-20.20s) %s %s %s%s\n",
5008 gpio
, desc
->name
?: "", gpiod_get_label(desc
),
5009 is_out
? "out" : "in ",
5010 value
>= 0 ? (value
? "hi" : "lo") : "? ",
5011 is_irq
? "IRQ " : "",
5012 active_low
? "ACTIVE LOW" : "");
5013 } else if (desc
->name
) {
5014 seq_printf(s
, " gpio-%-3u (%-20.20s)\n", gpio
, desc
->name
);
5021 struct gpiolib_seq_priv
{
5026 static void *gpiolib_seq_start(struct seq_file
*s
, loff_t
*pos
)
5028 struct gpiolib_seq_priv
*priv
;
5029 struct gpio_device
*gdev
;
5030 loff_t index
= *pos
;
5032 priv
= kzalloc(sizeof(*priv
), GFP_KERNEL
);
5038 priv
->newline
= true;
5039 priv
->idx
= srcu_read_lock(&gpio_devices_srcu
);
5041 list_for_each_entry_srcu(gdev
, &gpio_devices
, list
,
5042 srcu_read_lock_held(&gpio_devices_srcu
)) {
5050 static void *gpiolib_seq_next(struct seq_file
*s
, void *v
, loff_t
*pos
)
5052 struct gpiolib_seq_priv
*priv
= s
->private;
5053 struct gpio_device
*gdev
= v
, *next
;
5055 next
= list_entry_rcu(gdev
->list
.next
, struct gpio_device
, list
);
5056 gdev
= &next
->list
== &gpio_devices
? NULL
: next
;
5057 priv
->newline
= true;
5063 static void gpiolib_seq_stop(struct seq_file
*s
, void *v
)
5065 struct gpiolib_seq_priv
*priv
= s
->private;
5067 srcu_read_unlock(&gpio_devices_srcu
, priv
->idx
);
5071 static int gpiolib_seq_show(struct seq_file
*s
, void *v
)
5073 struct gpiolib_seq_priv
*priv
= s
->private;
5074 struct gpio_device
*gdev
= v
;
5075 struct gpio_chip
*gc
;
5076 struct device
*parent
;
5081 guard(srcu
)(&gdev
->srcu
);
5083 gc
= srcu_dereference(gdev
->chip
, &gdev
->srcu
);
5085 seq_printf(s
, "%s: (dangling chip)\n", dev_name(&gdev
->dev
));
5089 seq_printf(s
, "%s: GPIOs %u-%u", dev_name(&gdev
->dev
), gdev
->base
,
5090 gdev
->base
+ gdev
->ngpio
- 1);
5091 parent
= gc
->parent
;
5093 seq_printf(s
, ", parent: %s/%s",
5094 parent
->bus
? parent
->bus
->name
: "no-bus",
5097 seq_printf(s
, ", %s", gc
->label
);
5099 seq_printf(s
, ", can sleep");
5100 seq_printf(s
, ":\n");
5103 gc
->dbg_show(s
, gc
);
5105 gpiolib_dbg_show(s
, gdev
);
5110 static const struct seq_operations gpiolib_sops
= {
5111 .start
= gpiolib_seq_start
,
5112 .next
= gpiolib_seq_next
,
5113 .stop
= gpiolib_seq_stop
,
5114 .show
= gpiolib_seq_show
,
5116 DEFINE_SEQ_ATTRIBUTE(gpiolib
);
5118 static int __init
gpiolib_debugfs_init(void)
5120 /* /sys/kernel/debug/gpio */
5121 debugfs_create_file("gpio", 0444, NULL
, NULL
, &gpiolib_fops
);
5124 subsys_initcall(gpiolib_debugfs_init
);
5126 #endif /* DEBUG_FS */