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