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