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