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