1 // SPDX-License-Identifier: GPL-2.0 2 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> 13 #include <linux/fs.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> 23 #include <linux/of.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> 29 30 #include <linux/gpio.h> 31 #include <linux/gpio/driver.h> 32 #include <linux/gpio/machine.h> 33 34 #include <uapi/linux/gpio.h> 35 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" 41 #include "gpiolib.h" 42 43 #define CREATE_TRACE_POINTS 44 #include <trace/events/gpio.h> 45 46 /* Implementation infrastructure for GPIO interfaces. 47 * 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. 51 */ 52 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 */ 57 58 static int gpio_bus_match(struct device *dev, const struct device_driver *drv) 59 { 60 struct fwnode_handle *fwnode = dev_fwnode(dev); 61 62 /* 63 * Only match if the fwnode doesn't already have a proper struct device 64 * created for it. 65 */ 66 if (fwnode && fwnode->dev != dev) 67 return 0; 68 return 1; 69 } 70 71 static const struct bus_type gpio_bus_type = { 72 .name = "gpio", 73 .match = gpio_bus_match, 74 }; 75 76 /* 77 * Number of GPIOs to use for the fast path in set array 78 */ 79 #define FASTPATH_NGPIO CONFIG_GPIOLIB_FASTPATH_LIMIT 80 81 static DEFINE_MUTEX(gpio_lookup_lock); 82 static LIST_HEAD(gpio_lookup_list); 83 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); 89 90 static DEFINE_MUTEX(gpio_machine_hogs_mutex); 91 static LIST_HEAD(gpio_machine_hogs); 92 93 const char *const gpio_suffixes[] = { "gpios", "gpio", NULL }; 94 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); 103 104 static bool gpiolib_initialized; 105 106 const char *gpiod_get_label(struct gpio_desc *desc) 107 { 108 struct gpio_desc_label *label; 109 unsigned long flags; 110 111 flags = READ_ONCE(desc->flags); 112 113 label = srcu_dereference_check(desc->label, &desc->gdev->desc_srcu, 114 srcu_read_lock_held(&desc->gdev->desc_srcu)); 115 116 if (test_bit(FLAG_USED_AS_IRQ, &flags)) 117 return label ? label->str : "interrupt"; 118 119 if (!test_bit(FLAG_REQUESTED, &flags)) 120 return NULL; 121 122 return label ? label->str : NULL; 123 } 124 125 static void desc_free_label(struct rcu_head *rh) 126 { 127 kfree(container_of(rh, struct gpio_desc_label, rh)); 128 } 129 130 static int desc_set_label(struct gpio_desc *desc, const char *label) 131 { 132 struct gpio_desc_label *new = NULL, *old; 133 134 if (label) { 135 new = kzalloc(struct_size(new, str, strlen(label) + 1), 136 GFP_KERNEL); 137 if (!new) 138 return -ENOMEM; 139 140 strcpy(new->str, label); 141 } 142 143 old = rcu_replace_pointer(desc->label, new, 1); 144 if (old) 145 call_srcu(&desc->gdev->desc_srcu, &old->rh, desc_free_label); 146 147 return 0; 148 } 149 150 /** 151 * gpio_to_desc - Convert a GPIO number to its descriptor 152 * @gpio: global GPIO number 153 * 154 * Returns: 155 * The GPIO descriptor associated with the given GPIO, or %NULL if no GPIO 156 * with the given number exists in the system. 157 */ 158 struct gpio_desc *gpio_to_desc(unsigned gpio) 159 { 160 struct gpio_device *gdev; 161 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]; 168 } 169 } 170 171 return NULL; 172 } 173 EXPORT_SYMBOL_GPL(gpio_to_desc); 174 175 /* This function is deprecated and will be removed soon, don't use. */ 176 struct gpio_desc *gpiochip_get_desc(struct gpio_chip *gc, 177 unsigned int hwnum) 178 { 179 return gpio_device_get_desc(gc->gpiodev, hwnum); 180 } 181 182 /** 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 187 * 188 * Returns: 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 191 * already vanished. 192 * 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 196 * by this function. 197 */ 198 struct gpio_desc * 199 gpio_device_get_desc(struct gpio_device *gdev, unsigned int hwnum) 200 { 201 if (hwnum >= gdev->ngpio) 202 return ERR_PTR(-EINVAL); 203 204 return &gdev->descs[array_index_nospec(hwnum, gdev->ngpio)]; 205 } 206 EXPORT_SYMBOL_GPL(gpio_device_get_desc); 207 208 /** 209 * desc_to_gpio - convert a GPIO descriptor to the integer namespace 210 * @desc: GPIO descriptor 211 * 212 * This should disappear in the future but is needed since we still 213 * use GPIO numbers for error messages and sysfs nodes. 214 * 215 * Returns: 216 * The global GPIO number for the GPIO specified by its descriptor. 217 */ 218 int desc_to_gpio(const struct gpio_desc *desc) 219 { 220 return desc->gdev->base + (desc - &desc->gdev->descs[0]); 221 } 222 EXPORT_SYMBOL_GPL(desc_to_gpio); 223 224 225 /** 226 * gpiod_to_chip - Return the GPIO chip to which a GPIO descriptor belongs 227 * @desc: descriptor to return the chip of 228 * 229 * *DEPRECATED* 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 232 * pointer. 233 * 234 * Returns: 235 * Address of the GPIO chip backing this device. 236 */ 237 struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc) 238 { 239 if (!desc) 240 return NULL; 241 242 return gpio_device_get_chip(desc->gdev); 243 } 244 EXPORT_SYMBOL_GPL(gpiod_to_chip); 245 246 /** 247 * gpiod_to_gpio_device() - Return the GPIO device to which this descriptor 248 * belongs. 249 * @desc: Descriptor for which to return the GPIO device. 250 * 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. 254 * 255 * Returns: 256 * Address of the GPIO device owning this descriptor. 257 */ 258 struct gpio_device *gpiod_to_gpio_device(struct gpio_desc *desc) 259 { 260 if (!desc) 261 return NULL; 262 263 return desc->gdev; 264 } 265 EXPORT_SYMBOL_GPL(gpiod_to_gpio_device); 266 267 /** 268 * gpio_device_get_base() - Get the base GPIO number allocated by this device 269 * @gdev: GPIO device 270 * 271 * Returns: 272 * First GPIO number in the global GPIO numberspace for this device. 273 */ 274 int gpio_device_get_base(struct gpio_device *gdev) 275 { 276 return gdev->base; 277 } 278 EXPORT_SYMBOL_GPL(gpio_device_get_base); 279 280 /** 281 * gpio_device_get_label() - Get the label of this GPIO device 282 * @gdev: GPIO device 283 * 284 * Returns: 285 * Pointer to the string containing the GPIO device label. The string's 286 * lifetime is tied to that of the underlying GPIO device. 287 */ 288 const char *gpio_device_get_label(struct gpio_device *gdev) 289 { 290 return gdev->label; 291 } 292 EXPORT_SYMBOL(gpio_device_get_label); 293 294 /** 295 * gpio_device_get_chip() - Get the gpio_chip implementation of this GPIO device 296 * @gdev: GPIO device 297 * 298 * Returns: 299 * Address of the GPIO chip backing this device. 300 * 301 * *DEPRECATED* 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 306 * gpio_device). 307 * 308 * Use at your own risk. 309 */ 310 struct gpio_chip *gpio_device_get_chip(struct gpio_device *gdev) 311 { 312 return rcu_dereference_check(gdev->chip, 1); 313 } 314 EXPORT_SYMBOL_GPL(gpio_device_get_chip); 315 316 /* dynamic allocation of GPIOs, e.g. on a hotplugged device */ 317 static int gpiochip_find_base_unlocked(u16 ngpio) 318 { 319 unsigned int base = GPIO_DYNAMIC_BASE; 320 struct gpio_device *gdev; 321 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) 326 break; 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) 332 break; 333 } 334 335 if (base <= GPIO_DYNAMIC_MAX - ngpio) { 336 pr_debug("%s: found new base at %d\n", __func__, base); 337 return base; 338 } else { 339 pr_err("%s: cannot find free range\n", __func__); 340 return -ENOSPC; 341 } 342 } 343 344 /** 345 * gpiod_get_direction - return the current direction of a GPIO 346 * @desc: GPIO to get the direction of 347 * 348 * Returns: 349 * 0 for output, 1 for input, or an error code in case of error. 350 * 351 * This function may sleep if gpiod_cansleep() is true. 352 */ 353 int gpiod_get_direction(struct gpio_desc *desc) 354 { 355 unsigned long flags; 356 unsigned int offset; 357 int ret; 358 359 /* 360 * We cannot use VALIDATE_DESC() as we must not return 0 for a NULL 361 * descriptor like we usually do. 362 */ 363 if (IS_ERR_OR_NULL(desc)) 364 return -EINVAL; 365 366 CLASS(gpio_chip_guard, guard)(desc); 367 if (!guard.gc) 368 return -ENODEV; 369 370 offset = gpio_chip_hwgpio(desc); 371 flags = READ_ONCE(desc->flags); 372 373 /* 374 * Open drain emulation using input mode may incorrectly report 375 * input here, fix that up. 376 */ 377 if (test_bit(FLAG_OPEN_DRAIN, &flags) && 378 test_bit(FLAG_IS_OUT, &flags)) 379 return 0; 380 381 if (!guard.gc->get_direction) 382 return -ENOTSUPP; 383 384 ret = guard.gc->get_direction(guard.gc, offset); 385 if (ret < 0) 386 return ret; 387 388 /* 389 * GPIO_LINE_DIRECTION_IN or other positive, 390 * otherwise GPIO_LINE_DIRECTION_OUT. 391 */ 392 if (ret > 0) 393 ret = 1; 394 395 assign_bit(FLAG_IS_OUT, &flags, !ret); 396 WRITE_ONCE(desc->flags, flags); 397 398 return ret; 399 } 400 EXPORT_SYMBOL_GPL(gpiod_get_direction); 401 402 /* 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. 405 * 406 * Returns: 407 * -EBUSY if the new chip overlaps with some other chip's integer space. 408 */ 409 static int gpiodev_add_to_list_unlocked(struct gpio_device *gdev) 410 { 411 struct gpio_device *prev, *next; 412 413 lockdep_assert_held(&gpio_devices_lock); 414 415 if (list_empty(&gpio_devices)) { 416 /* initial entry in list */ 417 list_add_tail_rcu(&gdev->list, &gpio_devices); 418 return 0; 419 } 420 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); 425 return 0; 426 } 427 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); 432 return 0; 433 } 434 435 list_for_each_entry_safe(prev, next, &gpio_devices, list) { 436 /* at the end of the list */ 437 if (&next->list == &gpio_devices) 438 break; 439 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); 444 return 0; 445 } 446 } 447 448 synchronize_srcu(&gpio_devices_srcu); 449 450 return -EBUSY; 451 } 452 453 /* 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. 458 */ 459 static struct gpio_desc *gpio_name_to_desc(const char * const name) 460 { 461 struct gpio_device *gdev; 462 struct gpio_desc *desc; 463 struct gpio_chip *gc; 464 465 if (!name) 466 return NULL; 467 468 guard(srcu)(&gpio_devices_srcu); 469 470 list_for_each_entry_srcu(gdev, &gpio_devices, list, 471 srcu_read_lock_held(&gpio_devices_srcu)) { 472 guard(srcu)(&gdev->srcu); 473 474 gc = srcu_dereference(gdev->chip, &gdev->srcu); 475 if (!gc) 476 continue; 477 478 for_each_gpio_desc(gc, desc) { 479 if (desc->name && !strcmp(desc->name, name)) 480 return desc; 481 } 482 } 483 484 return NULL; 485 } 486 487 /* 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. 490 * 491 * Note that: 492 * 1. Non-unique names are still accepted, 493 * 2. Name collisions within the same GPIO chip are not reported. 494 */ 495 static void gpiochip_set_desc_names(struct gpio_chip *gc) 496 { 497 struct gpio_device *gdev = gc->gpiodev; 498 int i; 499 500 /* First check all names if they are unique */ 501 for (i = 0; i != gc->ngpio; ++i) { 502 struct gpio_desc *gpio; 503 504 gpio = gpio_name_to_desc(gc->names[i]); 505 if (gpio) 506 dev_warn(&gdev->dev, 507 "Detected name collision for GPIO name '%s'\n", 508 gc->names[i]); 509 } 510 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]; 514 } 515 516 /* 517 * gpiochip_set_names - Set GPIO line names using device properties 518 * @chip: GPIO chip whose lines should be named, if possible 519 * 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 523 * by the caller. 524 */ 525 static int gpiochip_set_names(struct gpio_chip *chip) 526 { 527 struct gpio_device *gdev = chip->gpiodev; 528 struct device *dev = &gdev->dev; 529 const char **names; 530 int ret, i; 531 int count; 532 533 count = device_property_string_array_count(dev, "gpio-line-names"); 534 if (count < 0) 535 return 0; 536 537 /* 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 543 * gpiochips. 544 */ 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); 548 return 0; 549 } 550 551 names = kcalloc(count, sizeof(*names), GFP_KERNEL); 552 if (!names) 553 return -ENOMEM; 554 555 ret = device_property_read_string_array(dev, "gpio-line-names", 556 names, count); 557 if (ret < 0) { 558 dev_warn(dev, "failed to read GPIO line names\n"); 559 kfree(names); 560 return ret; 561 } 562 563 /* 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. 572 */ 573 count = (count > chip->offset) ? count - chip->offset : count; 574 if (count > chip->ngpio) 575 count = chip->ngpio; 576 577 for (i = 0; i < count; i++) { 578 /* 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 582 * device properties. 583 */ 584 if (names[chip->offset + i] && names[chip->offset + i][0]) 585 gdev->descs[i].name = names[chip->offset + i]; 586 } 587 588 kfree(names); 589 590 return 0; 591 } 592 593 static unsigned long *gpiochip_allocate_mask(struct gpio_chip *gc) 594 { 595 unsigned long *p; 596 597 p = bitmap_alloc(gc->ngpio, GFP_KERNEL); 598 if (!p) 599 return NULL; 600 601 /* Assume by default all GPIOs are valid */ 602 bitmap_fill(p, gc->ngpio); 603 604 return p; 605 } 606 607 static void gpiochip_free_mask(unsigned long **p) 608 { 609 bitmap_free(*p); 610 *p = NULL; 611 } 612 613 static unsigned int gpiochip_count_reserved_ranges(struct gpio_chip *gc) 614 { 615 struct device *dev = &gc->gpiodev->dev; 616 int size; 617 618 /* Format is "start, count, ..." */ 619 size = device_property_count_u32(dev, "gpio-reserved-ranges"); 620 if (size > 0 && size % 2 == 0) 621 return size; 622 623 return 0; 624 } 625 626 static int gpiochip_apply_reserved_ranges(struct gpio_chip *gc) 627 { 628 struct device *dev = &gc->gpiodev->dev; 629 unsigned int size; 630 u32 *ranges; 631 int ret; 632 633 size = gpiochip_count_reserved_ranges(gc); 634 if (size == 0) 635 return 0; 636 637 ranges = kmalloc_array(size, sizeof(*ranges), GFP_KERNEL); 638 if (!ranges) 639 return -ENOMEM; 640 641 ret = device_property_read_u32_array(dev, "gpio-reserved-ranges", 642 ranges, size); 643 if (ret) { 644 kfree(ranges); 645 return ret; 646 } 647 648 while (size) { 649 u32 count = ranges[--size]; 650 u32 start = ranges[--size]; 651 652 if (start >= gc->ngpio || start + count > gc->ngpio) 653 continue; 654 655 bitmap_clear(gc->valid_mask, start, count); 656 } 657 658 kfree(ranges); 659 return 0; 660 } 661 662 static int gpiochip_init_valid_mask(struct gpio_chip *gc) 663 { 664 int ret; 665 666 if (!(gpiochip_count_reserved_ranges(gc) || gc->init_valid_mask)) 667 return 0; 668 669 gc->valid_mask = gpiochip_allocate_mask(gc); 670 if (!gc->valid_mask) 671 return -ENOMEM; 672 673 ret = gpiochip_apply_reserved_ranges(gc); 674 if (ret) 675 return ret; 676 677 if (gc->init_valid_mask) 678 return gc->init_valid_mask(gc, 679 gc->valid_mask, 680 gc->ngpio); 681 682 return 0; 683 } 684 685 static void gpiochip_free_valid_mask(struct gpio_chip *gc) 686 { 687 gpiochip_free_mask(&gc->valid_mask); 688 } 689 690 static int gpiochip_add_pin_ranges(struct gpio_chip *gc) 691 { 692 /* 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. 696 */ 697 if (device_property_present(&gc->gpiodev->dev, "gpio-ranges")) 698 return 0; 699 700 if (gc->add_pin_ranges) 701 return gc->add_pin_ranges(gc); 702 703 return 0; 704 } 705 706 bool gpiochip_line_is_valid(const struct gpio_chip *gc, 707 unsigned int offset) 708 { 709 /* No mask means all valid */ 710 if (likely(!gc->valid_mask)) 711 return true; 712 return test_bit(offset, gc->valid_mask); 713 } 714 EXPORT_SYMBOL_GPL(gpiochip_line_is_valid); 715 716 static void gpiod_free_irqs(struct gpio_desc *desc) 717 { 718 int irq = gpiod_to_irq(desc); 719 struct irq_desc *irqd = irq_to_desc(irq); 720 void *cookie; 721 722 for (;;) { 723 /* 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(). 729 */ 730 scoped_guard(mutex, &irqd->request_mutex) { 731 if (!irq_desc_has_action(irqd)) 732 return; 733 734 cookie = irqd->action->dev_id; 735 } 736 737 free_irq(irq, cookie); 738 } 739 } 740 741 /* 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). 746 */ 747 static void gpiochip_free_remaining_irqs(struct gpio_chip *gc) 748 { 749 struct gpio_desc *desc; 750 751 for_each_gpio_desc_with_flag(gc, desc, FLAG_USED_AS_IRQ) 752 gpiod_free_irqs(desc); 753 } 754 755 static void gpiodev_release(struct device *dev) 756 { 757 struct gpio_device *gdev = to_gpio_device(dev); 758 759 /* Call pending kfree()s for descriptor labels. */ 760 synchronize_srcu(&gdev->desc_srcu); 761 cleanup_srcu_struct(&gdev->desc_srcu); 762 763 ida_free(&gpio_ida, gdev->id); 764 kfree_const(gdev->label); 765 kfree(gdev->descs); 766 cleanup_srcu_struct(&gdev->srcu); 767 kfree(gdev); 768 } 769 770 static const struct device_type gpio_dev_type = { 771 .name = "gpio_chip", 772 .release = gpiodev_release, 773 }; 774 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)) 778 #else 779 /* 780 * gpiolib_cdev_register() indirectly calls device_add(), which is still 781 * required even when cdev is not selected. 782 */ 783 #define gcdev_register(gdev, devt) device_add(&(gdev)->dev) 784 #define gcdev_unregister(gdev) device_del(&(gdev)->dev) 785 #endif 786 787 static int gpiochip_setup_dev(struct gpio_device *gdev) 788 { 789 struct fwnode_handle *fwnode = dev_fwnode(&gdev->dev); 790 int ret; 791 792 device_initialize(&gdev->dev); 793 794 /* 795 * If fwnode doesn't belong to another device, it's safe to clear its 796 * initialized flag. 797 */ 798 if (fwnode && !fwnode->dev) 799 fwnode_dev_initialized(fwnode, false); 800 801 ret = gcdev_register(gdev, gpio_devt); 802 if (ret) 803 return ret; 804 805 ret = gpiochip_sysfs_register(gdev); 806 if (ret) 807 goto err_remove_device; 808 809 dev_dbg(&gdev->dev, "registered GPIOs %u to %u on %s\n", gdev->base, 810 gdev->base + gdev->ngpio - 1, gdev->label); 811 812 return 0; 813 814 err_remove_device: 815 gcdev_unregister(gdev); 816 return ret; 817 } 818 819 static void gpiochip_machine_hog(struct gpio_chip *gc, struct gpiod_hog *hog) 820 { 821 struct gpio_desc *desc; 822 int rv; 823 824 desc = gpiochip_get_desc(gc, hog->chip_hwnum); 825 if (IS_ERR(desc)) { 826 chip_err(gc, "%s: unable to get GPIO desc: %ld\n", __func__, 827 PTR_ERR(desc)); 828 return; 829 } 830 831 rv = gpiod_hog(desc, hog->line_name, hog->lflags, hog->dflags); 832 if (rv) 833 gpiod_err(desc, "%s: unable to hog GPIO line (%s:%u): %d\n", 834 __func__, gc->label, hog->chip_hwnum, rv); 835 } 836 837 static void machine_gpiochip_add(struct gpio_chip *gc) 838 { 839 struct gpiod_hog *hog; 840 841 mutex_lock(&gpio_machine_hogs_mutex); 842 843 list_for_each_entry(hog, &gpio_machine_hogs, list) { 844 if (!strcmp(gc->label, hog->chip_label)) 845 gpiochip_machine_hog(gc, hog); 846 } 847 848 mutex_unlock(&gpio_machine_hogs_mutex); 849 } 850 851 static void gpiochip_setup_devs(void) 852 { 853 struct gpio_device *gdev; 854 int ret; 855 856 guard(srcu)(&gpio_devices_srcu); 857 858 list_for_each_entry_srcu(gdev, &gpio_devices, list, 859 srcu_read_lock_held(&gpio_devices_srcu)) { 860 ret = gpiochip_setup_dev(gdev); 861 if (ret) 862 dev_err(&gdev->dev, 863 "Failed to initialize gpio device (%d)\n", ret); 864 } 865 } 866 867 static void gpiochip_set_data(struct gpio_chip *gc, void *data) 868 { 869 gc->gpiodev->data = data; 870 } 871 872 /** 873 * gpiochip_get_data() - get per-subdriver data for the chip 874 * @gc: GPIO chip 875 * 876 * Returns: 877 * The per-subdriver data for the chip. 878 */ 879 void *gpiochip_get_data(struct gpio_chip *gc) 880 { 881 return gc->gpiodev->data; 882 } 883 EXPORT_SYMBOL_GPL(gpiochip_get_data); 884 885 int gpiochip_get_ngpios(struct gpio_chip *gc, struct device *dev) 886 { 887 u32 ngpios = gc->ngpio; 888 int ret; 889 890 if (ngpios == 0) { 891 ret = device_property_read_u32(dev, "ngpios", &ngpios); 892 if (ret == -ENODATA) 893 /* 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. 898 */ 899 ngpios = 0; 900 else if (ret) 901 return ret; 902 903 gc->ngpio = ngpios; 904 } 905 906 if (gc->ngpio == 0) { 907 chip_err(gc, "tried to insert a GPIO chip with zero lines\n"); 908 return -EINVAL; 909 } 910 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); 914 915 return 0; 916 } 917 EXPORT_SYMBOL_GPL(gpiochip_get_ngpios); 918 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) 922 { 923 struct gpio_device *gdev; 924 unsigned int desc_index; 925 int base = 0; 926 int ret = 0; 927 928 /* 929 * First: allocate and populate the internal stat container, and 930 * set up the struct device. 931 */ 932 gdev = kzalloc(sizeof(*gdev), GFP_KERNEL); 933 if (!gdev) 934 return -ENOMEM; 935 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); 940 941 gc->gpiodev = gdev; 942 gpiochip_set_data(gc, data); 943 944 /* 945 * If the calling driver did not initialize firmware node, 946 * do it here using the parent device, if any. 947 */ 948 if (gc->fwnode) 949 device_set_node(&gdev->dev, gc->fwnode); 950 else if (gc->parent) 951 device_set_node(&gdev->dev, dev_fwnode(gc->parent)); 952 953 gdev->id = ida_alloc(&gpio_ida, GFP_KERNEL); 954 if (gdev->id < 0) { 955 ret = gdev->id; 956 goto err_free_gdev; 957 } 958 959 ret = dev_set_name(&gdev->dev, GPIOCHIP_NAME "%d", gdev->id); 960 if (ret) 961 goto err_free_ida; 962 963 if (gc->parent && gc->parent->driver) 964 gdev->owner = gc->parent->driver->owner; 965 else if (gc->owner) 966 /* TODO: remove chip->owner */ 967 gdev->owner = gc->owner; 968 else 969 gdev->owner = THIS_MODULE; 970 971 ret = gpiochip_get_ngpios(gc, &gdev->dev); 972 if (ret) 973 goto err_free_dev_name; 974 975 gdev->descs = kcalloc(gc->ngpio, sizeof(*gdev->descs), GFP_KERNEL); 976 if (!gdev->descs) { 977 ret = -ENOMEM; 978 goto err_free_dev_name; 979 } 980 981 gdev->label = kstrdup_const(gc->label ?: "unknown", GFP_KERNEL); 982 if (!gdev->label) { 983 ret = -ENOMEM; 984 goto err_free_descs; 985 } 986 987 gdev->ngpio = gc->ngpio; 988 gdev->can_sleep = gc->can_sleep; 989 990 scoped_guard(mutex, &gpio_devices_lock) { 991 /* 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. 997 */ 998 base = gc->base; 999 if (base < 0) { 1000 base = gpiochip_find_base_unlocked(gc->ngpio); 1001 if (base < 0) { 1002 ret = base; 1003 base = 0; 1004 goto err_free_label; 1005 } 1006 1007 /* 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. 1012 */ 1013 gc->base = base; 1014 } else { 1015 dev_warn(&gdev->dev, 1016 "Static allocation of GPIO base is deprecated, use dynamic allocation.\n"); 1017 } 1018 1019 gdev->base = base; 1020 1021 ret = gpiodev_add_to_list_unlocked(gdev); 1022 if (ret) { 1023 chip_err(gc, "GPIO integer space overlap, cannot add chip\n"); 1024 goto err_free_label; 1025 } 1026 } 1027 1028 ATOMIC_INIT_NOTIFIER_HEAD(&gdev->line_state_notifier); 1029 BLOCKING_INIT_NOTIFIER_HEAD(&gdev->device_notifier); 1030 1031 ret = init_srcu_struct(&gdev->srcu); 1032 if (ret) 1033 goto err_remove_from_list; 1034 1035 ret = init_srcu_struct(&gdev->desc_srcu); 1036 if (ret) 1037 goto err_cleanup_gdev_srcu; 1038 1039 #ifdef CONFIG_PINCTRL 1040 INIT_LIST_HEAD(&gdev->pin_ranges); 1041 #endif 1042 1043 if (gc->names) 1044 gpiochip_set_desc_names(gc); 1045 1046 ret = gpiochip_set_names(gc); 1047 if (ret) 1048 goto err_cleanup_desc_srcu; 1049 1050 ret = gpiochip_init_valid_mask(gc); 1051 if (ret) 1052 goto err_cleanup_desc_srcu; 1053 1054 for (desc_index = 0; desc_index < gc->ngpio; desc_index++) { 1055 struct gpio_desc *desc = &gdev->descs[desc_index]; 1056 1057 desc->gdev = gdev; 1058 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)); 1062 } else { 1063 assign_bit(FLAG_IS_OUT, 1064 &desc->flags, !gc->direction_input); 1065 } 1066 } 1067 1068 ret = of_gpiochip_add(gc); 1069 if (ret) 1070 goto err_free_valid_mask; 1071 1072 ret = gpiochip_add_pin_ranges(gc); 1073 if (ret) 1074 goto err_remove_of_chip; 1075 1076 acpi_gpiochip_add(gc); 1077 1078 machine_gpiochip_add(gc); 1079 1080 ret = gpiochip_irqchip_init_valid_mask(gc); 1081 if (ret) 1082 goto err_free_hogs; 1083 1084 ret = gpiochip_irqchip_init_hw(gc); 1085 if (ret) 1086 goto err_remove_irqchip_mask; 1087 1088 ret = gpiochip_add_irqchip(gc, lock_key, request_key); 1089 if (ret) 1090 goto err_remove_irqchip_mask; 1091 1092 /* 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. 1099 */ 1100 if (gpiolib_initialized) { 1101 ret = gpiochip_setup_dev(gdev); 1102 if (ret) 1103 goto err_remove_irqchip; 1104 } 1105 return 0; 1106 1107 err_remove_irqchip: 1108 gpiochip_irqchip_remove(gc); 1109 err_remove_irqchip_mask: 1110 gpiochip_irqchip_free_valid_mask(gc); 1111 err_free_hogs: 1112 gpiochip_free_hogs(gc); 1113 acpi_gpiochip_remove(gc); 1114 gpiochip_remove_pin_ranges(gc); 1115 err_remove_of_chip: 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; 1131 } 1132 err_free_label: 1133 kfree_const(gdev->label); 1134 err_free_descs: 1135 kfree(gdev->descs); 1136 err_free_dev_name: 1137 kfree(dev_name(&gdev->dev)); 1138 err_free_ida: 1139 ida_free(&gpio_ida, gdev->id); 1140 err_free_gdev: 1141 kfree(gdev); 1142 err_print_message: 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); 1148 } 1149 return ret; 1150 } 1151 EXPORT_SYMBOL_GPL(gpiochip_add_data_with_key); 1152 1153 /** 1154 * gpiochip_remove() - unregister a gpio_chip 1155 * @gc: the chip to unregister 1156 * 1157 * A gpio_chip with any GPIOs still requested may not be removed. 1158 */ 1159 void gpiochip_remove(struct gpio_chip *gc) 1160 { 1161 struct gpio_device *gdev = gc->gpiodev; 1162 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); 1167 1168 scoped_guard(mutex, &gpio_devices_lock) 1169 list_del_rcu(&gdev->list); 1170 synchronize_srcu(&gpio_devices_srcu); 1171 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); 1180 /* 1181 * We accept no more calls into the driver from this point, so 1182 * NULL the driver data pointer. 1183 */ 1184 gpiochip_set_data(gc, NULL); 1185 1186 /* 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 1190 * gone. 1191 */ 1192 gcdev_unregister(gdev); 1193 gpio_device_put(gdev); 1194 } 1195 EXPORT_SYMBOL_GPL(gpiochip_remove); 1196 1197 /** 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 1201 * 1202 * Returns: 1203 * New reference to struct gpio_device. 1204 * 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. 1210 * 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. 1214 * 1215 * If the function returns non-NULL, the returned reference must be freed by 1216 * the caller using gpio_device_put(). 1217 */ 1218 struct gpio_device *gpio_device_find(const void *data, 1219 int (*match)(struct gpio_chip *gc, 1220 const void *data)) 1221 { 1222 struct gpio_device *gdev; 1223 struct gpio_chip *gc; 1224 1225 might_sleep(); 1226 1227 guard(srcu)(&gpio_devices_srcu); 1228 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)) 1232 continue; 1233 1234 guard(srcu)(&gdev->srcu); 1235 1236 gc = srcu_dereference(gdev->chip, &gdev->srcu); 1237 1238 if (gc && match(gc, data)) 1239 return gpio_device_get(gdev); 1240 } 1241 1242 return NULL; 1243 } 1244 EXPORT_SYMBOL_GPL(gpio_device_find); 1245 1246 static int gpio_chip_match_by_label(struct gpio_chip *gc, const void *label) 1247 { 1248 return gc->label && !strcmp(gc->label, label); 1249 } 1250 1251 /** 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 1255 * 1256 * Returns: 1257 * Reference to the GPIO device or NULL. Reference must be released with 1258 * gpio_device_put(). 1259 */ 1260 struct gpio_device *gpio_device_find_by_label(const char *label) 1261 { 1262 return gpio_device_find((void *)label, gpio_chip_match_by_label); 1263 } 1264 EXPORT_SYMBOL_GPL(gpio_device_find_by_label); 1265 1266 static int gpio_chip_match_by_fwnode(struct gpio_chip *gc, const void *fwnode) 1267 { 1268 return device_match_fwnode(&gc->gpiodev->dev, fwnode); 1269 } 1270 1271 /** 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 1275 * 1276 * Returns: 1277 * Reference to the GPIO device or NULL. Reference must be released with 1278 * gpio_device_put(). 1279 */ 1280 struct gpio_device *gpio_device_find_by_fwnode(const struct fwnode_handle *fwnode) 1281 { 1282 return gpio_device_find((void *)fwnode, gpio_chip_match_by_fwnode); 1283 } 1284 EXPORT_SYMBOL_GPL(gpio_device_find_by_fwnode); 1285 1286 /** 1287 * gpio_device_get() - Increase the reference count of this GPIO device 1288 * @gdev: GPIO device to increase the refcount for 1289 * 1290 * Returns: 1291 * Pointer to @gdev. 1292 */ 1293 struct gpio_device *gpio_device_get(struct gpio_device *gdev) 1294 { 1295 return to_gpio_device(get_device(&gdev->dev)); 1296 } 1297 EXPORT_SYMBOL_GPL(gpio_device_get); 1298 1299 /** 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 1303 */ 1304 void gpio_device_put(struct gpio_device *gdev) 1305 { 1306 put_device(&gdev->dev); 1307 } 1308 EXPORT_SYMBOL_GPL(gpio_device_put); 1309 1310 /** 1311 * gpio_device_to_device() - Retrieve the address of the underlying struct 1312 * device. 1313 * @gdev: GPIO device for which to return the address. 1314 * 1315 * This does not increase the reference count of the GPIO device nor the 1316 * underlying struct device. 1317 * 1318 * Returns: 1319 * Address of struct device backing this GPIO device. 1320 */ 1321 struct device *gpio_device_to_device(struct gpio_device *gdev) 1322 { 1323 return &gdev->dev; 1324 } 1325 EXPORT_SYMBOL_GPL(gpio_device_to_device); 1326 1327 #ifdef CONFIG_GPIOLIB_IRQCHIP 1328 1329 /* 1330 * The following is irqchip helper code for gpiochips. 1331 */ 1332 1333 static int gpiochip_irqchip_init_hw(struct gpio_chip *gc) 1334 { 1335 struct gpio_irq_chip *girq = &gc->irq; 1336 1337 if (!girq->init_hw) 1338 return 0; 1339 1340 return girq->init_hw(gc); 1341 } 1342 1343 static int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc) 1344 { 1345 struct gpio_irq_chip *girq = &gc->irq; 1346 1347 if (!girq->init_valid_mask) 1348 return 0; 1349 1350 girq->valid_mask = gpiochip_allocate_mask(gc); 1351 if (!girq->valid_mask) 1352 return -ENOMEM; 1353 1354 girq->init_valid_mask(gc, girq->valid_mask, gc->ngpio); 1355 1356 return 0; 1357 } 1358 1359 static void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc) 1360 { 1361 gpiochip_free_mask(&gc->irq.valid_mask); 1362 } 1363 1364 static bool gpiochip_irqchip_irq_valid(const struct gpio_chip *gc, 1365 unsigned int offset) 1366 { 1367 if (!gpiochip_line_is_valid(gc, offset)) 1368 return false; 1369 /* No mask means all valid */ 1370 if (likely(!gc->irq.valid_mask)) 1371 return true; 1372 return test_bit(offset, gc->irq.valid_mask); 1373 } 1374 1375 #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY 1376 1377 /** 1378 * gpiochip_set_hierarchical_irqchip() - connects a hierarchical irqchip 1379 * to a gpiochip 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 1383 */ 1384 static void gpiochip_set_hierarchical_irqchip(struct gpio_chip *gc, 1385 struct irq_chip *irqchip) 1386 { 1387 /* DT will deal with mapping each IRQ as we go along */ 1388 if (is_of_node(gc->irq.fwnode)) 1389 return; 1390 1391 /* 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. 1398 */ 1399 if (is_fwnode_irqchip(gc->irq.fwnode)) { 1400 int i; 1401 int ret; 1402 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; 1408 1409 /* 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. 1414 */ 1415 ret = girq->child_to_parent_hwirq(gc, i, 1416 IRQ_TYPE_EDGE_RISING, 1417 &parent_hwirq, 1418 &parent_type); 1419 if (ret) { 1420 chip_err(gc, "skip set-up on hwirq %d\n", 1421 i); 1422 continue; 1423 } 1424 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); 1433 if (ret < 0) { 1434 chip_err(gc, 1435 "can not allocate irq for GPIO line %d parent hwirq %d in hierarchy domain: %d\n", 1436 i, parent_hwirq, 1437 ret); 1438 } 1439 } 1440 } 1441 1442 chip_err(gc, "%s unknown fwnode type proceed anyway\n", __func__); 1443 1444 return; 1445 } 1446 1447 static int gpiochip_hierarchy_irq_domain_translate(struct irq_domain *d, 1448 struct irq_fwspec *fwspec, 1449 unsigned long *hwirq, 1450 unsigned int *type) 1451 { 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); 1455 } 1456 1457 /* This is for board files and others not using DT */ 1458 if (is_fwnode_irqchip(fwspec->fwnode)) { 1459 int ret; 1460 1461 ret = irq_domain_translate_twocell(d, fwspec, hwirq, type); 1462 if (ret) 1463 return ret; 1464 WARN_ON(*type == IRQ_TYPE_NONE); 1465 return 0; 1466 } 1467 return -EINVAL; 1468 } 1469 1470 static int gpiochip_hierarchy_irq_domain_alloc(struct irq_domain *d, 1471 unsigned int irq, 1472 unsigned int nr_irqs, 1473 void *data) 1474 { 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; 1483 int ret; 1484 1485 /* 1486 * The nr_irqs parameter is always one except for PCI multi-MSI 1487 * so this should not happen. 1488 */ 1489 WARN_ON(nr_irqs != 1); 1490 1491 ret = gc->irq.child_irq_domain_ops.translate(d, fwspec, &hwirq, &type); 1492 if (ret) 1493 return ret; 1494 1495 chip_dbg(gc, "allocate IRQ %d, hwirq %lu\n", irq, hwirq); 1496 1497 ret = girq->child_to_parent_hwirq(gc, hwirq, type, 1498 &parent_hwirq, &parent_type); 1499 if (ret) { 1500 chip_err(gc, "can't look up hwirq %lu\n", hwirq); 1501 return ret; 1502 } 1503 chip_dbg(gc, "found parent hwirq %u\n", parent_hwirq); 1504 1505 /* 1506 * We set handle_bad_irq because the .set_type() should 1507 * always be invoked and set the right type of handler. 1508 */ 1509 irq_domain_set_info(d, 1510 irq, 1511 hwirq, 1512 gc->irq.chip, 1513 gc, 1514 girq->handler, 1515 NULL, NULL); 1516 irq_set_probe(irq); 1517 1518 /* This parent only handles asserted level IRQs */ 1519 ret = girq->populate_parent_alloc_arg(gc, &gpio_parent_fwspec, 1520 parent_hwirq, parent_type); 1521 if (ret) 1522 return ret; 1523 1524 chip_dbg(gc, "alloc_irqs_parent for %d parent hwirq %d\n", 1525 irq, parent_hwirq); 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); 1528 /* 1529 * If the parent irqdomain is msi, the interrupts have already 1530 * been allocated, so the EEXIST is good. 1531 */ 1532 if (irq_domain_is_msi(d->parent) && (ret == -EEXIST)) 1533 ret = 0; 1534 if (ret) 1535 chip_err(gc, 1536 "failed to allocate parent hwirq %d for hwirq %lu\n", 1537 parent_hwirq, hwirq); 1538 1539 return ret; 1540 } 1541 1542 static unsigned int gpiochip_child_offset_to_irq_noop(struct gpio_chip *gc, 1543 unsigned int offset) 1544 { 1545 return offset; 1546 } 1547 1548 /** 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 1553 * 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. 1557 * 1558 * Returns: 1559 * 0 on success, or negative errno on failure. 1560 */ 1561 static int gpiochip_irq_domain_activate(struct irq_domain *domain, 1562 struct irq_data *data, bool reserve) 1563 { 1564 struct gpio_chip *gc = domain->host_data; 1565 unsigned int hwirq = irqd_to_hwirq(data); 1566 1567 return gpiochip_lock_as_irq(gc, hwirq); 1568 } 1569 1570 /** 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 1574 * 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. 1578 */ 1579 static void gpiochip_irq_domain_deactivate(struct irq_domain *domain, 1580 struct irq_data *data) 1581 { 1582 struct gpio_chip *gc = domain->host_data; 1583 unsigned int hwirq = irqd_to_hwirq(data); 1584 1585 return gpiochip_unlock_as_irq(gc, hwirq); 1586 } 1587 1588 static void gpiochip_hierarchy_setup_domain_ops(struct irq_domain_ops *ops) 1589 { 1590 ops->activate = gpiochip_irq_domain_activate; 1591 ops->deactivate = gpiochip_irq_domain_deactivate; 1592 ops->alloc = gpiochip_hierarchy_irq_domain_alloc; 1593 1594 /* 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. 1600 */ 1601 if (!ops->translate) 1602 ops->translate = gpiochip_hierarchy_irq_domain_translate; 1603 if (!ops->free) 1604 ops->free = irq_domain_free_irqs_common; 1605 } 1606 1607 static struct irq_domain *gpiochip_hierarchy_create_domain(struct gpio_chip *gc) 1608 { 1609 struct irq_domain *domain; 1610 1611 if (!gc->irq.child_to_parent_hwirq || 1612 !gc->irq.fwnode) { 1613 chip_err(gc, "missing irqdomain vital data\n"); 1614 return ERR_PTR(-EINVAL); 1615 } 1616 1617 if (!gc->irq.child_offset_to_irq) 1618 gc->irq.child_offset_to_irq = gpiochip_child_offset_to_irq_noop; 1619 1620 if (!gc->irq.populate_parent_alloc_arg) 1621 gc->irq.populate_parent_alloc_arg = 1622 gpiochip_populate_parent_fwspec_twocell; 1623 1624 gpiochip_hierarchy_setup_domain_ops(&gc->irq.child_irq_domain_ops); 1625 1626 domain = irq_domain_create_hierarchy( 1627 gc->irq.parent_domain, 1628 0, 1629 gc->ngpio, 1630 gc->irq.fwnode, 1631 &gc->irq.child_irq_domain_ops, 1632 gc); 1633 1634 if (!domain) 1635 return ERR_PTR(-ENOMEM); 1636 1637 gpiochip_set_hierarchical_irqchip(gc, gc->irq.chip); 1638 1639 return domain; 1640 } 1641 1642 static bool gpiochip_hierarchy_is_hierarchical(struct gpio_chip *gc) 1643 { 1644 return !!gc->irq.parent_domain; 1645 } 1646 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) 1651 { 1652 struct irq_fwspec *fwspec = &gfwspec->fwspec; 1653 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; 1658 1659 return 0; 1660 } 1661 EXPORT_SYMBOL_GPL(gpiochip_populate_parent_fwspec_twocell); 1662 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) 1667 { 1668 struct irq_fwspec *fwspec = &gfwspec->fwspec; 1669 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; 1676 1677 return 0; 1678 } 1679 EXPORT_SYMBOL_GPL(gpiochip_populate_parent_fwspec_fourcell); 1680 1681 #else 1682 1683 static struct irq_domain *gpiochip_hierarchy_create_domain(struct gpio_chip *gc) 1684 { 1685 return ERR_PTR(-EINVAL); 1686 } 1687 1688 static bool gpiochip_hierarchy_is_hierarchical(struct gpio_chip *gc) 1689 { 1690 return false; 1691 } 1692 1693 #endif /* CONFIG_IRQ_DOMAIN_HIERARCHY */ 1694 1695 /** 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 1700 * 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. 1704 * 1705 * Returns: 1706 * 0 on success, or negative errno on failure. 1707 */ 1708 static int gpiochip_irq_map(struct irq_domain *d, unsigned int irq, 1709 irq_hw_number_t hwirq) 1710 { 1711 struct gpio_chip *gc = d->host_data; 1712 int ret = 0; 1713 1714 if (!gpiochip_irqchip_irq_valid(gc, hwirq)) 1715 return -ENXIO; 1716 1717 irq_set_chip_data(irq, gc); 1718 /* 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. 1721 */ 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); 1728 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]); 1733 1734 if (ret < 0) 1735 return ret; 1736 1737 /* 1738 * No set-up of the hardware will happen if IRQ_TYPE_NONE 1739 * is passed as default type. 1740 */ 1741 if (gc->irq.default_type != IRQ_TYPE_NONE) 1742 irq_set_irq_type(irq, gc->irq.default_type); 1743 1744 return 0; 1745 } 1746 1747 static void gpiochip_irq_unmap(struct irq_domain *d, unsigned int irq) 1748 { 1749 struct gpio_chip *gc = d->host_data; 1750 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); 1755 } 1756 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, 1762 }; 1763 1764 static struct irq_domain *gpiochip_simple_create_domain(struct gpio_chip *gc) 1765 { 1766 struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev); 1767 struct irq_domain *domain; 1768 1769 domain = irq_domain_create_simple(fwnode, gc->ngpio, gc->irq.first, 1770 &gpiochip_domain_ops, gc); 1771 if (!domain) 1772 return ERR_PTR(-EINVAL); 1773 1774 return domain; 1775 } 1776 1777 static int gpiochip_to_irq(struct gpio_chip *gc, unsigned int offset) 1778 { 1779 struct irq_domain *domain = gc->irq.domain; 1780 1781 #ifdef CONFIG_GPIOLIB_IRQCHIP 1782 /* 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. 1786 */ 1787 if (!gc->irq.initialized) 1788 return -EPROBE_DEFER; 1789 #endif 1790 1791 if (!gpiochip_irqchip_irq_valid(gc, offset)) 1792 return -ENXIO; 1793 1794 #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY 1795 if (irq_domain_is_hierarchy(domain)) { 1796 struct irq_fwspec spec; 1797 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; 1802 1803 return irq_create_fwspec_mapping(&spec); 1804 } 1805 #endif 1806 1807 return irq_create_mapping(domain, offset); 1808 } 1809 1810 int gpiochip_irq_reqres(struct irq_data *d) 1811 { 1812 struct gpio_chip *gc = irq_data_get_irq_chip_data(d); 1813 unsigned int hwirq = irqd_to_hwirq(d); 1814 1815 return gpiochip_reqres_irq(gc, hwirq); 1816 } 1817 EXPORT_SYMBOL(gpiochip_irq_reqres); 1818 1819 void gpiochip_irq_relres(struct irq_data *d) 1820 { 1821 struct gpio_chip *gc = irq_data_get_irq_chip_data(d); 1822 unsigned int hwirq = irqd_to_hwirq(d); 1823 1824 gpiochip_relres_irq(gc, hwirq); 1825 } 1826 EXPORT_SYMBOL(gpiochip_irq_relres); 1827 1828 static void gpiochip_irq_mask(struct irq_data *d) 1829 { 1830 struct gpio_chip *gc = irq_data_get_irq_chip_data(d); 1831 unsigned int hwirq = irqd_to_hwirq(d); 1832 1833 if (gc->irq.irq_mask) 1834 gc->irq.irq_mask(d); 1835 gpiochip_disable_irq(gc, hwirq); 1836 } 1837 1838 static void gpiochip_irq_unmask(struct irq_data *d) 1839 { 1840 struct gpio_chip *gc = irq_data_get_irq_chip_data(d); 1841 unsigned int hwirq = irqd_to_hwirq(d); 1842 1843 gpiochip_enable_irq(gc, hwirq); 1844 if (gc->irq.irq_unmask) 1845 gc->irq.irq_unmask(d); 1846 } 1847 1848 static void gpiochip_irq_enable(struct irq_data *d) 1849 { 1850 struct gpio_chip *gc = irq_data_get_irq_chip_data(d); 1851 unsigned int hwirq = irqd_to_hwirq(d); 1852 1853 gpiochip_enable_irq(gc, hwirq); 1854 gc->irq.irq_enable(d); 1855 } 1856 1857 static void gpiochip_irq_disable(struct irq_data *d) 1858 { 1859 struct gpio_chip *gc = irq_data_get_irq_chip_data(d); 1860 unsigned int hwirq = irqd_to_hwirq(d); 1861 1862 gc->irq.irq_disable(d); 1863 gpiochip_disable_irq(gc, hwirq); 1864 } 1865 1866 static void gpiochip_set_irq_hooks(struct gpio_chip *gc) 1867 { 1868 struct irq_chip *irqchip = gc->irq.chip; 1869 1870 if (irqchip->flags & IRQCHIP_IMMUTABLE) 1871 return; 1872 1873 chip_warn(gc, "not an immutable chip, please consider fixing it!\n"); 1874 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; 1879 } 1880 if (WARN_ON(gc->irq.irq_enable)) 1881 return; 1882 /* Check if the irqchip already has this hook... */ 1883 if (irqchip->irq_enable == gpiochip_irq_enable || 1884 irqchip->irq_mask == gpiochip_irq_mask) { 1885 /* 1886 * ...and if so, give a gentle warning that this is bad 1887 * practice. 1888 */ 1889 chip_info(gc, 1890 "detected irqchip that is shared with multiple gpiochips: please fix the driver.\n"); 1891 return; 1892 } 1893 1894 if (irqchip->irq_disable) { 1895 gc->irq.irq_disable = irqchip->irq_disable; 1896 irqchip->irq_disable = gpiochip_irq_disable; 1897 } else { 1898 gc->irq.irq_mask = irqchip->irq_mask; 1899 irqchip->irq_mask = gpiochip_irq_mask; 1900 } 1901 1902 if (irqchip->irq_enable) { 1903 gc->irq.irq_enable = irqchip->irq_enable; 1904 irqchip->irq_enable = gpiochip_irq_enable; 1905 } else { 1906 gc->irq.irq_unmask = irqchip->irq_unmask; 1907 irqchip->irq_unmask = gpiochip_irq_unmask; 1908 } 1909 } 1910 1911 static int gpiochip_irqchip_add_allocated_domain(struct gpio_chip *gc, 1912 struct irq_domain *domain, 1913 bool allocated_externally) 1914 { 1915 if (!domain) 1916 return -EINVAL; 1917 1918 if (gc->to_irq) 1919 chip_warn(gc, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__); 1920 1921 gc->to_irq = gpiochip_to_irq; 1922 gc->irq.domain = domain; 1923 gc->irq.domain_is_allocated_externally = allocated_externally; 1924 1925 /* 1926 * Using barrier() here to prevent compiler from reordering 1927 * gc->irq.initialized before adding irqdomain. 1928 */ 1929 barrier(); 1930 1931 gc->irq.initialized = true; 1932 1933 return 0; 1934 } 1935 1936 /** 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 1941 * 1942 * Returns: 1943 * 0 on success, or a negative errno on failure. 1944 */ 1945 static int gpiochip_add_irqchip(struct gpio_chip *gc, 1946 struct lock_class_key *lock_key, 1947 struct lock_class_key *request_key) 1948 { 1949 struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev); 1950 struct irq_chip *irqchip = gc->irq.chip; 1951 struct irq_domain *domain; 1952 unsigned int type; 1953 unsigned int i; 1954 int ret; 1955 1956 if (!irqchip) 1957 return 0; 1958 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"); 1961 return -EINVAL; 1962 } 1963 1964 type = gc->irq.default_type; 1965 1966 /* 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. 1970 */ 1971 if (WARN(fwnode && type != IRQ_TYPE_NONE, 1972 "%pfw: Ignoring %u default trigger\n", fwnode, type)) 1973 type = IRQ_TYPE_NONE; 1974 1975 gc->irq.default_type = type; 1976 gc->irq.lock_key = lock_key; 1977 gc->irq.request_key = request_key; 1978 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); 1982 } else { 1983 domain = gpiochip_simple_create_domain(gc); 1984 } 1985 if (IS_ERR(domain)) 1986 return PTR_ERR(domain); 1987 1988 if (gc->irq.parent_handler) { 1989 for (i = 0; i < gc->irq.num_parents; i++) { 1990 void *data; 1991 1992 if (gc->irq.per_parent_data) 1993 data = gc->irq.parent_handler_data_array[i]; 1994 else 1995 data = gc->irq.parent_handler_data ?: gc; 1996 1997 /* 1998 * The parent IRQ chip is already using the chip_data 1999 * for this IRQ chip, so our callbacks simply use the 2000 * handler_data. 2001 */ 2002 irq_set_chained_handler_and_data(gc->irq.parents[i], 2003 gc->irq.parent_handler, 2004 data); 2005 } 2006 } 2007 2008 gpiochip_set_irq_hooks(gc); 2009 2010 ret = gpiochip_irqchip_add_allocated_domain(gc, domain, false); 2011 if (ret) 2012 return ret; 2013 2014 acpi_gpiochip_request_interrupts(gc); 2015 2016 return 0; 2017 } 2018 2019 /** 2020 * gpiochip_irqchip_remove() - removes an irqchip added to a gpiochip 2021 * @gc: the gpiochip to remove the irqchip from 2022 * 2023 * This is called only from gpiochip_remove() 2024 */ 2025 static void gpiochip_irqchip_remove(struct gpio_chip *gc) 2026 { 2027 struct irq_chip *irqchip = gc->irq.chip; 2028 unsigned int offset; 2029 2030 acpi_gpiochip_free_interrupts(gc); 2031 2032 if (irqchip && gc->irq.parent_handler) { 2033 struct gpio_irq_chip *irq = &gc->irq; 2034 unsigned int i; 2035 2036 for (i = 0; i < irq->num_parents; i++) 2037 irq_set_chained_handler_and_data(irq->parents[i], 2038 NULL, NULL); 2039 } 2040 2041 /* Remove all IRQ mappings and delete the domain */ 2042 if (!gc->irq.domain_is_allocated_externally && gc->irq.domain) { 2043 unsigned int irq; 2044 2045 for (offset = 0; offset < gc->ngpio; offset++) { 2046 if (!gpiochip_irqchip_irq_valid(gc, offset)) 2047 continue; 2048 2049 irq = irq_find_mapping(gc->irq.domain, offset); 2050 irq_dispose_mapping(irq); 2051 } 2052 2053 irq_domain_remove(gc->irq.domain); 2054 } 2055 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; 2060 } 2061 if (irqchip->irq_enable == gpiochip_irq_enable) { 2062 irqchip->irq_enable = gc->irq.irq_enable; 2063 irqchip->irq_disable = gc->irq.irq_disable; 2064 } 2065 } 2066 gc->irq.irq_enable = NULL; 2067 gc->irq.irq_disable = NULL; 2068 gc->irq.chip = NULL; 2069 2070 gpiochip_irqchip_free_valid_mask(gc); 2071 } 2072 2073 /** 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 2077 * 2078 * This function adds an IRQ domain to the gpiochip. 2079 * 2080 * Returns: 2081 * 0 on success, or negative errno on failure. 2082 */ 2083 int gpiochip_irqchip_add_domain(struct gpio_chip *gc, 2084 struct irq_domain *domain) 2085 { 2086 return gpiochip_irqchip_add_allocated_domain(gc, domain, true); 2087 } 2088 EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_domain); 2089 2090 #else /* CONFIG_GPIOLIB_IRQCHIP */ 2091 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) 2095 { 2096 return 0; 2097 } 2098 static void gpiochip_irqchip_remove(struct gpio_chip *gc) {} 2099 2100 static inline int gpiochip_irqchip_init_hw(struct gpio_chip *gc) 2101 { 2102 return 0; 2103 } 2104 2105 static inline int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc) 2106 { 2107 return 0; 2108 } 2109 static inline void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc) 2110 { } 2111 2112 #endif /* CONFIG_GPIOLIB_IRQCHIP */ 2113 2114 /** 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 2118 * 2119 * Returns: 2120 * 0 on success, or negative errno on failure. 2121 */ 2122 int gpiochip_generic_request(struct gpio_chip *gc, unsigned int offset) 2123 { 2124 #ifdef CONFIG_PINCTRL 2125 if (list_empty(&gc->gpiodev->pin_ranges)) 2126 return 0; 2127 #endif 2128 2129 return pinctrl_gpio_request(gc, offset); 2130 } 2131 EXPORT_SYMBOL_GPL(gpiochip_generic_request); 2132 2133 /** 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 2137 */ 2138 void gpiochip_generic_free(struct gpio_chip *gc, unsigned int offset) 2139 { 2140 #ifdef CONFIG_PINCTRL 2141 if (list_empty(&gc->gpiodev->pin_ranges)) 2142 return; 2143 #endif 2144 2145 pinctrl_gpio_free(gc, offset); 2146 } 2147 EXPORT_SYMBOL_GPL(gpiochip_generic_free); 2148 2149 /** 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 2154 * 2155 * Returns: 2156 * 0 on success, or negative errno on failure. 2157 */ 2158 int gpiochip_generic_config(struct gpio_chip *gc, unsigned int offset, 2159 unsigned long config) 2160 { 2161 #ifdef CONFIG_PINCTRL 2162 if (list_empty(&gc->gpiodev->pin_ranges)) 2163 return -ENOTSUPP; 2164 #endif 2165 2166 return pinctrl_gpio_set_config(gc, offset, config); 2167 } 2168 EXPORT_SYMBOL_GPL(gpiochip_generic_config); 2169 2170 #ifdef CONFIG_PINCTRL 2171 2172 /** 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 2178 * 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. 2183 * 2184 * Returns: 2185 * 0 on success, or negative errno on failure. 2186 */ 2187 int gpiochip_add_pingroup_range(struct gpio_chip *gc, 2188 struct pinctrl_dev *pctldev, 2189 unsigned int gpio_offset, const char *pin_group) 2190 { 2191 struct gpio_pin_range *pin_range; 2192 struct gpio_device *gdev = gc->gpiodev; 2193 int ret; 2194 2195 pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL); 2196 if (!pin_range) { 2197 chip_err(gc, "failed to allocate pin ranges\n"); 2198 return -ENOMEM; 2199 } 2200 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; 2207 2208 ret = pinctrl_get_group_pins(pctldev, pin_group, 2209 &pin_range->range.pins, 2210 &pin_range->range.npins); 2211 if (ret < 0) { 2212 kfree(pin_range); 2213 return ret; 2214 } 2215 2216 pinctrl_add_gpio_range(pctldev, &pin_range->range); 2217 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); 2221 2222 list_add_tail(&pin_range->node, &gdev->pin_ranges); 2223 2224 return 0; 2225 } 2226 EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range); 2227 2228 /** 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 2236 * 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. 2241 * 2242 * Returns: 2243 * 0 on success, or a negative errno on failure. 2244 */ 2245 int gpiochip_add_pin_range(struct gpio_chip *gc, const char *pinctl_name, 2246 unsigned int gpio_offset, unsigned int pin_offset, 2247 unsigned int npins) 2248 { 2249 struct gpio_pin_range *pin_range; 2250 struct gpio_device *gdev = gc->gpiodev; 2251 int ret; 2252 2253 pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL); 2254 if (!pin_range) { 2255 chip_err(gc, "failed to allocate pin ranges\n"); 2256 return -ENOMEM; 2257 } 2258 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, 2267 &pin_range->range); 2268 if (IS_ERR(pin_range->pctldev)) { 2269 ret = PTR_ERR(pin_range->pctldev); 2270 chip_err(gc, "could not create pin range\n"); 2271 kfree(pin_range); 2272 return ret; 2273 } 2274 chip_dbg(gc, "created GPIO range %d->%d ==> %s PIN %d->%d\n", 2275 gpio_offset, gpio_offset + npins - 1, 2276 pinctl_name, 2277 pin_offset, pin_offset + npins - 1); 2278 2279 list_add_tail(&pin_range->node, &gdev->pin_ranges); 2280 2281 return 0; 2282 } 2283 EXPORT_SYMBOL_GPL(gpiochip_add_pin_range); 2284 2285 /** 2286 * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings 2287 * @gc: the chip to remove all the mappings for 2288 */ 2289 void gpiochip_remove_pin_ranges(struct gpio_chip *gc) 2290 { 2291 struct gpio_pin_range *pin_range, *tmp; 2292 struct gpio_device *gdev = gc->gpiodev; 2293 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, 2297 &pin_range->range); 2298 kfree(pin_range); 2299 } 2300 } 2301 EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges); 2302 2303 #endif /* CONFIG_PINCTRL */ 2304 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. 2308 */ 2309 static int gpiod_request_commit(struct gpio_desc *desc, const char *label) 2310 { 2311 unsigned int offset; 2312 int ret; 2313 2314 CLASS(gpio_chip_guard, guard)(desc); 2315 if (!guard.gc) 2316 return -ENODEV; 2317 2318 if (test_and_set_bit(FLAG_REQUESTED, &desc->flags)) 2319 return -EBUSY; 2320 2321 /* NOTE: gpio_request() can be called in early boot, 2322 * before IRQs are enabled, for non-sleeping (SOC) GPIOs. 2323 */ 2324 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); 2329 else 2330 ret = -EINVAL; 2331 if (ret) 2332 goto out_clear_bit; 2333 } 2334 2335 if (guard.gc->get_direction) 2336 gpiod_get_direction(desc); 2337 2338 ret = desc_set_label(desc, label ? : "?"); 2339 if (ret) 2340 goto out_clear_bit; 2341 2342 return 0; 2343 2344 out_clear_bit: 2345 clear_bit(FLAG_REQUESTED, &desc->flags); 2346 return ret; 2347 } 2348 2349 /* 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. 2354 */ 2355 static int validate_desc(const struct gpio_desc *desc, const char *func) 2356 { 2357 if (!desc) 2358 return 0; 2359 2360 if (IS_ERR(desc)) { 2361 pr_warn("%s: invalid GPIO (errorpointer)\n", func); 2362 return PTR_ERR(desc); 2363 } 2364 2365 return 1; 2366 } 2367 2368 #define VALIDATE_DESC(desc) do { \ 2369 int __valid = validate_desc(desc, __func__); \ 2370 if (__valid <= 0) \ 2371 return __valid; \ 2372 } while (0) 2373 2374 #define VALIDATE_DESC_VOID(desc) do { \ 2375 int __valid = validate_desc(desc, __func__); \ 2376 if (__valid <= 0) \ 2377 return; \ 2378 } while (0) 2379 2380 int gpiod_request(struct gpio_desc *desc, const char *label) 2381 { 2382 int ret = -EPROBE_DEFER; 2383 2384 VALIDATE_DESC(desc); 2385 2386 if (try_module_get(desc->gdev->owner)) { 2387 ret = gpiod_request_commit(desc, label); 2388 if (ret) 2389 module_put(desc->gdev->owner); 2390 else 2391 gpio_device_get(desc->gdev); 2392 } 2393 2394 if (ret) 2395 gpiod_dbg(desc, "%s: status %d\n", __func__, ret); 2396 2397 return ret; 2398 } 2399 2400 static void gpiod_free_commit(struct gpio_desc *desc) 2401 { 2402 unsigned long flags; 2403 2404 might_sleep(); 2405 2406 CLASS(gpio_chip_guard, guard)(desc); 2407 2408 flags = READ_ONCE(desc->flags); 2409 2410 if (guard.gc && test_bit(FLAG_REQUESTED, &flags)) { 2411 if (guard.gc->free) 2412 guard.gc->free(guard.gc, gpio_chip_hwgpio(desc)); 2413 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); 2426 #endif 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); 2431 #endif 2432 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_RELEASED); 2433 } 2434 } 2435 2436 void gpiod_free(struct gpio_desc *desc) 2437 { 2438 VALIDATE_DESC_VOID(desc); 2439 2440 gpiod_free_commit(desc); 2441 module_put(desc->gdev->owner); 2442 gpio_device_put(desc->gdev); 2443 } 2444 2445 /** 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. 2449 * 2450 * Returns: 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. 2454 * 2455 * Must not be called from atomic context. 2456 */ 2457 char *gpiochip_dup_line_label(struct gpio_chip *gc, unsigned int offset) 2458 { 2459 struct gpio_desc *desc; 2460 char *label; 2461 2462 desc = gpiochip_get_desc(gc, offset); 2463 if (IS_ERR(desc)) 2464 return NULL; 2465 2466 if (!test_bit(FLAG_REQUESTED, &desc->flags)) 2467 return NULL; 2468 2469 guard(srcu)(&desc->gdev->desc_srcu); 2470 2471 label = kstrdup(gpiod_get_label(desc), GFP_KERNEL); 2472 if (!label) 2473 return ERR_PTR(-ENOMEM); 2474 2475 return label; 2476 } 2477 EXPORT_SYMBOL_GPL(gpiochip_dup_line_label); 2478 2479 static inline const char *function_name_or_default(const char *con_id) 2480 { 2481 return con_id ?: "(default)"; 2482 } 2483 2484 /** 2485 * gpiochip_request_own_desc - Allow GPIO chip to request its own descriptor 2486 * @gc: GPIO chip 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 2494 * 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). 2500 * 2501 * Returns: 2502 * A pointer to the GPIO descriptor, or an ERR_PTR()-encoded negative error 2503 * code on failure. 2504 */ 2505 struct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *gc, 2506 unsigned int hwnum, 2507 const char *label, 2508 enum gpio_lookup_flags lflags, 2509 enum gpiod_flags dflags) 2510 { 2511 struct gpio_desc *desc = gpiochip_get_desc(gc, hwnum); 2512 const char *name = function_name_or_default(label); 2513 int ret; 2514 2515 if (IS_ERR(desc)) { 2516 chip_err(gc, "failed to get GPIO %s descriptor\n", name); 2517 return desc; 2518 } 2519 2520 ret = gpiod_request_commit(desc, label); 2521 if (ret < 0) 2522 return ERR_PTR(ret); 2523 2524 ret = gpiod_configure_flags(desc, label, lflags, dflags); 2525 if (ret) { 2526 gpiod_free_commit(desc); 2527 chip_err(gc, "setup of own GPIO %s failed\n", name); 2528 return ERR_PTR(ret); 2529 } 2530 2531 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_REQUESTED); 2532 2533 return desc; 2534 } 2535 EXPORT_SYMBOL_GPL(gpiochip_request_own_desc); 2536 2537 /** 2538 * gpiochip_free_own_desc - Free GPIO requested by the chip driver 2539 * @desc: GPIO descriptor to free 2540 * 2541 * Function frees the given GPIO requested previously with 2542 * gpiochip_request_own_desc(). 2543 */ 2544 void gpiochip_free_own_desc(struct gpio_desc *desc) 2545 { 2546 if (desc) 2547 gpiod_free_commit(desc); 2548 } 2549 EXPORT_SYMBOL_GPL(gpiochip_free_own_desc); 2550 2551 /* 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. 2554 * 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. 2559 */ 2560 2561 int gpio_do_set_config(struct gpio_desc *desc, unsigned long config) 2562 { 2563 int ret; 2564 2565 CLASS(gpio_chip_guard, guard)(desc); 2566 if (!guard.gc) 2567 return -ENODEV; 2568 2569 if (!guard.gc->set_config) 2570 return -ENOTSUPP; 2571 2572 ret = guard.gc->set_config(guard.gc, gpio_chip_hwgpio(desc), config); 2573 #ifdef CONFIG_GPIO_CDEV 2574 /* 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. 2577 */ 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)); 2581 #endif 2582 return ret; 2583 } 2584 2585 static int gpio_set_config_with_argument(struct gpio_desc *desc, 2586 enum pin_config_param mode, 2587 u32 argument) 2588 { 2589 unsigned long config; 2590 2591 config = pinconf_to_config_packed(mode, argument); 2592 return gpio_do_set_config(desc, config); 2593 } 2594 2595 static int gpio_set_config_with_argument_optional(struct gpio_desc *desc, 2596 enum pin_config_param mode, 2597 u32 argument) 2598 { 2599 struct device *dev = &desc->gdev->dev; 2600 int gpio = gpio_chip_hwgpio(desc); 2601 int ret; 2602 2603 ret = gpio_set_config_with_argument(desc, mode, argument); 2604 if (ret != -ENOTSUPP) 2605 return ret; 2606 2607 switch (mode) { 2608 case PIN_CONFIG_PERSIST_STATE: 2609 dev_dbg(dev, "Persistence not supported for GPIO %d\n", gpio); 2610 break; 2611 default: 2612 break; 2613 } 2614 2615 return 0; 2616 } 2617 2618 static int gpio_set_config(struct gpio_desc *desc, enum pin_config_param mode) 2619 { 2620 return gpio_set_config_with_argument(desc, mode, 0); 2621 } 2622 2623 static int gpio_set_bias(struct gpio_desc *desc) 2624 { 2625 enum pin_config_param bias; 2626 unsigned long flags; 2627 unsigned int arg; 2628 2629 flags = READ_ONCE(desc->flags); 2630 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; 2637 else 2638 return 0; 2639 2640 switch (bias) { 2641 case PIN_CONFIG_BIAS_PULL_DOWN: 2642 case PIN_CONFIG_BIAS_PULL_UP: 2643 arg = 1; 2644 break; 2645 2646 default: 2647 arg = 0; 2648 break; 2649 } 2650 2651 return gpio_set_config_with_argument_optional(desc, bias, arg); 2652 } 2653 2654 /** 2655 * gpio_set_debounce_timeout() - Set debounce timeout 2656 * @desc: GPIO descriptor to set the debounce timeout 2657 * @debounce: Debounce timeout in microseconds 2658 * 2659 * The function calls the certain GPIO driver to set debounce timeout 2660 * in the hardware. 2661 * 2662 * Returns: 2663 * 0 on success, or negative errno on failure. 2664 */ 2665 int gpio_set_debounce_timeout(struct gpio_desc *desc, unsigned int debounce) 2666 { 2667 int ret; 2668 2669 ret = gpio_set_config_with_argument_optional(desc, 2670 PIN_CONFIG_INPUT_DEBOUNCE, 2671 debounce); 2672 if (!ret) 2673 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_CONFIG); 2674 2675 return ret; 2676 } 2677 2678 /** 2679 * gpiod_direction_input - set the GPIO direction to input 2680 * @desc: GPIO to set to input 2681 * 2682 * Set the direction of the passed GPIO to input, such as gpiod_get_value() can 2683 * be called safely on it. 2684 * 2685 * Returns: 2686 * 0 on success, or negative errno on failure. 2687 */ 2688 int gpiod_direction_input(struct gpio_desc *desc) 2689 { 2690 int ret; 2691 2692 VALIDATE_DESC(desc); 2693 2694 ret = gpiod_direction_input_nonotify(desc); 2695 if (ret == 0) 2696 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_CONFIG); 2697 2698 return ret; 2699 } 2700 EXPORT_SYMBOL_GPL(gpiod_direction_input); 2701 2702 int gpiod_direction_input_nonotify(struct gpio_desc *desc) 2703 { 2704 int ret = 0; 2705 2706 CLASS(gpio_chip_guard, guard)(desc); 2707 if (!guard.gc) 2708 return -ENODEV; 2709 2710 /* 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. 2714 */ 2715 if (!guard.gc->get && guard.gc->direction_input) { 2716 gpiod_warn(desc, 2717 "%s: missing get() but have direction_input()\n", 2718 __func__); 2719 return -EIO; 2720 } 2721 2722 /* 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. 2727 */ 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)) { 2734 gpiod_warn(desc, 2735 "%s: missing direction_input() operation and line is output\n", 2736 __func__); 2737 return -EIO; 2738 } 2739 if (ret == 0) { 2740 clear_bit(FLAG_IS_OUT, &desc->flags); 2741 ret = gpio_set_bias(desc); 2742 } 2743 2744 trace_gpio_direction(desc_to_gpio(desc), 1, ret); 2745 2746 return ret; 2747 } 2748 2749 static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int value) 2750 { 2751 int val = !!value, ret = 0; 2752 2753 CLASS(gpio_chip_guard, guard)(desc); 2754 if (!guard.gc) 2755 return -ENODEV; 2756 2757 /* 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. 2761 */ 2762 if (!guard.gc->set && !guard.gc->direction_output) { 2763 gpiod_warn(desc, 2764 "%s: missing set() and direction_output() operations\n", 2765 __func__); 2766 return -EIO; 2767 } 2768 2769 if (guard.gc->direction_output) { 2770 ret = guard.gc->direction_output(guard.gc, 2771 gpio_chip_hwgpio(desc), val); 2772 } else { 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))) { 2776 gpiod_warn(desc, 2777 "%s: missing direction_output() operation\n", 2778 __func__); 2779 return -EIO; 2780 } 2781 /* 2782 * If we can't actively set the direction, we are some 2783 * output-only chip, so just drive the output as desired. 2784 */ 2785 guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), val); 2786 } 2787 2788 if (!ret) 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); 2792 return ret; 2793 } 2794 2795 /** 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 2799 * 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. 2803 * 2804 * Returns: 2805 * 0 on success, or negative errno on failure. 2806 */ 2807 int gpiod_direction_output_raw(struct gpio_desc *desc, int value) 2808 { 2809 int ret; 2810 2811 VALIDATE_DESC(desc); 2812 2813 ret = gpiod_direction_output_raw_commit(desc, value); 2814 if (ret == 0) 2815 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_CONFIG); 2816 2817 return ret; 2818 } 2819 EXPORT_SYMBOL_GPL(gpiod_direction_output_raw); 2820 2821 /** 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 2825 * 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 2829 * account. 2830 * 2831 * Returns: 2832 * 0 on success, or negative errno on failure. 2833 */ 2834 int gpiod_direction_output(struct gpio_desc *desc, int value) 2835 { 2836 int ret; 2837 2838 VALIDATE_DESC(desc); 2839 2840 ret = gpiod_direction_output_nonotify(desc, value); 2841 if (ret == 0) 2842 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_CONFIG); 2843 2844 return ret; 2845 } 2846 EXPORT_SYMBOL_GPL(gpiod_direction_output); 2847 2848 int gpiod_direction_output_nonotify(struct gpio_desc *desc, int value) 2849 { 2850 unsigned long flags; 2851 int ret; 2852 2853 flags = READ_ONCE(desc->flags); 2854 2855 if (test_bit(FLAG_ACTIVE_LOW, &flags)) 2856 value = !value; 2857 else 2858 value = !!value; 2859 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)) { 2863 gpiod_err(desc, 2864 "%s: tried to set a GPIO tied to an IRQ as output\n", 2865 __func__); 2866 return -EIO; 2867 } 2868 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); 2872 if (!ret) 2873 goto set_output_value; 2874 /* Emulate open drain by not actively driving the line high */ 2875 if (value) { 2876 ret = gpiod_direction_input_nonotify(desc); 2877 goto set_output_flag; 2878 } 2879 } else if (test_bit(FLAG_OPEN_SOURCE, &flags)) { 2880 ret = gpio_set_config(desc, PIN_CONFIG_DRIVE_OPEN_SOURCE); 2881 if (!ret) 2882 goto set_output_value; 2883 /* Emulate open source by not actively driving the line low */ 2884 if (!value) { 2885 ret = gpiod_direction_input_nonotify(desc); 2886 goto set_output_flag; 2887 } 2888 } else { 2889 gpio_set_config(desc, PIN_CONFIG_DRIVE_PUSH_PULL); 2890 } 2891 2892 set_output_value: 2893 ret = gpio_set_bias(desc); 2894 if (ret) 2895 return ret; 2896 return gpiod_direction_output_raw_commit(desc, value); 2897 2898 set_output_flag: 2899 /* 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 2903 * value anymore. 2904 */ 2905 if (ret == 0) 2906 set_bit(FLAG_IS_OUT, &desc->flags); 2907 return ret; 2908 } 2909 2910 /** 2911 * gpiod_enable_hw_timestamp_ns - Enable hardware timestamp in nanoseconds. 2912 * 2913 * @desc: GPIO to enable. 2914 * @flags: Flags related to GPIO edge. 2915 * 2916 * Returns: 2917 * 0 on success, or negative errno on failure. 2918 */ 2919 int gpiod_enable_hw_timestamp_ns(struct gpio_desc *desc, unsigned long flags) 2920 { 2921 int ret = 0; 2922 2923 VALIDATE_DESC(desc); 2924 2925 CLASS(gpio_chip_guard, guard)(desc); 2926 if (!guard.gc) 2927 return -ENODEV; 2928 2929 if (!guard.gc->en_hw_timestamp) { 2930 gpiod_warn(desc, "%s: hw ts not supported\n", __func__); 2931 return -ENOTSUPP; 2932 } 2933 2934 ret = guard.gc->en_hw_timestamp(guard.gc, 2935 gpio_chip_hwgpio(desc), flags); 2936 if (ret) 2937 gpiod_warn(desc, "%s: hw ts request failed\n", __func__); 2938 2939 return ret; 2940 } 2941 EXPORT_SYMBOL_GPL(gpiod_enable_hw_timestamp_ns); 2942 2943 /** 2944 * gpiod_disable_hw_timestamp_ns - Disable hardware timestamp. 2945 * 2946 * @desc: GPIO to disable. 2947 * @flags: Flags related to GPIO edge, same value as used during enable call. 2948 * 2949 * Returns: 2950 * 0 on success, or negative errno on failure. 2951 */ 2952 int gpiod_disable_hw_timestamp_ns(struct gpio_desc *desc, unsigned long flags) 2953 { 2954 int ret = 0; 2955 2956 VALIDATE_DESC(desc); 2957 2958 CLASS(gpio_chip_guard, guard)(desc); 2959 if (!guard.gc) 2960 return -ENODEV; 2961 2962 if (!guard.gc->dis_hw_timestamp) { 2963 gpiod_warn(desc, "%s: hw ts not supported\n", __func__); 2964 return -ENOTSUPP; 2965 } 2966 2967 ret = guard.gc->dis_hw_timestamp(guard.gc, gpio_chip_hwgpio(desc), 2968 flags); 2969 if (ret) 2970 gpiod_warn(desc, "%s: hw ts release failed\n", __func__); 2971 2972 return ret; 2973 } 2974 EXPORT_SYMBOL_GPL(gpiod_disable_hw_timestamp_ns); 2975 2976 /** 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 2980 * 2981 * Returns: 2982 * 0 on success, %-ENOTSUPP if the controller doesn't support setting the 2983 * configuration. 2984 */ 2985 int gpiod_set_config(struct gpio_desc *desc, unsigned long config) 2986 { 2987 int ret; 2988 2989 VALIDATE_DESC(desc); 2990 2991 ret = gpio_do_set_config(desc, config); 2992 if (!ret) { 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); 3004 break; 3005 default: 3006 break; 3007 } 3008 } 3009 3010 return ret; 3011 } 3012 EXPORT_SYMBOL_GPL(gpiod_set_config); 3013 3014 /** 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 3018 * 3019 * Returns: 3020 * 0 on success, %-ENOTSUPP if the controller doesn't support setting the 3021 * debounce time. 3022 */ 3023 int gpiod_set_debounce(struct gpio_desc *desc, unsigned int debounce) 3024 { 3025 unsigned long config; 3026 3027 config = pinconf_to_config_packed(PIN_CONFIG_INPUT_DEBOUNCE, debounce); 3028 return gpiod_set_config(desc, config); 3029 } 3030 EXPORT_SYMBOL_GPL(gpiod_set_debounce); 3031 3032 /** 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 3036 * 3037 * Returns: 3038 * 0 on success, otherwise a negative error code. 3039 */ 3040 int gpiod_set_transitory(struct gpio_desc *desc, bool transitory) 3041 { 3042 VALIDATE_DESC(desc); 3043 /* 3044 * Handle FLAG_TRANSITORY first, enabling queries to gpiolib for 3045 * persistence state. 3046 */ 3047 assign_bit(FLAG_TRANSITORY, &desc->flags, transitory); 3048 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, 3052 !transitory); 3053 } 3054 3055 /** 3056 * gpiod_is_active_low - test whether a GPIO is active-low or not 3057 * @desc: the gpio descriptor to test 3058 * 3059 * Returns: 3060 * 1 if the GPIO is active-low, 0 otherwise. 3061 */ 3062 int gpiod_is_active_low(const struct gpio_desc *desc) 3063 { 3064 VALIDATE_DESC(desc); 3065 return test_bit(FLAG_ACTIVE_LOW, &desc->flags); 3066 } 3067 EXPORT_SYMBOL_GPL(gpiod_is_active_low); 3068 3069 /** 3070 * gpiod_toggle_active_low - toggle whether a GPIO is active-low or not 3071 * @desc: the gpio descriptor to change 3072 */ 3073 void gpiod_toggle_active_low(struct gpio_desc *desc) 3074 { 3075 VALIDATE_DESC_VOID(desc); 3076 change_bit(FLAG_ACTIVE_LOW, &desc->flags); 3077 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_CONFIG); 3078 } 3079 EXPORT_SYMBOL_GPL(gpiod_toggle_active_low); 3080 3081 static int gpio_chip_get_value(struct gpio_chip *gc, const struct gpio_desc *desc) 3082 { 3083 return gc->get ? gc->get(gc, gpio_chip_hwgpio(desc)) : -EIO; 3084 } 3085 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. 3088 * 3089 * "Get" operations are often inlinable as reading a pin value register, 3090 * and masking the relevant bit in that register. 3091 * 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. 3095 * 3096 *------------------------------------------------------------------------ 3097 * 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. 3103 * 3104 * REVISIT when debugging, consider adding some instrumentation to ensure 3105 * that the GPIO was actually requested. 3106 */ 3107 3108 static int gpiod_get_raw_value_commit(const struct gpio_desc *desc) 3109 { 3110 struct gpio_device *gdev; 3111 struct gpio_chip *gc; 3112 int value; 3113 3114 /* FIXME Unable to use gpio_chip_guard due to const desc. */ 3115 gdev = desc->gdev; 3116 3117 guard(srcu)(&gdev->srcu); 3118 3119 gc = srcu_dereference(gdev->chip, &gdev->srcu); 3120 if (!gc) 3121 return -ENODEV; 3122 3123 value = gpio_chip_get_value(gc, desc); 3124 value = value < 0 ? value : !!value; 3125 trace_gpio_value(desc_to_gpio(desc), 1, value); 3126 return value; 3127 } 3128 3129 static int gpio_chip_get_multiple(struct gpio_chip *gc, 3130 unsigned long *mask, unsigned long *bits) 3131 { 3132 if (gc->get_multiple) 3133 return gc->get_multiple(gc, mask, bits); 3134 if (gc->get) { 3135 int i, value; 3136 3137 for_each_set_bit(i, mask, gc->ngpio) { 3138 value = gc->get(gc, i); 3139 if (value < 0) 3140 return value; 3141 __assign_bit(i, bits, value); 3142 } 3143 return 0; 3144 } 3145 return -EIO; 3146 } 3147 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) 3150 { 3151 guard(srcu)(&gdev->srcu); 3152 3153 return gc == srcu_dereference(gdev->chip, &gdev->srcu); 3154 } 3155 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) 3161 { 3162 int ret, i = 0; 3163 3164 /* 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. 3168 */ 3169 if (array_info && array_info->desc == desc_array && 3170 array_size <= array_info->size && 3171 (void *)array_info == desc_array + array_info->size) { 3172 if (!can_sleep) 3173 WARN_ON(array_info->chip->can_sleep); 3174 3175 ret = gpio_chip_get_multiple(array_info->chip, 3176 array_info->get_mask, 3177 value_bitmap); 3178 if (ret) 3179 return ret; 3180 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); 3184 3185 i = find_first_zero_bit(array_info->get_mask, array_size); 3186 if (i == array_size) 3187 return 0; 3188 } else { 3189 array_info = NULL; 3190 } 3191 3192 while (i < array_size) { 3193 DECLARE_BITMAP(fastpath_mask, FASTPATH_NGPIO); 3194 DECLARE_BITMAP(fastpath_bits, FASTPATH_NGPIO); 3195 unsigned long *mask, *bits; 3196 int first, j; 3197 3198 CLASS(gpio_chip_guard, guard)(desc_array[i]); 3199 if (!guard.gc) 3200 return -ENODEV; 3201 3202 if (likely(guard.gc->ngpio <= FASTPATH_NGPIO)) { 3203 mask = fastpath_mask; 3204 bits = fastpath_bits; 3205 } else { 3206 gfp_t flags = can_sleep ? GFP_KERNEL : GFP_ATOMIC; 3207 3208 mask = bitmap_alloc(guard.gc->ngpio, flags); 3209 if (!mask) 3210 return -ENOMEM; 3211 3212 bits = bitmap_alloc(guard.gc->ngpio, flags); 3213 if (!bits) { 3214 bitmap_free(mask); 3215 return -ENOMEM; 3216 } 3217 } 3218 3219 bitmap_zero(mask, guard.gc->ngpio); 3220 3221 if (!can_sleep) 3222 WARN_ON(guard.gc->can_sleep); 3223 3224 /* collect all inputs belonging to the same chip */ 3225 first = i; 3226 do { 3227 const struct gpio_desc *desc = desc_array[i]; 3228 int hwgpio = gpio_chip_hwgpio(desc); 3229 3230 __set_bit(hwgpio, mask); 3231 i++; 3232 3233 if (array_info) 3234 i = find_next_zero_bit(array_info->get_mask, 3235 array_size, i); 3236 } while ((i < array_size) && 3237 gpio_device_chip_cmp(desc_array[i]->gdev, guard.gc)); 3238 3239 ret = gpio_chip_get_multiple(guard.gc, mask, bits); 3240 if (ret) { 3241 if (mask != fastpath_mask) 3242 bitmap_free(mask); 3243 if (bits != fastpath_bits) 3244 bitmap_free(bits); 3245 return ret; 3246 } 3247 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); 3252 3253 if (!raw && test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 3254 value = !value; 3255 __assign_bit(j, value_bitmap, value); 3256 trace_gpio_value(desc_to_gpio(desc), 1, value); 3257 j++; 3258 3259 if (array_info) 3260 j = find_next_zero_bit(array_info->get_mask, i, 3261 j); 3262 } 3263 3264 if (mask != fastpath_mask) 3265 bitmap_free(mask); 3266 if (bits != fastpath_bits) 3267 bitmap_free(bits); 3268 } 3269 return 0; 3270 } 3271 3272 /** 3273 * gpiod_get_raw_value() - return a gpio's raw value 3274 * @desc: gpio whose value will be returned 3275 * 3276 * Returns: 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. 3279 * 3280 * This function can be called from contexts where we cannot sleep, and will 3281 * complain if the GPIO chip functions potentially sleep. 3282 */ 3283 int gpiod_get_raw_value(const struct gpio_desc *desc) 3284 { 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); 3289 } 3290 EXPORT_SYMBOL_GPL(gpiod_get_raw_value); 3291 3292 /** 3293 * gpiod_get_value() - return a gpio's value 3294 * @desc: gpio whose value will be returned 3295 * 3296 * Returns: 3297 * The GPIO's logical value, i.e. taking the ACTIVE_LOW status into 3298 * account, or negative errno on failure. 3299 * 3300 * This function can be called from contexts where we cannot sleep, and will 3301 * complain if the GPIO chip functions potentially sleep. 3302 */ 3303 int gpiod_get_value(const struct gpio_desc *desc) 3304 { 3305 int value; 3306 3307 VALIDATE_DESC(desc); 3308 /* Should be using gpiod_get_value_cansleep() */ 3309 WARN_ON(desc->gdev->can_sleep); 3310 3311 value = gpiod_get_raw_value_commit(desc); 3312 if (value < 0) 3313 return value; 3314 3315 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 3316 value = !value; 3317 3318 return value; 3319 } 3320 EXPORT_SYMBOL_GPL(gpiod_get_value); 3321 3322 /** 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 3328 * 3329 * Read the raw values of the GPIOs, i.e. the values of the physical lines 3330 * without regard for their ACTIVE_LOW status. 3331 * 3332 * This function can be called from contexts where we cannot sleep, 3333 * and it will complain if the GPIO chip functions potentially sleep. 3334 * 3335 * Returns: 3336 * 0 on success, or negative errno on failure. 3337 */ 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) 3342 { 3343 if (!desc_array) 3344 return -EINVAL; 3345 return gpiod_get_array_value_complex(true, false, array_size, 3346 desc_array, array_info, 3347 value_bitmap); 3348 } 3349 EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value); 3350 3351 /** 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 3357 * 3358 * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status 3359 * into account. 3360 * 3361 * This function can be called from contexts where we cannot sleep, 3362 * and it will complain if the GPIO chip functions potentially sleep. 3363 * 3364 * Returns: 3365 * 0 on success, or negative errno on failure. 3366 */ 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) 3371 { 3372 if (!desc_array) 3373 return -EINVAL; 3374 return gpiod_get_array_value_complex(false, false, array_size, 3375 desc_array, array_info, 3376 value_bitmap); 3377 } 3378 EXPORT_SYMBOL_GPL(gpiod_get_array_value); 3379 3380 /* 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. 3384 */ 3385 static void gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool value) 3386 { 3387 int ret = 0, offset = gpio_chip_hwgpio(desc); 3388 3389 CLASS(gpio_chip_guard, guard)(desc); 3390 if (!guard.gc) 3391 return; 3392 3393 if (value) { 3394 ret = guard.gc->direction_input(guard.gc, offset); 3395 } else { 3396 ret = guard.gc->direction_output(guard.gc, offset, 0); 3397 if (!ret) 3398 set_bit(FLAG_IS_OUT, &desc->flags); 3399 } 3400 trace_gpio_direction(desc_to_gpio(desc), value, ret); 3401 if (ret < 0) 3402 gpiod_err(desc, 3403 "%s: Error in set_value for open drain err %d\n", 3404 __func__, ret); 3405 } 3406 3407 /* 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. 3411 */ 3412 static void gpio_set_open_source_value_commit(struct gpio_desc *desc, bool value) 3413 { 3414 int ret = 0, offset = gpio_chip_hwgpio(desc); 3415 3416 CLASS(gpio_chip_guard, guard)(desc); 3417 if (!guard.gc) 3418 return; 3419 3420 if (value) { 3421 ret = guard.gc->direction_output(guard.gc, offset, 1); 3422 if (!ret) 3423 set_bit(FLAG_IS_OUT, &desc->flags); 3424 } else { 3425 ret = guard.gc->direction_input(guard.gc, offset); 3426 } 3427 trace_gpio_direction(desc_to_gpio(desc), !value, ret); 3428 if (ret < 0) 3429 gpiod_err(desc, 3430 "%s: Error in set_value for open source err %d\n", 3431 __func__, ret); 3432 } 3433 3434 static void gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value) 3435 { 3436 CLASS(gpio_chip_guard, guard)(desc); 3437 if (!guard.gc) 3438 return; 3439 3440 trace_gpio_value(desc_to_gpio(desc), 0, value); 3441 guard.gc->set(guard.gc, gpio_chip_hwgpio(desc), value); 3442 } 3443 3444 /* 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 3453 */ 3454 static void gpio_chip_set_multiple(struct gpio_chip *gc, 3455 unsigned long *mask, unsigned long *bits) 3456 { 3457 if (gc->set_multiple) { 3458 gc->set_multiple(gc, mask, bits); 3459 } else { 3460 unsigned int i; 3461 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)); 3465 } 3466 } 3467 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) 3473 { 3474 int i = 0; 3475 3476 /* 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. 3480 */ 3481 if (array_info && array_info->desc == desc_array && 3482 array_size <= array_info->size && 3483 (void *)array_info == desc_array + array_info->size) { 3484 if (!can_sleep) 3485 WARN_ON(array_info->chip->can_sleep); 3486 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); 3490 3491 gpio_chip_set_multiple(array_info->chip, array_info->set_mask, 3492 value_bitmap); 3493 3494 i = find_first_zero_bit(array_info->set_mask, array_size); 3495 if (i == array_size) 3496 return 0; 3497 } else { 3498 array_info = NULL; 3499 } 3500 3501 while (i < array_size) { 3502 DECLARE_BITMAP(fastpath_mask, FASTPATH_NGPIO); 3503 DECLARE_BITMAP(fastpath_bits, FASTPATH_NGPIO); 3504 unsigned long *mask, *bits; 3505 int count = 0; 3506 3507 CLASS(gpio_chip_guard, guard)(desc_array[i]); 3508 if (!guard.gc) 3509 return -ENODEV; 3510 3511 if (likely(guard.gc->ngpio <= FASTPATH_NGPIO)) { 3512 mask = fastpath_mask; 3513 bits = fastpath_bits; 3514 } else { 3515 gfp_t flags = can_sleep ? GFP_KERNEL : GFP_ATOMIC; 3516 3517 mask = bitmap_alloc(guard.gc->ngpio, flags); 3518 if (!mask) 3519 return -ENOMEM; 3520 3521 bits = bitmap_alloc(guard.gc->ngpio, flags); 3522 if (!bits) { 3523 bitmap_free(mask); 3524 return -ENOMEM; 3525 } 3526 } 3527 3528 bitmap_zero(mask, guard.gc->ngpio); 3529 3530 if (!can_sleep) 3531 WARN_ON(guard.gc->can_sleep); 3532 3533 do { 3534 struct gpio_desc *desc = desc_array[i]; 3535 int hwgpio = gpio_chip_hwgpio(desc); 3536 int value = test_bit(i, value_bitmap); 3537 3538 /* 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. 3542 */ 3543 if (!raw && !(array_info && 3544 test_bit(i, array_info->invert_mask)) && 3545 test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 3546 value = !value; 3547 trace_gpio_value(desc_to_gpio(desc), 0, value); 3548 /* 3549 * collect all normal outputs belonging to the same chip 3550 * open drain and open source outputs are set individually 3551 */ 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); 3556 } else { 3557 __set_bit(hwgpio, mask); 3558 __assign_bit(hwgpio, bits, value); 3559 count++; 3560 } 3561 i++; 3562 3563 if (array_info) 3564 i = find_next_zero_bit(array_info->set_mask, 3565 array_size, i); 3566 } while ((i < array_size) && 3567 gpio_device_chip_cmp(desc_array[i]->gdev, guard.gc)); 3568 /* push collected bits to outputs */ 3569 if (count != 0) 3570 gpio_chip_set_multiple(guard.gc, mask, bits); 3571 3572 if (mask != fastpath_mask) 3573 bitmap_free(mask); 3574 if (bits != fastpath_bits) 3575 bitmap_free(bits); 3576 } 3577 return 0; 3578 } 3579 3580 /** 3581 * gpiod_set_raw_value() - assign a gpio's raw value 3582 * @desc: gpio whose value will be assigned 3583 * @value: value to assign 3584 * 3585 * Set the raw value of the GPIO, i.e. the value of its physical line without 3586 * regard for its ACTIVE_LOW status. 3587 * 3588 * This function can be called from contexts where we cannot sleep, and will 3589 * complain if the GPIO chip functions potentially sleep. 3590 */ 3591 void gpiod_set_raw_value(struct gpio_desc *desc, int value) 3592 { 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); 3597 } 3598 EXPORT_SYMBOL_GPL(gpiod_set_raw_value); 3599 3600 /** 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 3604 * 3605 * This sets the value of a GPIO line backing a descriptor, applying 3606 * different semantic quirks like active low and open drain/source 3607 * handling. 3608 */ 3609 static void gpiod_set_value_nocheck(struct gpio_desc *desc, int value) 3610 { 3611 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 3612 value = !value; 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); 3617 else 3618 gpiod_set_raw_value_commit(desc, value); 3619 } 3620 3621 /** 3622 * gpiod_set_value() - assign a gpio's value 3623 * @desc: gpio whose value will be assigned 3624 * @value: value to assign 3625 * 3626 * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW, 3627 * OPEN_DRAIN and OPEN_SOURCE flags into account. 3628 * 3629 * This function can be called from contexts where we cannot sleep, and will 3630 * complain if the GPIO chip functions potentially sleep. 3631 */ 3632 void gpiod_set_value(struct gpio_desc *desc, int value) 3633 { 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); 3638 } 3639 EXPORT_SYMBOL_GPL(gpiod_set_value); 3640 3641 /** 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 3647 * 3648 * Set the raw values of the GPIOs, i.e. the values of the physical lines 3649 * without regard for their ACTIVE_LOW status. 3650 * 3651 * This function can be called from contexts where we cannot sleep, and will 3652 * complain if the GPIO chip functions potentially sleep. 3653 * 3654 * Returns: 3655 * 0 on success, or negative errno on failure. 3656 */ 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) 3661 { 3662 if (!desc_array) 3663 return -EINVAL; 3664 return gpiod_set_array_value_complex(true, false, array_size, 3665 desc_array, array_info, value_bitmap); 3666 } 3667 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value); 3668 3669 /** 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 3675 * 3676 * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status 3677 * into account. 3678 * 3679 * This function can be called from contexts where we cannot sleep, and will 3680 * complain if the GPIO chip functions potentially sleep. 3681 * 3682 * Returns: 3683 * 0 on success, or negative errno on failure. 3684 */ 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) 3689 { 3690 if (!desc_array) 3691 return -EINVAL; 3692 return gpiod_set_array_value_complex(false, false, array_size, 3693 desc_array, array_info, 3694 value_bitmap); 3695 } 3696 EXPORT_SYMBOL_GPL(gpiod_set_array_value); 3697 3698 /** 3699 * gpiod_cansleep() - report whether gpio value access may sleep 3700 * @desc: gpio to check 3701 * 3702 * Returns: 3703 * 0 for non-sleepable, 1 for sleepable, or an error code in case of error. 3704 */ 3705 int gpiod_cansleep(const struct gpio_desc *desc) 3706 { 3707 VALIDATE_DESC(desc); 3708 return desc->gdev->can_sleep; 3709 } 3710 EXPORT_SYMBOL_GPL(gpiod_cansleep); 3711 3712 /** 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 3716 * 3717 * Returns: 3718 * 0 on success, or negative errno on failure. 3719 */ 3720 int gpiod_set_consumer_name(struct gpio_desc *desc, const char *name) 3721 { 3722 int ret; 3723 3724 VALIDATE_DESC(desc); 3725 3726 ret = desc_set_label(desc, name); 3727 if (ret == 0) 3728 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_CONFIG); 3729 3730 return ret; 3731 } 3732 EXPORT_SYMBOL_GPL(gpiod_set_consumer_name); 3733 3734 /** 3735 * gpiod_to_irq() - return the IRQ corresponding to a GPIO 3736 * @desc: gpio whose IRQ will be returned (already requested) 3737 * 3738 * Returns: 3739 * The IRQ corresponding to the passed GPIO, or an error code in case of error. 3740 */ 3741 int gpiod_to_irq(const struct gpio_desc *desc) 3742 { 3743 struct gpio_device *gdev; 3744 struct gpio_chip *gc; 3745 int offset; 3746 3747 /* 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. 3751 */ 3752 if (IS_ERR_OR_NULL(desc)) 3753 return -EINVAL; 3754 3755 gdev = desc->gdev; 3756 /* FIXME Cannot use gpio_chip_guard due to const desc. */ 3757 guard(srcu)(&gdev->srcu); 3758 gc = srcu_dereference(gdev->chip, &gdev->srcu); 3759 if (!gc) 3760 return -ENODEV; 3761 3762 offset = gpio_chip_hwgpio(desc); 3763 if (gc->to_irq) { 3764 int retirq = gc->to_irq(gc, offset); 3765 3766 /* Zero means NO_IRQ */ 3767 if (!retirq) 3768 return -ENXIO; 3769 3770 return retirq; 3771 } 3772 #ifdef CONFIG_GPIOLIB_IRQCHIP 3773 if (gc->irq.chip) { 3774 /* 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. 3778 */ 3779 return -EPROBE_DEFER; 3780 } 3781 #endif 3782 return -ENXIO; 3783 } 3784 EXPORT_SYMBOL_GPL(gpiod_to_irq); 3785 3786 /** 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 3790 * 3791 * This is used directly by GPIO drivers that want to lock down 3792 * a certain GPIO line to be used for IRQs. 3793 * 3794 * Returns: 3795 * 0 on success, or negative errno on failure. 3796 */ 3797 int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) 3798 { 3799 struct gpio_desc *desc; 3800 3801 desc = gpiochip_get_desc(gc, offset); 3802 if (IS_ERR(desc)) 3803 return PTR_ERR(desc); 3804 3805 /* 3806 * If it's fast: flush the direction setting if something changed 3807 * behind our back 3808 */ 3809 if (!gc->can_sleep && gc->get_direction) { 3810 int dir = gpiod_get_direction(desc); 3811 3812 if (dir < 0) { 3813 chip_err(gc, "%s: cannot get GPIO direction\n", 3814 __func__); 3815 return dir; 3816 } 3817 } 3818 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)) { 3822 chip_err(gc, 3823 "%s: tried to flag a GPIO set as output for IRQ\n", 3824 __func__); 3825 return -EIO; 3826 } 3827 3828 set_bit(FLAG_USED_AS_IRQ, &desc->flags); 3829 set_bit(FLAG_IRQ_IS_ENABLED, &desc->flags); 3830 3831 return 0; 3832 } 3833 EXPORT_SYMBOL_GPL(gpiochip_lock_as_irq); 3834 3835 /** 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 3839 * 3840 * This is used directly by GPIO drivers that want to indicate 3841 * that a certain GPIO is no longer used exclusively for IRQ. 3842 */ 3843 void gpiochip_unlock_as_irq(struct gpio_chip *gc, unsigned int offset) 3844 { 3845 struct gpio_desc *desc; 3846 3847 desc = gpiochip_get_desc(gc, offset); 3848 if (IS_ERR(desc)) 3849 return; 3850 3851 clear_bit(FLAG_USED_AS_IRQ, &desc->flags); 3852 clear_bit(FLAG_IRQ_IS_ENABLED, &desc->flags); 3853 } 3854 EXPORT_SYMBOL_GPL(gpiochip_unlock_as_irq); 3855 3856 void gpiochip_disable_irq(struct gpio_chip *gc, unsigned int offset) 3857 { 3858 struct gpio_desc *desc = gpiochip_get_desc(gc, offset); 3859 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); 3863 } 3864 EXPORT_SYMBOL_GPL(gpiochip_disable_irq); 3865 3866 void gpiochip_enable_irq(struct gpio_chip *gc, unsigned int offset) 3867 { 3868 struct gpio_desc *desc = gpiochip_get_desc(gc, offset); 3869 3870 if (!IS_ERR(desc) && 3871 !WARN_ON(!test_bit(FLAG_USED_AS_IRQ, &desc->flags))) { 3872 /* 3873 * We must not be output when using IRQ UNLESS we are 3874 * open drain. 3875 */ 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); 3879 } 3880 } 3881 EXPORT_SYMBOL_GPL(gpiochip_enable_irq); 3882 3883 bool gpiochip_line_is_irq(struct gpio_chip *gc, unsigned int offset) 3884 { 3885 if (offset >= gc->ngpio) 3886 return false; 3887 3888 return test_bit(FLAG_USED_AS_IRQ, &gc->gpiodev->descs[offset].flags); 3889 } 3890 EXPORT_SYMBOL_GPL(gpiochip_line_is_irq); 3891 3892 int gpiochip_reqres_irq(struct gpio_chip *gc, unsigned int offset) 3893 { 3894 int ret; 3895 3896 if (!try_module_get(gc->gpiodev->owner)) 3897 return -ENODEV; 3898 3899 ret = gpiochip_lock_as_irq(gc, offset); 3900 if (ret) { 3901 chip_err(gc, "unable to lock HW IRQ %u for IRQ\n", offset); 3902 module_put(gc->gpiodev->owner); 3903 return ret; 3904 } 3905 return 0; 3906 } 3907 EXPORT_SYMBOL_GPL(gpiochip_reqres_irq); 3908 3909 void gpiochip_relres_irq(struct gpio_chip *gc, unsigned int offset) 3910 { 3911 gpiochip_unlock_as_irq(gc, offset); 3912 module_put(gc->gpiodev->owner); 3913 } 3914 EXPORT_SYMBOL_GPL(gpiochip_relres_irq); 3915 3916 bool gpiochip_line_is_open_drain(struct gpio_chip *gc, unsigned int offset) 3917 { 3918 if (offset >= gc->ngpio) 3919 return false; 3920 3921 return test_bit(FLAG_OPEN_DRAIN, &gc->gpiodev->descs[offset].flags); 3922 } 3923 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_drain); 3924 3925 bool gpiochip_line_is_open_source(struct gpio_chip *gc, unsigned int offset) 3926 { 3927 if (offset >= gc->ngpio) 3928 return false; 3929 3930 return test_bit(FLAG_OPEN_SOURCE, &gc->gpiodev->descs[offset].flags); 3931 } 3932 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_source); 3933 3934 bool gpiochip_line_is_persistent(struct gpio_chip *gc, unsigned int offset) 3935 { 3936 if (offset >= gc->ngpio) 3937 return false; 3938 3939 return !test_bit(FLAG_TRANSITORY, &gc->gpiodev->descs[offset].flags); 3940 } 3941 EXPORT_SYMBOL_GPL(gpiochip_line_is_persistent); 3942 3943 /** 3944 * gpiod_get_raw_value_cansleep() - return a gpio's raw value 3945 * @desc: gpio whose value will be returned 3946 * 3947 * Returns: 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. 3950 * 3951 * This function is to be called from contexts that can sleep. 3952 */ 3953 int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc) 3954 { 3955 might_sleep(); 3956 VALIDATE_DESC(desc); 3957 return gpiod_get_raw_value_commit(desc); 3958 } 3959 EXPORT_SYMBOL_GPL(gpiod_get_raw_value_cansleep); 3960 3961 /** 3962 * gpiod_get_value_cansleep() - return a gpio's value 3963 * @desc: gpio whose value will be returned 3964 * 3965 * Returns: 3966 * The GPIO's logical value, i.e. taking the ACTIVE_LOW status into 3967 * account, or negative errno on failure. 3968 * 3969 * This function is to be called from contexts that can sleep. 3970 */ 3971 int gpiod_get_value_cansleep(const struct gpio_desc *desc) 3972 { 3973 int value; 3974 3975 might_sleep(); 3976 VALIDATE_DESC(desc); 3977 value = gpiod_get_raw_value_commit(desc); 3978 if (value < 0) 3979 return value; 3980 3981 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 3982 value = !value; 3983 3984 return value; 3985 } 3986 EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep); 3987 3988 /** 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 3994 * 3995 * Read the raw values of the GPIOs, i.e. the values of the physical lines 3996 * without regard for their ACTIVE_LOW status. 3997 * 3998 * This function is to be called from contexts that can sleep. 3999 * 4000 * Returns: 4001 * 0 on success, or negative errno on failure. 4002 */ 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) 4007 { 4008 might_sleep(); 4009 if (!desc_array) 4010 return -EINVAL; 4011 return gpiod_get_array_value_complex(true, true, array_size, 4012 desc_array, array_info, 4013 value_bitmap); 4014 } 4015 EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value_cansleep); 4016 4017 /** 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 4023 * 4024 * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status 4025 * into account. 4026 * 4027 * This function is to be called from contexts that can sleep. 4028 * 4029 * Returns: 4030 * 0 on success, or negative errno on failure. 4031 */ 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) 4036 { 4037 might_sleep(); 4038 if (!desc_array) 4039 return -EINVAL; 4040 return gpiod_get_array_value_complex(false, true, array_size, 4041 desc_array, array_info, 4042 value_bitmap); 4043 } 4044 EXPORT_SYMBOL_GPL(gpiod_get_array_value_cansleep); 4045 4046 /** 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 4050 * 4051 * Set the raw value of the GPIO, i.e. the value of its physical line without 4052 * regard for its ACTIVE_LOW status. 4053 * 4054 * This function is to be called from contexts that can sleep. 4055 */ 4056 void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value) 4057 { 4058 might_sleep(); 4059 VALIDATE_DESC_VOID(desc); 4060 gpiod_set_raw_value_commit(desc, value); 4061 } 4062 EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep); 4063 4064 /** 4065 * gpiod_set_value_cansleep() - assign a gpio's value 4066 * @desc: gpio whose value will be assigned 4067 * @value: value to assign 4068 * 4069 * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into 4070 * account 4071 * 4072 * This function is to be called from contexts that can sleep. 4073 */ 4074 void gpiod_set_value_cansleep(struct gpio_desc *desc, int value) 4075 { 4076 might_sleep(); 4077 VALIDATE_DESC_VOID(desc); 4078 gpiod_set_value_nocheck(desc, value); 4079 } 4080 EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep); 4081 4082 /** 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 4088 * 4089 * Set the raw values of the GPIOs, i.e. the values of the physical lines 4090 * without regard for their ACTIVE_LOW status. 4091 * 4092 * This function is to be called from contexts that can sleep. 4093 * 4094 * Returns: 4095 * 0 on success, or negative errno on failure. 4096 */ 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) 4101 { 4102 might_sleep(); 4103 if (!desc_array) 4104 return -EINVAL; 4105 return gpiod_set_array_value_complex(true, true, array_size, desc_array, 4106 array_info, value_bitmap); 4107 } 4108 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value_cansleep); 4109 4110 /** 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 4114 */ 4115 void gpiod_add_lookup_tables(struct gpiod_lookup_table **tables, size_t n) 4116 { 4117 unsigned int i; 4118 4119 mutex_lock(&gpio_lookup_lock); 4120 4121 for (i = 0; i < n; i++) 4122 list_add_tail(&tables[i]->list, &gpio_lookup_list); 4123 4124 mutex_unlock(&gpio_lookup_lock); 4125 } 4126 4127 /** 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 4133 * 4134 * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status 4135 * into account. 4136 * 4137 * This function is to be called from contexts that can sleep. 4138 * 4139 * Returns: 4140 * 0 on success, or negative errno on failure. 4141 */ 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) 4146 { 4147 might_sleep(); 4148 if (!desc_array) 4149 return -EINVAL; 4150 return gpiod_set_array_value_complex(false, true, array_size, 4151 desc_array, array_info, 4152 value_bitmap); 4153 } 4154 EXPORT_SYMBOL_GPL(gpiod_set_array_value_cansleep); 4155 4156 void gpiod_line_state_notify(struct gpio_desc *desc, unsigned long action) 4157 { 4158 atomic_notifier_call_chain(&desc->gdev->line_state_notifier, 4159 action, desc); 4160 } 4161 4162 /** 4163 * gpiod_add_lookup_table() - register GPIO device consumers 4164 * @table: table of consumers to register 4165 */ 4166 void gpiod_add_lookup_table(struct gpiod_lookup_table *table) 4167 { 4168 gpiod_add_lookup_tables(&table, 1); 4169 } 4170 EXPORT_SYMBOL_GPL(gpiod_add_lookup_table); 4171 4172 /** 4173 * gpiod_remove_lookup_table() - unregister GPIO device consumers 4174 * @table: table of consumers to unregister 4175 */ 4176 void gpiod_remove_lookup_table(struct gpiod_lookup_table *table) 4177 { 4178 /* Nothing to remove */ 4179 if (!table) 4180 return; 4181 4182 mutex_lock(&gpio_lookup_lock); 4183 4184 list_del(&table->list); 4185 4186 mutex_unlock(&gpio_lookup_lock); 4187 } 4188 EXPORT_SYMBOL_GPL(gpiod_remove_lookup_table); 4189 4190 /** 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 4193 */ 4194 void gpiod_add_hogs(struct gpiod_hog *hogs) 4195 { 4196 struct gpiod_hog *hog; 4197 4198 mutex_lock(&gpio_machine_hogs_mutex); 4199 4200 for (hog = &hogs[0]; hog->chip_label; hog++) { 4201 list_add_tail(&hog->list, &gpio_machine_hogs); 4202 4203 /* 4204 * The chip may have been registered earlier, so check if it 4205 * exists and, if so, try to hog the line now. 4206 */ 4207 struct gpio_device *gdev __free(gpio_device_put) = 4208 gpio_device_find_by_label(hog->chip_label); 4209 if (gdev) 4210 gpiochip_machine_hog(gpio_device_get_chip(gdev), hog); 4211 } 4212 4213 mutex_unlock(&gpio_machine_hogs_mutex); 4214 } 4215 EXPORT_SYMBOL_GPL(gpiod_add_hogs); 4216 4217 void gpiod_remove_hogs(struct gpiod_hog *hogs) 4218 { 4219 struct gpiod_hog *hog; 4220 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); 4225 } 4226 EXPORT_SYMBOL_GPL(gpiod_remove_hogs); 4227 4228 static struct gpiod_lookup_table *gpiod_find_lookup_table(struct device *dev) 4229 { 4230 const char *dev_id = dev ? dev_name(dev) : NULL; 4231 struct gpiod_lookup_table *table; 4232 4233 list_for_each_entry(table, &gpio_lookup_list, list) { 4234 if (table->dev_id && dev_id) { 4235 /* 4236 * Valid strings on both ends, must be identical to have 4237 * a match 4238 */ 4239 if (!strcmp(table->dev_id, dev_id)) 4240 return table; 4241 } else { 4242 /* 4243 * One of the pointers is NULL, so both must be to have 4244 * a match 4245 */ 4246 if (dev_id == table->dev_id) 4247 return table; 4248 } 4249 } 4250 4251 return NULL; 4252 } 4253 4254 static struct gpio_desc *gpiod_find(struct device *dev, const char *con_id, 4255 unsigned int idx, unsigned long *flags) 4256 { 4257 struct gpio_desc *desc = ERR_PTR(-ENOENT); 4258 struct gpiod_lookup_table *table; 4259 struct gpiod_lookup *p; 4260 struct gpio_chip *gc; 4261 4262 guard(mutex)(&gpio_lookup_lock); 4263 4264 table = gpiod_find_lookup_table(dev); 4265 if (!table) 4266 return desc; 4267 4268 for (p = &table->table[0]; p->key; p++) { 4269 /* idx must always match exactly */ 4270 if (p->idx != idx) 4271 continue; 4272 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))) 4275 continue; 4276 4277 if (p->chip_hwnum == U16_MAX) { 4278 desc = gpio_name_to_desc(p->key); 4279 if (desc) { 4280 *flags = p->flags; 4281 return desc; 4282 } 4283 4284 dev_warn(dev, "cannot find GPIO line %s, deferring\n", 4285 p->key); 4286 return ERR_PTR(-EPROBE_DEFER); 4287 } 4288 4289 struct gpio_device *gdev __free(gpio_device_put) = 4290 gpio_device_find_by_label(p->key); 4291 if (!gdev) { 4292 /* 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. 4298 */ 4299 dev_warn(dev, "cannot find GPIO chip %s, deferring\n", 4300 p->key); 4301 return ERR_PTR(-EPROBE_DEFER); 4302 } 4303 4304 gc = gpio_device_get_chip(gdev); 4305 4306 if (gc->ngpio <= p->chip_hwnum) { 4307 dev_err(dev, 4308 "requested GPIO %u (%u) is out of range [0..%u] for chip %s\n", 4309 idx, p->chip_hwnum, gc->ngpio - 1, 4310 gc->label); 4311 return ERR_PTR(-EINVAL); 4312 } 4313 4314 desc = gpio_device_get_desc(gdev, p->chip_hwnum); 4315 *flags = p->flags; 4316 4317 return desc; 4318 } 4319 4320 return desc; 4321 } 4322 4323 static int platform_gpio_count(struct device *dev, const char *con_id) 4324 { 4325 struct gpiod_lookup_table *table; 4326 struct gpiod_lookup *p; 4327 unsigned int count = 0; 4328 4329 scoped_guard(mutex, &gpio_lookup_lock) { 4330 table = gpiod_find_lookup_table(dev); 4331 if (!table) 4332 return -ENOENT; 4333 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)) 4337 count++; 4338 } 4339 } 4340 4341 if (!count) 4342 return -ENOENT; 4343 4344 return count; 4345 } 4346 4347 static struct gpio_desc *gpiod_find_by_fwnode(struct fwnode_handle *fwnode, 4348 struct device *consumer, 4349 const char *con_id, 4350 unsigned int idx, 4351 enum gpiod_flags *flags, 4352 unsigned long *lookupflags) 4353 { 4354 const char *name = function_name_or_default(con_id); 4355 struct gpio_desc *desc = ERR_PTR(-ENOENT); 4356 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); 4366 } 4367 4368 return desc; 4369 } 4370 4371 struct gpio_desc *gpiod_find_and_request(struct device *consumer, 4372 struct fwnode_handle *fwnode, 4373 const char *con_id, 4374 unsigned int idx, 4375 enum gpiod_flags flags, 4376 const char *label, 4377 bool platform_lookup_allowed) 4378 { 4379 unsigned long lookupflags = GPIO_LOOKUP_FLAGS_DEFAULT; 4380 const char *name = function_name_or_default(con_id); 4381 /* 4382 * scoped_guard() is implemented as a for loop, meaning static 4383 * analyzers will complain about these two not being initialized. 4384 */ 4385 struct gpio_desc *desc = NULL; 4386 int ret = 0; 4387 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) { 4392 /* 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. 4396 */ 4397 dev_dbg(consumer, 4398 "using lookup tables for GPIO lookup\n"); 4399 desc = gpiod_find(consumer, con_id, idx, &lookupflags); 4400 } 4401 4402 if (IS_ERR(desc)) { 4403 dev_dbg(consumer, "No GPIO consumer %s found\n", name); 4404 return desc; 4405 } 4406 4407 /* 4408 * If a connection label was passed use that, else attempt to use 4409 * the device name as label 4410 */ 4411 ret = gpiod_request(desc, label); 4412 } 4413 if (ret) { 4414 if (!(ret == -EBUSY && flags & GPIOD_FLAGS_BIT_NONEXCLUSIVE)) 4415 return ERR_PTR(ret); 4416 4417 /* 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. 4422 * 4423 * FIXME: Make this more sane and safe. 4424 */ 4425 dev_info(consumer, "nonexclusive access to GPIO for %s\n", name); 4426 return desc; 4427 } 4428 4429 ret = gpiod_configure_flags(desc, con_id, lookupflags, flags); 4430 if (ret < 0) { 4431 gpiod_put(desc); 4432 dev_err(consumer, "setup of GPIO %s failed: %d\n", name, ret); 4433 return ERR_PTR(ret); 4434 } 4435 4436 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_REQUESTED); 4437 4438 return desc; 4439 } 4440 4441 /** 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 4448 * 4449 * This function can be used for drivers that get their configuration 4450 * from opaque firmware. 4451 * 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. 4455 * 4456 * Returns: 4457 * On successful request the GPIO pin is configured in accordance with 4458 * provided @flags. 4459 * 4460 * In case of error an ERR_PTR() is returned. 4461 */ 4462 struct gpio_desc *fwnode_gpiod_get_index(struct fwnode_handle *fwnode, 4463 const char *con_id, 4464 int index, 4465 enum gpiod_flags flags, 4466 const char *label) 4467 { 4468 return gpiod_find_and_request(NULL, fwnode, con_id, index, flags, label, false); 4469 } 4470 EXPORT_SYMBOL_GPL(fwnode_gpiod_get_index); 4471 4472 /** 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 4476 * 4477 * Returns: 4478 * The number of GPIOs associated with a device / function or -ENOENT if no 4479 * GPIO has been assigned to the requested function. 4480 */ 4481 int gpiod_count(struct device *dev, const char *con_id) 4482 { 4483 const struct fwnode_handle *fwnode = dev ? dev_fwnode(dev) : NULL; 4484 int count = -ENOENT; 4485 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); 4492 4493 if (count < 0) 4494 count = platform_gpio_count(dev, con_id); 4495 4496 return count; 4497 } 4498 EXPORT_SYMBOL_GPL(gpiod_count); 4499 4500 /** 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 4505 * 4506 * Returns: 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. 4510 */ 4511 struct gpio_desc *__must_check gpiod_get(struct device *dev, const char *con_id, 4512 enum gpiod_flags flags) 4513 { 4514 return gpiod_get_index(dev, con_id, 0, flags); 4515 } 4516 EXPORT_SYMBOL_GPL(gpiod_get); 4517 4518 /** 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 4523 * 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. 4527 * 4528 * Returns: 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. 4532 */ 4533 struct gpio_desc *__must_check gpiod_get_optional(struct device *dev, 4534 const char *con_id, 4535 enum gpiod_flags flags) 4536 { 4537 return gpiod_get_index_optional(dev, con_id, 0, flags); 4538 } 4539 EXPORT_SYMBOL_GPL(gpiod_get_optional); 4540 4541 4542 /** 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 4549 * 4550 * Returns: 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. 4554 */ 4555 int gpiod_configure_flags(struct gpio_desc *desc, const char *con_id, 4556 unsigned long lflags, enum gpiod_flags dflags) 4557 { 4558 const char *name = function_name_or_default(con_id); 4559 int ret; 4560 4561 if (lflags & GPIO_ACTIVE_LOW) 4562 set_bit(FLAG_ACTIVE_LOW, &desc->flags); 4563 4564 if (lflags & GPIO_OPEN_DRAIN) 4565 set_bit(FLAG_OPEN_DRAIN, &desc->flags); 4566 else if (dflags & GPIOD_FLAGS_BIT_OPEN_DRAIN) { 4567 /* 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. 4572 */ 4573 set_bit(FLAG_OPEN_DRAIN, &desc->flags); 4574 gpiod_warn(desc, 4575 "enforced open drain please flag it properly in DT/ACPI DSDT/board file\n"); 4576 } 4577 4578 if (lflags & GPIO_OPEN_SOURCE) 4579 set_bit(FLAG_OPEN_SOURCE, &desc->flags); 4580 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))) { 4584 gpiod_err(desc, 4585 "multiple pull-up, pull-down or pull-disable enabled, invalid configuration\n"); 4586 return -EINVAL; 4587 } 4588 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); 4595 4596 ret = gpiod_set_transitory(desc, (lflags & GPIO_TRANSITORY)); 4597 if (ret < 0) 4598 return ret; 4599 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); 4603 return 0; 4604 } 4605 4606 /* Process flags */ 4607 if (dflags & GPIOD_FLAGS_BIT_DIR_OUT) 4608 ret = gpiod_direction_output_nonotify(desc, 4609 !!(dflags & GPIOD_FLAGS_BIT_DIR_VAL)); 4610 else 4611 ret = gpiod_direction_input_nonotify(desc); 4612 4613 return ret; 4614 } 4615 4616 /** 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 4622 * 4623 * This variant of gpiod_get() allows to access GPIOs other than the first 4624 * defined one for functions that define several GPIOs. 4625 * 4626 * Returns: 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. 4630 */ 4631 struct gpio_desc *__must_check gpiod_get_index(struct device *dev, 4632 const char *con_id, 4633 unsigned int idx, 4634 enum gpiod_flags flags) 4635 { 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; 4639 4640 return gpiod_find_and_request(dev, fwnode, con_id, idx, flags, label, true); 4641 } 4642 EXPORT_SYMBOL_GPL(gpiod_get_index); 4643 4644 /** 4645 * gpiod_get_index_optional - obtain an optional GPIO from a multi-index GPIO 4646 * function 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 4651 * 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. 4655 * 4656 * Returns: 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. 4660 */ 4661 struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev, 4662 const char *con_id, 4663 unsigned int index, 4664 enum gpiod_flags flags) 4665 { 4666 struct gpio_desc *desc; 4667 4668 desc = gpiod_get_index(dev, con_id, index, flags); 4669 if (gpiod_not_found(desc)) 4670 return NULL; 4671 4672 return desc; 4673 } 4674 EXPORT_SYMBOL_GPL(gpiod_get_index_optional); 4675 4676 /** 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 4683 * 4684 * Returns: 4685 * 0 on success, or negative errno on failure. 4686 */ 4687 int gpiod_hog(struct gpio_desc *desc, const char *name, 4688 unsigned long lflags, enum gpiod_flags dflags) 4689 { 4690 struct gpio_device *gdev = desc->gdev; 4691 struct gpio_desc *local_desc; 4692 int hwnum; 4693 int ret; 4694 4695 CLASS(gpio_chip_guard, guard)(desc); 4696 if (!guard.gc) 4697 return -ENODEV; 4698 4699 if (test_and_set_bit(FLAG_IS_HOGGED, &desc->flags)) 4700 return 0; 4701 4702 hwnum = gpio_chip_hwgpio(desc); 4703 4704 local_desc = gpiochip_request_own_desc(guard.gc, hwnum, name, 4705 lflags, dflags); 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); 4711 return ret; 4712 } 4713 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" : ""); 4718 4719 return 0; 4720 } 4721 4722 /** 4723 * gpiochip_free_hogs - Scan gpio-controller chip and release GPIO hog 4724 * @gc: gpio chip to act on 4725 */ 4726 static void gpiochip_free_hogs(struct gpio_chip *gc) 4727 { 4728 struct gpio_desc *desc; 4729 4730 for_each_gpio_desc_with_flag(gc, desc, FLAG_IS_HOGGED) 4731 gpiochip_free_own_desc(desc); 4732 } 4733 4734 /** 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 4739 * 4740 * This function acquires all the GPIOs defined under a given function. 4741 * 4742 * Returns: 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 4746 * the GPIOs. 4747 */ 4748 struct gpio_descs *__must_check gpiod_get_array(struct device *dev, 4749 const char *con_id, 4750 enum gpiod_flags flags) 4751 { 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; 4757 size_t descs_size; 4758 4759 count = gpiod_count(dev, con_id); 4760 if (count < 0) 4761 return ERR_PTR(count); 4762 4763 descs_size = struct_size(descs, desc, count); 4764 descs = kzalloc(descs_size, GFP_KERNEL); 4765 if (!descs) 4766 return ERR_PTR(-ENOMEM); 4767 4768 for (descs->ndescs = 0; descs->ndescs < count; descs->ndescs++) { 4769 desc = gpiod_get_index(dev, con_id, descs->ndescs, flags); 4770 if (IS_ERR(desc)) { 4771 gpiod_put_array(descs); 4772 return ERR_CAST(desc); 4773 } 4774 4775 descs->desc[descs->ndescs] = desc; 4776 4777 gc = gpiod_to_chip(desc); 4778 /* 4779 * If pin hardware number of array member 0 is also 0, select 4780 * its chip as a candidate for fast bitmap processing path. 4781 */ 4782 if (descs->ndescs == 0 && gpio_chip_hwgpio(desc) == 0) { 4783 struct gpio_descs *array; 4784 4785 bitmap_size = BITS_TO_LONGS(gc->ngpio > count ? 4786 gc->ngpio : count); 4787 4788 array = krealloc(descs, descs_size + 4789 struct_size(array_info, invert_mask, 3 * bitmap_size), 4790 GFP_KERNEL | __GFP_ZERO); 4791 if (!array) { 4792 gpiod_put_array(descs); 4793 return ERR_PTR(-ENOMEM); 4794 } 4795 4796 descs = array; 4797 4798 array_info = (void *)descs + descs_size; 4799 array_info->get_mask = array_info->invert_mask + 4800 bitmap_size; 4801 array_info->set_mask = array_info->get_mask + 4802 bitmap_size; 4803 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; 4812 } 4813 4814 /* If there is no cache for fast bitmap processing path, continue */ 4815 if (!array_info) 4816 continue; 4817 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); 4822 } 4823 /* 4824 * Detect array members which belong to the 'fast' chip 4825 * but their pins are not in hardware order. 4826 */ 4827 else if (gpio_chip_hwgpio(desc) != descs->ndescs) { 4828 /* 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. 4832 */ 4833 if (bitmap_full(array_info->get_mask, descs->ndescs)) { 4834 array_info = NULL; 4835 } else { 4836 __clear_bit(descs->ndescs, 4837 array_info->get_mask); 4838 __clear_bit(descs->ndescs, 4839 array_info->set_mask); 4840 } 4841 } else { 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); 4851 } 4852 } 4853 if (array_info) 4854 dev_dbg(dev, 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); 4859 return descs; 4860 } 4861 EXPORT_SYMBOL_GPL(gpiod_get_array); 4862 4863 /** 4864 * gpiod_get_array_optional - obtain multiple GPIOs from a multi-index GPIO 4865 * function 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 4869 * 4870 * This is equivalent to gpiod_get_array(), except that when no GPIO was 4871 * assigned to the requested function it will return NULL. 4872 * 4873 * Returns: 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 4877 * the GPIOs. 4878 */ 4879 struct gpio_descs *__must_check gpiod_get_array_optional(struct device *dev, 4880 const char *con_id, 4881 enum gpiod_flags flags) 4882 { 4883 struct gpio_descs *descs; 4884 4885 descs = gpiod_get_array(dev, con_id, flags); 4886 if (gpiod_not_found(descs)) 4887 return NULL; 4888 4889 return descs; 4890 } 4891 EXPORT_SYMBOL_GPL(gpiod_get_array_optional); 4892 4893 /** 4894 * gpiod_put - dispose of a GPIO descriptor 4895 * @desc: GPIO descriptor to dispose of 4896 * 4897 * No descriptor can be used after gpiod_put() has been called on it. 4898 */ 4899 void gpiod_put(struct gpio_desc *desc) 4900 { 4901 if (desc) 4902 gpiod_free(desc); 4903 } 4904 EXPORT_SYMBOL_GPL(gpiod_put); 4905 4906 /** 4907 * gpiod_put_array - dispose of multiple GPIO descriptors 4908 * @descs: struct gpio_descs containing an array of descriptors 4909 */ 4910 void gpiod_put_array(struct gpio_descs *descs) 4911 { 4912 unsigned int i; 4913 4914 for (i = 0; i < descs->ndescs; i++) 4915 gpiod_put(descs->desc[i]); 4916 4917 kfree(descs); 4918 } 4919 EXPORT_SYMBOL_GPL(gpiod_put_array); 4920 4921 static int gpio_stub_drv_probe(struct device *dev) 4922 { 4923 /* 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. 4930 * 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. 4934 */ 4935 return 0; 4936 } 4937 4938 static struct device_driver gpio_stub_drv = { 4939 .name = "gpio_stub_drv", 4940 .bus = &gpio_bus_type, 4941 .probe = gpio_stub_drv_probe, 4942 }; 4943 4944 static int __init gpiolib_dev_init(void) 4945 { 4946 int ret; 4947 4948 /* Register GPIO sysfs bus */ 4949 ret = bus_register(&gpio_bus_type); 4950 if (ret < 0) { 4951 pr_err("gpiolib: could not register GPIO bus type\n"); 4952 return ret; 4953 } 4954 4955 ret = driver_register(&gpio_stub_drv); 4956 if (ret < 0) { 4957 pr_err("gpiolib: could not register GPIO stub driver\n"); 4958 bus_unregister(&gpio_bus_type); 4959 return ret; 4960 } 4961 4962 ret = alloc_chrdev_region(&gpio_devt, 0, GPIO_DEV_MAX, GPIOCHIP_NAME); 4963 if (ret < 0) { 4964 pr_err("gpiolib: failed to allocate char dev region\n"); 4965 driver_unregister(&gpio_stub_drv); 4966 bus_unregister(&gpio_bus_type); 4967 return ret; 4968 } 4969 4970 gpiolib_initialized = true; 4971 gpiochip_setup_devs(); 4972 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 */ 4976 4977 return ret; 4978 } 4979 core_initcall(gpiolib_dev_init); 4980 4981 #ifdef CONFIG_DEBUG_FS 4982 4983 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_device *gdev) 4984 { 4985 bool active_low, is_irq, is_out; 4986 unsigned int gpio = gdev->base; 4987 struct gpio_desc *desc; 4988 struct gpio_chip *gc; 4989 int value; 4990 4991 guard(srcu)(&gdev->srcu); 4992 4993 gc = srcu_dereference(gdev->chip, &gdev->srcu); 4994 if (!gc) { 4995 seq_puts(s, "Underlying GPIO chip is gone\n"); 4996 return; 4997 } 4998 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); 5015 } 5016 5017 gpio++; 5018 } 5019 } 5020 5021 struct gpiolib_seq_priv { 5022 bool newline; 5023 int idx; 5024 }; 5025 5026 static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos) 5027 { 5028 struct gpiolib_seq_priv *priv; 5029 struct gpio_device *gdev; 5030 loff_t index = *pos; 5031 5032 priv = kzalloc(sizeof(*priv), GFP_KERNEL); 5033 if (!priv) 5034 return NULL; 5035 5036 s->private = priv; 5037 if (*pos > 0) 5038 priv->newline = true; 5039 priv->idx = srcu_read_lock(&gpio_devices_srcu); 5040 5041 list_for_each_entry_srcu(gdev, &gpio_devices, list, 5042 srcu_read_lock_held(&gpio_devices_srcu)) { 5043 if (index-- == 0) 5044 return gdev; 5045 } 5046 5047 return NULL; 5048 } 5049 5050 static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos) 5051 { 5052 struct gpiolib_seq_priv *priv = s->private; 5053 struct gpio_device *gdev = v, *next; 5054 5055 next = list_entry_rcu(gdev->list.next, struct gpio_device, list); 5056 gdev = &next->list == &gpio_devices ? NULL : next; 5057 priv->newline = true; 5058 ++*pos; 5059 5060 return gdev; 5061 } 5062 5063 static void gpiolib_seq_stop(struct seq_file *s, void *v) 5064 { 5065 struct gpiolib_seq_priv *priv = s->private; 5066 5067 srcu_read_unlock(&gpio_devices_srcu, priv->idx); 5068 kfree(priv); 5069 } 5070 5071 static int gpiolib_seq_show(struct seq_file *s, void *v) 5072 { 5073 struct gpiolib_seq_priv *priv = s->private; 5074 struct gpio_device *gdev = v; 5075 struct gpio_chip *gc; 5076 struct device *parent; 5077 5078 if (priv->newline) 5079 seq_putc(s, '\n'); 5080 5081 guard(srcu)(&gdev->srcu); 5082 5083 gc = srcu_dereference(gdev->chip, &gdev->srcu); 5084 if (!gc) { 5085 seq_printf(s, "%s: (dangling chip)\n", dev_name(&gdev->dev)); 5086 return 0; 5087 } 5088 5089 seq_printf(s, "%s: GPIOs %u-%u", dev_name(&gdev->dev), gdev->base, 5090 gdev->base + gdev->ngpio - 1); 5091 parent = gc->parent; 5092 if (parent) 5093 seq_printf(s, ", parent: %s/%s", 5094 parent->bus ? parent->bus->name : "no-bus", 5095 dev_name(parent)); 5096 if (gc->label) 5097 seq_printf(s, ", %s", gc->label); 5098 if (gc->can_sleep) 5099 seq_printf(s, ", can sleep"); 5100 seq_printf(s, ":\n"); 5101 5102 if (gc->dbg_show) 5103 gc->dbg_show(s, gc); 5104 else 5105 gpiolib_dbg_show(s, gdev); 5106 5107 return 0; 5108 } 5109 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, 5115 }; 5116 DEFINE_SEQ_ATTRIBUTE(gpiolib); 5117 5118 static int __init gpiolib_debugfs_init(void) 5119 { 5120 /* /sys/kernel/debug/gpio */ 5121 debugfs_create_file("gpio", 0444, NULL, NULL, &gpiolib_fops); 5122 return 0; 5123 } 5124 subsys_initcall(gpiolib_debugfs_init); 5125 5126 #endif /* DEBUG_FS */ 5127