1 #include <linux/kernel.h> 2 #include <linux/module.h> 3 #include <linux/interrupt.h> 4 #include <linux/irq.h> 5 #include <linux/spinlock.h> 6 #include <linux/list.h> 7 #include <linux/device.h> 8 #include <linux/err.h> 9 #include <linux/debugfs.h> 10 #include <linux/seq_file.h> 11 #include <linux/gpio.h> 12 #include <linux/of_gpio.h> 13 #include <linux/idr.h> 14 #include <linux/slab.h> 15 #include <linux/acpi.h> 16 #include <linux/gpio/driver.h> 17 #include <linux/gpio/machine.h> 18 #include <linux/pinctrl/consumer.h> 19 #include <linux/idr.h> 20 #include <linux/cdev.h> 21 #include <linux/fs.h> 22 #include <linux/uaccess.h> 23 #include <uapi/linux/gpio.h> 24 25 #include "gpiolib.h" 26 27 #define CREATE_TRACE_POINTS 28 #include <trace/events/gpio.h> 29 30 /* Implementation infrastructure for GPIO interfaces. 31 * 32 * The GPIO programming interface allows for inlining speed-critical 33 * get/set operations for common cases, so that access to SOC-integrated 34 * GPIOs can sometimes cost only an instruction or two per bit. 35 */ 36 37 38 /* When debugging, extend minimal trust to callers and platform code. 39 * Also emit diagnostic messages that may help initial bringup, when 40 * board setup or driver bugs are most common. 41 * 42 * Otherwise, minimize overhead in what may be bitbanging codepaths. 43 */ 44 #ifdef DEBUG 45 #define extra_checks 1 46 #else 47 #define extra_checks 0 48 #endif 49 50 /* Device and char device-related information */ 51 static DEFINE_IDA(gpio_ida); 52 static dev_t gpio_devt; 53 #define GPIO_DEV_MAX 256 /* 256 GPIO chip devices supported */ 54 static struct bus_type gpio_bus_type = { 55 .name = "gpio", 56 }; 57 58 /* gpio_lock prevents conflicts during gpio_desc[] table updates. 59 * While any GPIO is requested, its gpio_chip is not removable; 60 * each GPIO's "requested" flag serves as a lock and refcount. 61 */ 62 DEFINE_SPINLOCK(gpio_lock); 63 64 static DEFINE_MUTEX(gpio_lookup_lock); 65 static LIST_HEAD(gpio_lookup_list); 66 LIST_HEAD(gpio_devices); 67 68 static void gpiochip_free_hogs(struct gpio_chip *chip); 69 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip); 70 71 72 static inline void desc_set_label(struct gpio_desc *d, const char *label) 73 { 74 d->label = label; 75 } 76 77 /** 78 * Convert a GPIO number to its descriptor 79 */ 80 struct gpio_desc *gpio_to_desc(unsigned gpio) 81 { 82 struct gpio_device *gdev; 83 unsigned long flags; 84 85 spin_lock_irqsave(&gpio_lock, flags); 86 87 list_for_each_entry(gdev, &gpio_devices, list) { 88 if (gdev->base <= gpio && 89 gdev->base + gdev->ngpio > gpio) { 90 spin_unlock_irqrestore(&gpio_lock, flags); 91 return &gdev->descs[gpio - gdev->base]; 92 } 93 } 94 95 spin_unlock_irqrestore(&gpio_lock, flags); 96 97 if (!gpio_is_valid(gpio)) 98 WARN(1, "invalid GPIO %d\n", gpio); 99 100 return NULL; 101 } 102 EXPORT_SYMBOL_GPL(gpio_to_desc); 103 104 /** 105 * Get the GPIO descriptor corresponding to the given hw number for this chip. 106 */ 107 struct gpio_desc *gpiochip_get_desc(struct gpio_chip *chip, 108 u16 hwnum) 109 { 110 struct gpio_device *gdev = chip->gpiodev; 111 112 if (hwnum >= gdev->ngpio) 113 return ERR_PTR(-EINVAL); 114 115 return &gdev->descs[hwnum]; 116 } 117 118 /** 119 * Convert a GPIO descriptor to the integer namespace. 120 * This should disappear in the future but is needed since we still 121 * use GPIO numbers for error messages and sysfs nodes 122 */ 123 int desc_to_gpio(const struct gpio_desc *desc) 124 { 125 return desc->gdev->base + (desc - &desc->gdev->descs[0]); 126 } 127 EXPORT_SYMBOL_GPL(desc_to_gpio); 128 129 130 /** 131 * gpiod_to_chip - Return the GPIO chip to which a GPIO descriptor belongs 132 * @desc: descriptor to return the chip of 133 */ 134 struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc) 135 { 136 if (!desc || !desc->gdev || !desc->gdev->chip) 137 return NULL; 138 return desc->gdev->chip; 139 } 140 EXPORT_SYMBOL_GPL(gpiod_to_chip); 141 142 /* dynamic allocation of GPIOs, e.g. on a hotplugged device */ 143 static int gpiochip_find_base(int ngpio) 144 { 145 struct gpio_device *gdev; 146 int base = ARCH_NR_GPIOS - ngpio; 147 148 list_for_each_entry_reverse(gdev, &gpio_devices, list) { 149 /* found a free space? */ 150 if (gdev->base + gdev->ngpio <= base) 151 break; 152 else 153 /* nope, check the space right before the chip */ 154 base = gdev->base - ngpio; 155 } 156 157 if (gpio_is_valid(base)) { 158 pr_debug("%s: found new base at %d\n", __func__, base); 159 return base; 160 } else { 161 pr_err("%s: cannot find free range\n", __func__); 162 return -ENOSPC; 163 } 164 } 165 166 /** 167 * gpiod_get_direction - return the current direction of a GPIO 168 * @desc: GPIO to get the direction of 169 * 170 * Return GPIOF_DIR_IN or GPIOF_DIR_OUT, or an error code in case of error. 171 * 172 * This function may sleep if gpiod_cansleep() is true. 173 */ 174 int gpiod_get_direction(struct gpio_desc *desc) 175 { 176 struct gpio_chip *chip; 177 unsigned offset; 178 int status = -EINVAL; 179 180 chip = gpiod_to_chip(desc); 181 offset = gpio_chip_hwgpio(desc); 182 183 if (!chip->get_direction) 184 return status; 185 186 status = chip->get_direction(chip, offset); 187 if (status > 0) { 188 /* GPIOF_DIR_IN, or other positive */ 189 status = 1; 190 clear_bit(FLAG_IS_OUT, &desc->flags); 191 } 192 if (status == 0) { 193 /* GPIOF_DIR_OUT */ 194 set_bit(FLAG_IS_OUT, &desc->flags); 195 } 196 return status; 197 } 198 EXPORT_SYMBOL_GPL(gpiod_get_direction); 199 200 /* 201 * Add a new chip to the global chips list, keeping the list of chips sorted 202 * by range(means [base, base + ngpio - 1]) order. 203 * 204 * Return -EBUSY if the new chip overlaps with some other chip's integer 205 * space. 206 */ 207 static int gpiodev_add_to_list(struct gpio_device *gdev) 208 { 209 struct gpio_device *prev, *next; 210 211 if (list_empty(&gpio_devices)) { 212 /* initial entry in list */ 213 list_add_tail(&gdev->list, &gpio_devices); 214 return 0; 215 } 216 217 next = list_entry(gpio_devices.next, struct gpio_device, list); 218 if (gdev->base + gdev->ngpio <= next->base) { 219 /* add before first entry */ 220 list_add(&gdev->list, &gpio_devices); 221 return 0; 222 } 223 224 prev = list_entry(gpio_devices.prev, struct gpio_device, list); 225 if (prev->base + prev->ngpio <= gdev->base) { 226 /* add behind last entry */ 227 list_add_tail(&gdev->list, &gpio_devices); 228 return 0; 229 } 230 231 list_for_each_entry_safe(prev, next, &gpio_devices, list) { 232 /* at the end of the list */ 233 if (&next->list == &gpio_devices) 234 break; 235 236 /* add between prev and next */ 237 if (prev->base + prev->ngpio <= gdev->base 238 && gdev->base + gdev->ngpio <= next->base) { 239 list_add(&gdev->list, &prev->list); 240 return 0; 241 } 242 } 243 244 dev_err(&gdev->dev, "GPIO integer space overlap, cannot add chip\n"); 245 return -EBUSY; 246 } 247 248 /** 249 * Convert a GPIO name to its descriptor 250 */ 251 static struct gpio_desc *gpio_name_to_desc(const char * const name) 252 { 253 struct gpio_device *gdev; 254 unsigned long flags; 255 256 spin_lock_irqsave(&gpio_lock, flags); 257 258 list_for_each_entry(gdev, &gpio_devices, list) { 259 int i; 260 261 for (i = 0; i != gdev->ngpio; ++i) { 262 struct gpio_desc *desc = &gdev->descs[i]; 263 264 if (!desc->name || !name) 265 continue; 266 267 if (!strcmp(desc->name, name)) { 268 spin_unlock_irqrestore(&gpio_lock, flags); 269 return desc; 270 } 271 } 272 } 273 274 spin_unlock_irqrestore(&gpio_lock, flags); 275 276 return NULL; 277 } 278 279 /* 280 * Takes the names from gc->names and checks if they are all unique. If they 281 * are, they are assigned to their gpio descriptors. 282 * 283 * Warning if one of the names is already used for a different GPIO. 284 */ 285 static int gpiochip_set_desc_names(struct gpio_chip *gc) 286 { 287 struct gpio_device *gdev = gc->gpiodev; 288 int i; 289 290 if (!gc->names) 291 return 0; 292 293 /* First check all names if they are unique */ 294 for (i = 0; i != gc->ngpio; ++i) { 295 struct gpio_desc *gpio; 296 297 gpio = gpio_name_to_desc(gc->names[i]); 298 if (gpio) 299 dev_warn(&gdev->dev, 300 "Detected name collision for GPIO name '%s'\n", 301 gc->names[i]); 302 } 303 304 /* Then add all names to the GPIO descriptors */ 305 for (i = 0; i != gc->ngpio; ++i) 306 gdev->descs[i].name = gc->names[i]; 307 308 return 0; 309 } 310 311 /** 312 * gpio_ioctl() - ioctl handler for the GPIO chardev 313 */ 314 static long gpio_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) 315 { 316 struct gpio_device *gdev = filp->private_data; 317 struct gpio_chip *chip = gdev->chip; 318 int __user *ip = (int __user *)arg; 319 320 /* We fail any subsequent ioctl():s when the chip is gone */ 321 if (!chip) 322 return -ENODEV; 323 324 /* Fill in the struct and pass to userspace */ 325 if (cmd == GPIO_GET_CHIPINFO_IOCTL) { 326 struct gpiochip_info chipinfo; 327 328 strncpy(chipinfo.name, dev_name(&gdev->dev), 329 sizeof(chipinfo.name)); 330 chipinfo.name[sizeof(chipinfo.name)-1] = '\0'; 331 strncpy(chipinfo.label, gdev->label, 332 sizeof(chipinfo.label)); 333 chipinfo.label[sizeof(chipinfo.label)-1] = '\0'; 334 chipinfo.lines = gdev->ngpio; 335 if (copy_to_user(ip, &chipinfo, sizeof(chipinfo))) 336 return -EFAULT; 337 return 0; 338 } else if (cmd == GPIO_GET_LINEINFO_IOCTL) { 339 struct gpioline_info lineinfo; 340 struct gpio_desc *desc; 341 342 if (copy_from_user(&lineinfo, ip, sizeof(lineinfo))) 343 return -EFAULT; 344 if (lineinfo.line_offset > gdev->ngpio) 345 return -EINVAL; 346 347 desc = &gdev->descs[lineinfo.line_offset]; 348 if (desc->name) { 349 strncpy(lineinfo.name, desc->name, 350 sizeof(lineinfo.name)); 351 lineinfo.name[sizeof(lineinfo.name)-1] = '\0'; 352 } else { 353 lineinfo.name[0] = '\0'; 354 } 355 if (desc->label) { 356 strncpy(lineinfo.consumer, desc->label, 357 sizeof(lineinfo.consumer)); 358 lineinfo.consumer[sizeof(lineinfo.consumer)-1] = '\0'; 359 } else { 360 lineinfo.consumer[0] = '\0'; 361 } 362 363 /* 364 * Userspace only need to know that the kernel is using 365 * this GPIO so it can't use it. 366 */ 367 lineinfo.flags = 0; 368 if (test_bit(FLAG_REQUESTED, &desc->flags) || 369 test_bit(FLAG_IS_HOGGED, &desc->flags) || 370 test_bit(FLAG_USED_AS_IRQ, &desc->flags) || 371 test_bit(FLAG_EXPORT, &desc->flags) || 372 test_bit(FLAG_SYSFS, &desc->flags)) 373 lineinfo.flags |= GPIOLINE_FLAG_KERNEL; 374 if (test_bit(FLAG_IS_OUT, &desc->flags)) 375 lineinfo.flags |= GPIOLINE_FLAG_IS_OUT; 376 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 377 lineinfo.flags |= GPIOLINE_FLAG_ACTIVE_LOW; 378 if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) 379 lineinfo.flags |= GPIOLINE_FLAG_OPEN_DRAIN; 380 if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) 381 lineinfo.flags |= GPIOLINE_FLAG_OPEN_SOURCE; 382 383 if (copy_to_user(ip, &lineinfo, sizeof(lineinfo))) 384 return -EFAULT; 385 return 0; 386 } 387 return -EINVAL; 388 } 389 390 /** 391 * gpio_chrdev_open() - open the chardev for ioctl operations 392 * @inode: inode for this chardev 393 * @filp: file struct for storing private data 394 * Returns 0 on success 395 */ 396 static int gpio_chrdev_open(struct inode *inode, struct file *filp) 397 { 398 struct gpio_device *gdev = container_of(inode->i_cdev, 399 struct gpio_device, chrdev); 400 401 /* Fail on open if the backing gpiochip is gone */ 402 if (!gdev || !gdev->chip) 403 return -ENODEV; 404 get_device(&gdev->dev); 405 filp->private_data = gdev; 406 return 0; 407 } 408 409 /** 410 * gpio_chrdev_release() - close chardev after ioctl operations 411 * @inode: inode for this chardev 412 * @filp: file struct for storing private data 413 * Returns 0 on success 414 */ 415 static int gpio_chrdev_release(struct inode *inode, struct file *filp) 416 { 417 struct gpio_device *gdev = container_of(inode->i_cdev, 418 struct gpio_device, chrdev); 419 420 if (!gdev) 421 return -ENODEV; 422 put_device(&gdev->dev); 423 return 0; 424 } 425 426 427 static const struct file_operations gpio_fileops = { 428 .release = gpio_chrdev_release, 429 .open = gpio_chrdev_open, 430 .owner = THIS_MODULE, 431 .llseek = noop_llseek, 432 .unlocked_ioctl = gpio_ioctl, 433 .compat_ioctl = gpio_ioctl, 434 }; 435 436 static void gpiodevice_release(struct device *dev) 437 { 438 struct gpio_device *gdev = dev_get_drvdata(dev); 439 440 cdev_del(&gdev->chrdev); 441 list_del(&gdev->list); 442 ida_simple_remove(&gpio_ida, gdev->id); 443 kfree(gdev); 444 } 445 446 /** 447 * gpiochip_add_data() - register a gpio_chip 448 * @chip: the chip to register, with chip->base initialized 449 * Context: potentially before irqs will work 450 * 451 * Returns a negative errno if the chip can't be registered, such as 452 * because the chip->base is invalid or already associated with a 453 * different chip. Otherwise it returns zero as a success code. 454 * 455 * When gpiochip_add_data() is called very early during boot, so that GPIOs 456 * can be freely used, the chip->parent device must be registered before 457 * the gpio framework's arch_initcall(). Otherwise sysfs initialization 458 * for GPIOs will fail rudely. 459 * 460 * If chip->base is negative, this requests dynamic assignment of 461 * a range of valid GPIOs. 462 */ 463 int gpiochip_add_data(struct gpio_chip *chip, void *data) 464 { 465 unsigned long flags; 466 int status = 0; 467 unsigned i; 468 int base = chip->base; 469 struct gpio_device *gdev; 470 471 /* 472 * First: allocate and populate the internal stat container, and 473 * set up the struct device. 474 */ 475 gdev = kzalloc(sizeof(*gdev), GFP_KERNEL); 476 if (!gdev) 477 return -ENOMEM; 478 gdev->dev.bus = &gpio_bus_type; 479 gdev->chip = chip; 480 chip->gpiodev = gdev; 481 if (chip->parent) { 482 gdev->dev.parent = chip->parent; 483 gdev->dev.of_node = chip->parent->of_node; 484 } else { 485 #ifdef CONFIG_OF_GPIO 486 /* If the gpiochip has an assigned OF node this takes precedence */ 487 if (chip->of_node) 488 gdev->dev.of_node = chip->of_node; 489 #endif 490 } 491 gdev->id = ida_simple_get(&gpio_ida, 0, 0, GFP_KERNEL); 492 if (gdev->id < 0) { 493 status = gdev->id; 494 goto err_free_gdev; 495 } 496 dev_set_name(&gdev->dev, "gpiochip%d", gdev->id); 497 device_initialize(&gdev->dev); 498 dev_set_drvdata(&gdev->dev, gdev); 499 if (chip->parent && chip->parent->driver) 500 gdev->owner = chip->parent->driver->owner; 501 else if (chip->owner) 502 /* TODO: remove chip->owner */ 503 gdev->owner = chip->owner; 504 else 505 gdev->owner = THIS_MODULE; 506 507 gdev->descs = devm_kcalloc(&gdev->dev, chip->ngpio, 508 sizeof(gdev->descs[0]), GFP_KERNEL); 509 if (!gdev->descs) { 510 status = -ENOMEM; 511 goto err_free_gdev; 512 } 513 514 if (chip->ngpio == 0) { 515 chip_err(chip, "tried to insert a GPIO chip with zero lines\n"); 516 status = -EINVAL; 517 goto err_free_gdev; 518 } 519 520 if (chip->label) 521 gdev->label = devm_kstrdup(&gdev->dev, chip->label, GFP_KERNEL); 522 else 523 gdev->label = devm_kstrdup(&gdev->dev, "unknown", GFP_KERNEL); 524 if (!gdev->label) { 525 status = -ENOMEM; 526 goto err_free_gdev; 527 } 528 529 gdev->ngpio = chip->ngpio; 530 gdev->data = data; 531 532 spin_lock_irqsave(&gpio_lock, flags); 533 534 /* 535 * TODO: this allocates a Linux GPIO number base in the global 536 * GPIO numberspace for this chip. In the long run we want to 537 * get *rid* of this numberspace and use only descriptors, but 538 * it may be a pipe dream. It will not happen before we get rid 539 * of the sysfs interface anyways. 540 */ 541 if (base < 0) { 542 base = gpiochip_find_base(chip->ngpio); 543 if (base < 0) { 544 status = base; 545 spin_unlock_irqrestore(&gpio_lock, flags); 546 goto err_free_gdev; 547 } 548 /* 549 * TODO: it should not be necessary to reflect the assigned 550 * base outside of the GPIO subsystem. Go over drivers and 551 * see if anyone makes use of this, else drop this and assign 552 * a poison instead. 553 */ 554 chip->base = base; 555 } 556 gdev->base = base; 557 558 status = gpiodev_add_to_list(gdev); 559 if (status) { 560 spin_unlock_irqrestore(&gpio_lock, flags); 561 goto err_free_gdev; 562 } 563 564 for (i = 0; i < chip->ngpio; i++) { 565 struct gpio_desc *desc = &gdev->descs[i]; 566 567 desc->gdev = gdev; 568 569 /* REVISIT: most hardware initializes GPIOs as inputs (often 570 * with pullups enabled) so power usage is minimized. Linux 571 * code should set the gpio direction first thing; but until 572 * it does, and in case chip->get_direction is not set, we may 573 * expose the wrong direction in sysfs. 574 */ 575 desc->flags = !chip->direction_input ? (1 << FLAG_IS_OUT) : 0; 576 } 577 578 spin_unlock_irqrestore(&gpio_lock, flags); 579 580 #ifdef CONFIG_PINCTRL 581 INIT_LIST_HEAD(&gdev->pin_ranges); 582 #endif 583 584 status = gpiochip_set_desc_names(chip); 585 if (status) 586 goto err_remove_from_list; 587 588 status = of_gpiochip_add(chip); 589 if (status) 590 goto err_remove_chip; 591 592 acpi_gpiochip_add(chip); 593 594 /* 595 * By first adding the chardev, and then adding the device, 596 * we get a device node entry in sysfs under 597 * /sys/bus/gpio/devices/gpiochipN/dev that can be used for 598 * coldplug of device nodes and other udev business. 599 */ 600 cdev_init(&gdev->chrdev, &gpio_fileops); 601 gdev->chrdev.owner = THIS_MODULE; 602 gdev->chrdev.kobj.parent = &gdev->dev.kobj; 603 gdev->dev.devt = MKDEV(MAJOR(gpio_devt), gdev->id); 604 status = cdev_add(&gdev->chrdev, gdev->dev.devt, 1); 605 if (status < 0) 606 chip_warn(chip, "failed to add char device %d:%d\n", 607 MAJOR(gpio_devt), gdev->id); 608 else 609 chip_dbg(chip, "added GPIO chardev (%d:%d)\n", 610 MAJOR(gpio_devt), gdev->id); 611 status = device_add(&gdev->dev); 612 if (status) 613 goto err_remove_chardev; 614 615 status = gpiochip_sysfs_register(gdev); 616 if (status) 617 goto err_remove_device; 618 619 /* From this point, the .release() function cleans up gpio_device */ 620 gdev->dev.release = gpiodevice_release; 621 get_device(&gdev->dev); 622 pr_debug("%s: registered GPIOs %d to %d on device: %s (%s)\n", 623 __func__, gdev->base, gdev->base + gdev->ngpio - 1, 624 dev_name(&gdev->dev), chip->label ? : "generic"); 625 626 return 0; 627 628 err_remove_device: 629 device_del(&gdev->dev); 630 err_remove_chardev: 631 cdev_del(&gdev->chrdev); 632 err_remove_chip: 633 acpi_gpiochip_remove(chip); 634 gpiochip_free_hogs(chip); 635 of_gpiochip_remove(chip); 636 err_remove_from_list: 637 spin_lock_irqsave(&gpio_lock, flags); 638 list_del(&gdev->list); 639 spin_unlock_irqrestore(&gpio_lock, flags); 640 err_free_gdev: 641 ida_simple_remove(&gpio_ida, gdev->id); 642 /* failures here can mean systems won't boot... */ 643 pr_err("%s: GPIOs %d..%d (%s) failed to register\n", __func__, 644 gdev->base, gdev->base + gdev->ngpio - 1, 645 chip->label ? : "generic"); 646 kfree(gdev); 647 return status; 648 } 649 EXPORT_SYMBOL_GPL(gpiochip_add_data); 650 651 /** 652 * gpiochip_get_data() - get per-subdriver data for the chip 653 */ 654 void *gpiochip_get_data(struct gpio_chip *chip) 655 { 656 return chip->gpiodev->data; 657 } 658 EXPORT_SYMBOL_GPL(gpiochip_get_data); 659 660 /** 661 * gpiochip_remove() - unregister a gpio_chip 662 * @chip: the chip to unregister 663 * 664 * A gpio_chip with any GPIOs still requested may not be removed. 665 */ 666 void gpiochip_remove(struct gpio_chip *chip) 667 { 668 struct gpio_device *gdev = chip->gpiodev; 669 struct gpio_desc *desc; 670 unsigned long flags; 671 unsigned i; 672 bool requested = false; 673 674 /* FIXME: should the legacy sysfs handling be moved to gpio_device? */ 675 gpiochip_sysfs_unregister(gdev); 676 /* Numb the device, cancelling all outstanding operations */ 677 gdev->chip = NULL; 678 gpiochip_irqchip_remove(chip); 679 acpi_gpiochip_remove(chip); 680 gpiochip_remove_pin_ranges(chip); 681 gpiochip_free_hogs(chip); 682 of_gpiochip_remove(chip); 683 /* 684 * We accept no more calls into the driver from this point, so 685 * NULL the driver data pointer 686 */ 687 gdev->data = NULL; 688 689 spin_lock_irqsave(&gpio_lock, flags); 690 for (i = 0; i < gdev->ngpio; i++) { 691 desc = &gdev->descs[i]; 692 if (test_bit(FLAG_REQUESTED, &desc->flags)) 693 requested = true; 694 } 695 spin_unlock_irqrestore(&gpio_lock, flags); 696 697 if (requested) 698 dev_crit(&gdev->dev, 699 "REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED\n"); 700 701 /* 702 * The gpiochip side puts its use of the device to rest here: 703 * if there are no userspace clients, the chardev and device will 704 * be removed, else it will be dangling until the last user is 705 * gone. 706 */ 707 put_device(&gdev->dev); 708 } 709 EXPORT_SYMBOL_GPL(gpiochip_remove); 710 711 static void devm_gpio_chip_release(struct device *dev, void *res) 712 { 713 struct gpio_chip *chip = *(struct gpio_chip **)res; 714 715 gpiochip_remove(chip); 716 } 717 718 static int devm_gpio_chip_match(struct device *dev, void *res, void *data) 719 720 { 721 struct gpio_chip **r = res; 722 723 if (!r || !*r) { 724 WARN_ON(!r || !*r); 725 return 0; 726 } 727 728 return *r == data; 729 } 730 731 /** 732 * devm_gpiochip_add_data() - Resource manager piochip_add_data() 733 * @dev: the device pointer on which irq_chip belongs to. 734 * @chip: the chip to register, with chip->base initialized 735 * Context: potentially before irqs will work 736 * 737 * Returns a negative errno if the chip can't be registered, such as 738 * because the chip->base is invalid or already associated with a 739 * different chip. Otherwise it returns zero as a success code. 740 * 741 * The gpio chip automatically be released when the device is unbound. 742 */ 743 int devm_gpiochip_add_data(struct device *dev, struct gpio_chip *chip, 744 void *data) 745 { 746 struct gpio_chip **ptr; 747 int ret; 748 749 ptr = devres_alloc(devm_gpio_chip_release, sizeof(*ptr), 750 GFP_KERNEL); 751 if (!ptr) 752 return -ENOMEM; 753 754 ret = gpiochip_add_data(chip, data); 755 if (ret < 0) { 756 devres_free(ptr); 757 return ret; 758 } 759 760 *ptr = chip; 761 devres_add(dev, ptr); 762 763 return 0; 764 } 765 EXPORT_SYMBOL_GPL(devm_gpiochip_add_data); 766 767 /** 768 * devm_gpiochip_remove() - Resource manager of gpiochip_remove() 769 * @dev: device for which which resource was allocated 770 * @chip: the chip to remove 771 * 772 * A gpio_chip with any GPIOs still requested may not be removed. 773 */ 774 void devm_gpiochip_remove(struct device *dev, struct gpio_chip *chip) 775 { 776 int ret; 777 778 ret = devres_release(dev, devm_gpio_chip_release, 779 devm_gpio_chip_match, chip); 780 if (!ret) 781 WARN_ON(ret); 782 } 783 EXPORT_SYMBOL_GPL(devm_gpiochip_remove); 784 785 /** 786 * gpiochip_find() - iterator for locating a specific gpio_chip 787 * @data: data to pass to match function 788 * @callback: Callback function to check gpio_chip 789 * 790 * Similar to bus_find_device. It returns a reference to a gpio_chip as 791 * determined by a user supplied @match callback. The callback should return 792 * 0 if the device doesn't match and non-zero if it does. If the callback is 793 * non-zero, this function will return to the caller and not iterate over any 794 * more gpio_chips. 795 */ 796 struct gpio_chip *gpiochip_find(void *data, 797 int (*match)(struct gpio_chip *chip, 798 void *data)) 799 { 800 struct gpio_device *gdev; 801 struct gpio_chip *chip; 802 unsigned long flags; 803 804 spin_lock_irqsave(&gpio_lock, flags); 805 list_for_each_entry(gdev, &gpio_devices, list) 806 if (match(gdev->chip, data)) 807 break; 808 809 /* No match? */ 810 if (&gdev->list == &gpio_devices) 811 chip = NULL; 812 else 813 chip = gdev->chip; 814 815 spin_unlock_irqrestore(&gpio_lock, flags); 816 817 return chip; 818 } 819 EXPORT_SYMBOL_GPL(gpiochip_find); 820 821 static int gpiochip_match_name(struct gpio_chip *chip, void *data) 822 { 823 const char *name = data; 824 825 return !strcmp(chip->label, name); 826 } 827 828 static struct gpio_chip *find_chip_by_name(const char *name) 829 { 830 return gpiochip_find((void *)name, gpiochip_match_name); 831 } 832 833 #ifdef CONFIG_GPIOLIB_IRQCHIP 834 835 /* 836 * The following is irqchip helper code for gpiochips. 837 */ 838 839 /** 840 * gpiochip_set_chained_irqchip() - sets a chained irqchip to a gpiochip 841 * @gpiochip: the gpiochip to set the irqchip chain to 842 * @irqchip: the irqchip to chain to the gpiochip 843 * @parent_irq: the irq number corresponding to the parent IRQ for this 844 * chained irqchip 845 * @parent_handler: the parent interrupt handler for the accumulated IRQ 846 * coming out of the gpiochip. If the interrupt is nested rather than 847 * cascaded, pass NULL in this handler argument 848 */ 849 void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip, 850 struct irq_chip *irqchip, 851 int parent_irq, 852 irq_flow_handler_t parent_handler) 853 { 854 unsigned int offset; 855 856 if (!gpiochip->irqdomain) { 857 chip_err(gpiochip, "called %s before setting up irqchip\n", 858 __func__); 859 return; 860 } 861 862 if (parent_handler) { 863 if (gpiochip->can_sleep) { 864 chip_err(gpiochip, 865 "you cannot have chained interrupts on a " 866 "chip that may sleep\n"); 867 return; 868 } 869 /* 870 * The parent irqchip is already using the chip_data for this 871 * irqchip, so our callbacks simply use the handler_data. 872 */ 873 irq_set_chained_handler_and_data(parent_irq, parent_handler, 874 gpiochip); 875 876 gpiochip->irq_parent = parent_irq; 877 } 878 879 /* Set the parent IRQ for all affected IRQs */ 880 for (offset = 0; offset < gpiochip->ngpio; offset++) 881 irq_set_parent(irq_find_mapping(gpiochip->irqdomain, offset), 882 parent_irq); 883 } 884 EXPORT_SYMBOL_GPL(gpiochip_set_chained_irqchip); 885 886 /** 887 * gpiochip_irq_map() - maps an IRQ into a GPIO irqchip 888 * @d: the irqdomain used by this irqchip 889 * @irq: the global irq number used by this GPIO irqchip irq 890 * @hwirq: the local IRQ/GPIO line offset on this gpiochip 891 * 892 * This function will set up the mapping for a certain IRQ line on a 893 * gpiochip by assigning the gpiochip as chip data, and using the irqchip 894 * stored inside the gpiochip. 895 */ 896 static int gpiochip_irq_map(struct irq_domain *d, unsigned int irq, 897 irq_hw_number_t hwirq) 898 { 899 struct gpio_chip *chip = d->host_data; 900 901 irq_set_chip_data(irq, chip); 902 /* 903 * This lock class tells lockdep that GPIO irqs are in a different 904 * category than their parents, so it won't report false recursion. 905 */ 906 irq_set_lockdep_class(irq, chip->lock_key); 907 irq_set_chip_and_handler(irq, chip->irqchip, chip->irq_handler); 908 /* Chips that can sleep need nested thread handlers */ 909 if (chip->can_sleep && !chip->irq_not_threaded) 910 irq_set_nested_thread(irq, 1); 911 irq_set_noprobe(irq); 912 913 /* 914 * No set-up of the hardware will happen if IRQ_TYPE_NONE 915 * is passed as default type. 916 */ 917 if (chip->irq_default_type != IRQ_TYPE_NONE) 918 irq_set_irq_type(irq, chip->irq_default_type); 919 920 return 0; 921 } 922 923 static void gpiochip_irq_unmap(struct irq_domain *d, unsigned int irq) 924 { 925 struct gpio_chip *chip = d->host_data; 926 927 if (chip->can_sleep) 928 irq_set_nested_thread(irq, 0); 929 irq_set_chip_and_handler(irq, NULL, NULL); 930 irq_set_chip_data(irq, NULL); 931 } 932 933 static const struct irq_domain_ops gpiochip_domain_ops = { 934 .map = gpiochip_irq_map, 935 .unmap = gpiochip_irq_unmap, 936 /* Virtually all GPIO irqchips are twocell:ed */ 937 .xlate = irq_domain_xlate_twocell, 938 }; 939 940 static int gpiochip_irq_reqres(struct irq_data *d) 941 { 942 struct gpio_chip *chip = irq_data_get_irq_chip_data(d); 943 944 if (!try_module_get(chip->gpiodev->owner)) 945 return -ENODEV; 946 947 if (gpiochip_lock_as_irq(chip, d->hwirq)) { 948 chip_err(chip, 949 "unable to lock HW IRQ %lu for IRQ\n", 950 d->hwirq); 951 module_put(chip->gpiodev->owner); 952 return -EINVAL; 953 } 954 return 0; 955 } 956 957 static void gpiochip_irq_relres(struct irq_data *d) 958 { 959 struct gpio_chip *chip = irq_data_get_irq_chip_data(d); 960 961 gpiochip_unlock_as_irq(chip, d->hwirq); 962 module_put(chip->gpiodev->owner); 963 } 964 965 static int gpiochip_to_irq(struct gpio_chip *chip, unsigned offset) 966 { 967 return irq_find_mapping(chip->irqdomain, offset); 968 } 969 970 /** 971 * gpiochip_irqchip_remove() - removes an irqchip added to a gpiochip 972 * @gpiochip: the gpiochip to remove the irqchip from 973 * 974 * This is called only from gpiochip_remove() 975 */ 976 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) 977 { 978 unsigned int offset; 979 980 acpi_gpiochip_free_interrupts(gpiochip); 981 982 if (gpiochip->irq_parent) { 983 irq_set_chained_handler(gpiochip->irq_parent, NULL); 984 irq_set_handler_data(gpiochip->irq_parent, NULL); 985 } 986 987 /* Remove all IRQ mappings and delete the domain */ 988 if (gpiochip->irqdomain) { 989 for (offset = 0; offset < gpiochip->ngpio; offset++) 990 irq_dispose_mapping( 991 irq_find_mapping(gpiochip->irqdomain, offset)); 992 irq_domain_remove(gpiochip->irqdomain); 993 } 994 995 if (gpiochip->irqchip) { 996 gpiochip->irqchip->irq_request_resources = NULL; 997 gpiochip->irqchip->irq_release_resources = NULL; 998 gpiochip->irqchip = NULL; 999 } 1000 } 1001 1002 /** 1003 * gpiochip_irqchip_add() - adds an irqchip to a gpiochip 1004 * @gpiochip: the gpiochip to add the irqchip to 1005 * @irqchip: the irqchip to add to the gpiochip 1006 * @first_irq: if not dynamically assigned, the base (first) IRQ to 1007 * allocate gpiochip irqs from 1008 * @handler: the irq handler to use (often a predefined irq core function) 1009 * @type: the default type for IRQs on this irqchip, pass IRQ_TYPE_NONE 1010 * to have the core avoid setting up any default type in the hardware. 1011 * @lock_key: lockdep class 1012 * 1013 * This function closely associates a certain irqchip with a certain 1014 * gpiochip, providing an irq domain to translate the local IRQs to 1015 * global irqs in the gpiolib core, and making sure that the gpiochip 1016 * is passed as chip data to all related functions. Driver callbacks 1017 * need to use gpiochip_get_data() to get their local state containers back 1018 * from the gpiochip passed as chip data. An irqdomain will be stored 1019 * in the gpiochip that shall be used by the driver to handle IRQ number 1020 * translation. The gpiochip will need to be initialized and registered 1021 * before calling this function. 1022 * 1023 * This function will handle two cell:ed simple IRQs and assumes all 1024 * the pins on the gpiochip can generate a unique IRQ. Everything else 1025 * need to be open coded. 1026 */ 1027 int _gpiochip_irqchip_add(struct gpio_chip *gpiochip, 1028 struct irq_chip *irqchip, 1029 unsigned int first_irq, 1030 irq_flow_handler_t handler, 1031 unsigned int type, 1032 struct lock_class_key *lock_key) 1033 { 1034 struct device_node *of_node; 1035 unsigned int offset; 1036 unsigned irq_base = 0; 1037 1038 if (!gpiochip || !irqchip) 1039 return -EINVAL; 1040 1041 if (!gpiochip->parent) { 1042 pr_err("missing gpiochip .dev parent pointer\n"); 1043 return -EINVAL; 1044 } 1045 of_node = gpiochip->parent->of_node; 1046 #ifdef CONFIG_OF_GPIO 1047 /* 1048 * If the gpiochip has an assigned OF node this takes precedence 1049 * FIXME: get rid of this and use gpiochip->parent->of_node 1050 * everywhere 1051 */ 1052 if (gpiochip->of_node) 1053 of_node = gpiochip->of_node; 1054 #endif 1055 gpiochip->irqchip = irqchip; 1056 gpiochip->irq_handler = handler; 1057 gpiochip->irq_default_type = type; 1058 gpiochip->to_irq = gpiochip_to_irq; 1059 gpiochip->lock_key = lock_key; 1060 gpiochip->irqdomain = irq_domain_add_simple(of_node, 1061 gpiochip->ngpio, first_irq, 1062 &gpiochip_domain_ops, gpiochip); 1063 if (!gpiochip->irqdomain) { 1064 gpiochip->irqchip = NULL; 1065 return -EINVAL; 1066 } 1067 1068 /* 1069 * It is possible for a driver to override this, but only if the 1070 * alternative functions are both implemented. 1071 */ 1072 if (!irqchip->irq_request_resources && 1073 !irqchip->irq_release_resources) { 1074 irqchip->irq_request_resources = gpiochip_irq_reqres; 1075 irqchip->irq_release_resources = gpiochip_irq_relres; 1076 } 1077 1078 /* 1079 * Prepare the mapping since the irqchip shall be orthogonal to 1080 * any gpiochip calls. If the first_irq was zero, this is 1081 * necessary to allocate descriptors for all IRQs. 1082 */ 1083 for (offset = 0; offset < gpiochip->ngpio; offset++) { 1084 irq_base = irq_create_mapping(gpiochip->irqdomain, offset); 1085 if (offset == 0) 1086 /* 1087 * Store the base into the gpiochip to be used when 1088 * unmapping the irqs. 1089 */ 1090 gpiochip->irq_base = irq_base; 1091 } 1092 1093 acpi_gpiochip_request_interrupts(gpiochip); 1094 1095 return 0; 1096 } 1097 EXPORT_SYMBOL_GPL(_gpiochip_irqchip_add); 1098 1099 #else /* CONFIG_GPIOLIB_IRQCHIP */ 1100 1101 static void gpiochip_irqchip_remove(struct gpio_chip *gpiochip) {} 1102 1103 #endif /* CONFIG_GPIOLIB_IRQCHIP */ 1104 1105 /** 1106 * gpiochip_generic_request() - request the gpio function for a pin 1107 * @chip: the gpiochip owning the GPIO 1108 * @offset: the offset of the GPIO to request for GPIO function 1109 */ 1110 int gpiochip_generic_request(struct gpio_chip *chip, unsigned offset) 1111 { 1112 return pinctrl_request_gpio(chip->gpiodev->base + offset); 1113 } 1114 EXPORT_SYMBOL_GPL(gpiochip_generic_request); 1115 1116 /** 1117 * gpiochip_generic_free() - free the gpio function from a pin 1118 * @chip: the gpiochip to request the gpio function for 1119 * @offset: the offset of the GPIO to free from GPIO function 1120 */ 1121 void gpiochip_generic_free(struct gpio_chip *chip, unsigned offset) 1122 { 1123 pinctrl_free_gpio(chip->gpiodev->base + offset); 1124 } 1125 EXPORT_SYMBOL_GPL(gpiochip_generic_free); 1126 1127 #ifdef CONFIG_PINCTRL 1128 1129 /** 1130 * gpiochip_add_pingroup_range() - add a range for GPIO <-> pin mapping 1131 * @chip: the gpiochip to add the range for 1132 * @pctldev: the pin controller to map to 1133 * @gpio_offset: the start offset in the current gpio_chip number space 1134 * @pin_group: name of the pin group inside the pin controller 1135 */ 1136 int gpiochip_add_pingroup_range(struct gpio_chip *chip, 1137 struct pinctrl_dev *pctldev, 1138 unsigned int gpio_offset, const char *pin_group) 1139 { 1140 struct gpio_pin_range *pin_range; 1141 struct gpio_device *gdev = chip->gpiodev; 1142 int ret; 1143 1144 pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL); 1145 if (!pin_range) { 1146 chip_err(chip, "failed to allocate pin ranges\n"); 1147 return -ENOMEM; 1148 } 1149 1150 /* Use local offset as range ID */ 1151 pin_range->range.id = gpio_offset; 1152 pin_range->range.gc = chip; 1153 pin_range->range.name = chip->label; 1154 pin_range->range.base = gdev->base + gpio_offset; 1155 pin_range->pctldev = pctldev; 1156 1157 ret = pinctrl_get_group_pins(pctldev, pin_group, 1158 &pin_range->range.pins, 1159 &pin_range->range.npins); 1160 if (ret < 0) { 1161 kfree(pin_range); 1162 return ret; 1163 } 1164 1165 pinctrl_add_gpio_range(pctldev, &pin_range->range); 1166 1167 chip_dbg(chip, "created GPIO range %d->%d ==> %s PINGRP %s\n", 1168 gpio_offset, gpio_offset + pin_range->range.npins - 1, 1169 pinctrl_dev_get_devname(pctldev), pin_group); 1170 1171 list_add_tail(&pin_range->node, &gdev->pin_ranges); 1172 1173 return 0; 1174 } 1175 EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range); 1176 1177 /** 1178 * gpiochip_add_pin_range() - add a range for GPIO <-> pin mapping 1179 * @chip: the gpiochip to add the range for 1180 * @pinctrl_name: the dev_name() of the pin controller to map to 1181 * @gpio_offset: the start offset in the current gpio_chip number space 1182 * @pin_offset: the start offset in the pin controller number space 1183 * @npins: the number of pins from the offset of each pin space (GPIO and 1184 * pin controller) to accumulate in this range 1185 */ 1186 int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name, 1187 unsigned int gpio_offset, unsigned int pin_offset, 1188 unsigned int npins) 1189 { 1190 struct gpio_pin_range *pin_range; 1191 struct gpio_device *gdev = chip->gpiodev; 1192 int ret; 1193 1194 pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL); 1195 if (!pin_range) { 1196 chip_err(chip, "failed to allocate pin ranges\n"); 1197 return -ENOMEM; 1198 } 1199 1200 /* Use local offset as range ID */ 1201 pin_range->range.id = gpio_offset; 1202 pin_range->range.gc = chip; 1203 pin_range->range.name = chip->label; 1204 pin_range->range.base = gdev->base + gpio_offset; 1205 pin_range->range.pin_base = pin_offset; 1206 pin_range->range.npins = npins; 1207 pin_range->pctldev = pinctrl_find_and_add_gpio_range(pinctl_name, 1208 &pin_range->range); 1209 if (IS_ERR(pin_range->pctldev)) { 1210 ret = PTR_ERR(pin_range->pctldev); 1211 chip_err(chip, "could not create pin range\n"); 1212 kfree(pin_range); 1213 return ret; 1214 } 1215 chip_dbg(chip, "created GPIO range %d->%d ==> %s PIN %d->%d\n", 1216 gpio_offset, gpio_offset + npins - 1, 1217 pinctl_name, 1218 pin_offset, pin_offset + npins - 1); 1219 1220 list_add_tail(&pin_range->node, &gdev->pin_ranges); 1221 1222 return 0; 1223 } 1224 EXPORT_SYMBOL_GPL(gpiochip_add_pin_range); 1225 1226 /** 1227 * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings 1228 * @chip: the chip to remove all the mappings for 1229 */ 1230 void gpiochip_remove_pin_ranges(struct gpio_chip *chip) 1231 { 1232 struct gpio_pin_range *pin_range, *tmp; 1233 struct gpio_device *gdev = chip->gpiodev; 1234 1235 list_for_each_entry_safe(pin_range, tmp, &gdev->pin_ranges, node) { 1236 list_del(&pin_range->node); 1237 pinctrl_remove_gpio_range(pin_range->pctldev, 1238 &pin_range->range); 1239 kfree(pin_range); 1240 } 1241 } 1242 EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges); 1243 1244 #endif /* CONFIG_PINCTRL */ 1245 1246 /* These "optional" allocation calls help prevent drivers from stomping 1247 * on each other, and help provide better diagnostics in debugfs. 1248 * They're called even less than the "set direction" calls. 1249 */ 1250 static int __gpiod_request(struct gpio_desc *desc, const char *label) 1251 { 1252 struct gpio_chip *chip = desc->gdev->chip; 1253 int status; 1254 unsigned long flags; 1255 1256 spin_lock_irqsave(&gpio_lock, flags); 1257 1258 /* NOTE: gpio_request() can be called in early boot, 1259 * before IRQs are enabled, for non-sleeping (SOC) GPIOs. 1260 */ 1261 1262 if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) { 1263 desc_set_label(desc, label ? : "?"); 1264 status = 0; 1265 } else { 1266 status = -EBUSY; 1267 goto done; 1268 } 1269 1270 if (chip->request) { 1271 /* chip->request may sleep */ 1272 spin_unlock_irqrestore(&gpio_lock, flags); 1273 status = chip->request(chip, gpio_chip_hwgpio(desc)); 1274 spin_lock_irqsave(&gpio_lock, flags); 1275 1276 if (status < 0) { 1277 desc_set_label(desc, NULL); 1278 clear_bit(FLAG_REQUESTED, &desc->flags); 1279 goto done; 1280 } 1281 } 1282 if (chip->get_direction) { 1283 /* chip->get_direction may sleep */ 1284 spin_unlock_irqrestore(&gpio_lock, flags); 1285 gpiod_get_direction(desc); 1286 spin_lock_irqsave(&gpio_lock, flags); 1287 } 1288 done: 1289 if (status < 0) { 1290 /* Clear flags that might have been set by the caller before 1291 * requesting the GPIO. 1292 */ 1293 clear_bit(FLAG_ACTIVE_LOW, &desc->flags); 1294 clear_bit(FLAG_OPEN_DRAIN, &desc->flags); 1295 clear_bit(FLAG_OPEN_SOURCE, &desc->flags); 1296 } 1297 spin_unlock_irqrestore(&gpio_lock, flags); 1298 return status; 1299 } 1300 1301 /* 1302 * This descriptor validation needs to be inserted verbatim into each 1303 * function taking a descriptor, so we need to use a preprocessor 1304 * macro to avoid endless duplication. 1305 */ 1306 #define VALIDATE_DESC(desc) do { \ 1307 if (!desc || !desc->gdev) { \ 1308 pr_warn("%s: invalid GPIO\n", __func__); \ 1309 return -EINVAL; \ 1310 } \ 1311 if ( !desc->gdev->chip ) { \ 1312 dev_warn(&desc->gdev->dev, \ 1313 "%s: backing chip is gone\n", __func__); \ 1314 return 0; \ 1315 } } while (0) 1316 1317 #define VALIDATE_DESC_VOID(desc) do { \ 1318 if (!desc || !desc->gdev) { \ 1319 pr_warn("%s: invalid GPIO\n", __func__); \ 1320 return; \ 1321 } \ 1322 if (!desc->gdev->chip) { \ 1323 dev_warn(&desc->gdev->dev, \ 1324 "%s: backing chip is gone\n", __func__); \ 1325 return; \ 1326 } } while (0) 1327 1328 1329 int gpiod_request(struct gpio_desc *desc, const char *label) 1330 { 1331 int status = -EPROBE_DEFER; 1332 struct gpio_device *gdev; 1333 1334 VALIDATE_DESC(desc); 1335 gdev = desc->gdev; 1336 1337 if (try_module_get(gdev->owner)) { 1338 status = __gpiod_request(desc, label); 1339 if (status < 0) 1340 module_put(gdev->owner); 1341 else 1342 get_device(&gdev->dev); 1343 } 1344 1345 if (status) 1346 gpiod_dbg(desc, "%s: status %d\n", __func__, status); 1347 1348 return status; 1349 } 1350 1351 static bool __gpiod_free(struct gpio_desc *desc) 1352 { 1353 bool ret = false; 1354 unsigned long flags; 1355 struct gpio_chip *chip; 1356 1357 might_sleep(); 1358 1359 gpiod_unexport(desc); 1360 1361 spin_lock_irqsave(&gpio_lock, flags); 1362 1363 chip = desc->gdev->chip; 1364 if (chip && test_bit(FLAG_REQUESTED, &desc->flags)) { 1365 if (chip->free) { 1366 spin_unlock_irqrestore(&gpio_lock, flags); 1367 might_sleep_if(chip->can_sleep); 1368 chip->free(chip, gpio_chip_hwgpio(desc)); 1369 spin_lock_irqsave(&gpio_lock, flags); 1370 } 1371 desc_set_label(desc, NULL); 1372 clear_bit(FLAG_ACTIVE_LOW, &desc->flags); 1373 clear_bit(FLAG_REQUESTED, &desc->flags); 1374 clear_bit(FLAG_OPEN_DRAIN, &desc->flags); 1375 clear_bit(FLAG_OPEN_SOURCE, &desc->flags); 1376 clear_bit(FLAG_IS_HOGGED, &desc->flags); 1377 ret = true; 1378 } 1379 1380 spin_unlock_irqrestore(&gpio_lock, flags); 1381 return ret; 1382 } 1383 1384 void gpiod_free(struct gpio_desc *desc) 1385 { 1386 if (desc && desc->gdev && __gpiod_free(desc)) { 1387 module_put(desc->gdev->owner); 1388 put_device(&desc->gdev->dev); 1389 } else { 1390 WARN_ON(extra_checks); 1391 } 1392 } 1393 1394 /** 1395 * gpiochip_is_requested - return string iff signal was requested 1396 * @chip: controller managing the signal 1397 * @offset: of signal within controller's 0..(ngpio - 1) range 1398 * 1399 * Returns NULL if the GPIO is not currently requested, else a string. 1400 * The string returned is the label passed to gpio_request(); if none has been 1401 * passed it is a meaningless, non-NULL constant. 1402 * 1403 * This function is for use by GPIO controller drivers. The label can 1404 * help with diagnostics, and knowing that the signal is used as a GPIO 1405 * can help avoid accidentally multiplexing it to another controller. 1406 */ 1407 const char *gpiochip_is_requested(struct gpio_chip *chip, unsigned offset) 1408 { 1409 struct gpio_desc *desc; 1410 1411 if (offset >= chip->ngpio) 1412 return NULL; 1413 1414 desc = &chip->gpiodev->descs[offset]; 1415 1416 if (test_bit(FLAG_REQUESTED, &desc->flags) == 0) 1417 return NULL; 1418 return desc->label; 1419 } 1420 EXPORT_SYMBOL_GPL(gpiochip_is_requested); 1421 1422 /** 1423 * gpiochip_request_own_desc - Allow GPIO chip to request its own descriptor 1424 * @desc: GPIO descriptor to request 1425 * @label: label for the GPIO 1426 * 1427 * Function allows GPIO chip drivers to request and use their own GPIO 1428 * descriptors via gpiolib API. Difference to gpiod_request() is that this 1429 * function will not increase reference count of the GPIO chip module. This 1430 * allows the GPIO chip module to be unloaded as needed (we assume that the 1431 * GPIO chip driver handles freeing the GPIOs it has requested). 1432 */ 1433 struct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *chip, u16 hwnum, 1434 const char *label) 1435 { 1436 struct gpio_desc *desc = gpiochip_get_desc(chip, hwnum); 1437 int err; 1438 1439 if (IS_ERR(desc)) { 1440 chip_err(chip, "failed to get GPIO descriptor\n"); 1441 return desc; 1442 } 1443 1444 err = __gpiod_request(desc, label); 1445 if (err < 0) 1446 return ERR_PTR(err); 1447 1448 return desc; 1449 } 1450 EXPORT_SYMBOL_GPL(gpiochip_request_own_desc); 1451 1452 /** 1453 * gpiochip_free_own_desc - Free GPIO requested by the chip driver 1454 * @desc: GPIO descriptor to free 1455 * 1456 * Function frees the given GPIO requested previously with 1457 * gpiochip_request_own_desc(). 1458 */ 1459 void gpiochip_free_own_desc(struct gpio_desc *desc) 1460 { 1461 if (desc) 1462 __gpiod_free(desc); 1463 } 1464 EXPORT_SYMBOL_GPL(gpiochip_free_own_desc); 1465 1466 /* 1467 * Drivers MUST set GPIO direction before making get/set calls. In 1468 * some cases this is done in early boot, before IRQs are enabled. 1469 * 1470 * As a rule these aren't called more than once (except for drivers 1471 * using the open-drain emulation idiom) so these are natural places 1472 * to accumulate extra debugging checks. Note that we can't (yet) 1473 * rely on gpio_request() having been called beforehand. 1474 */ 1475 1476 /** 1477 * gpiod_direction_input - set the GPIO direction to input 1478 * @desc: GPIO to set to input 1479 * 1480 * Set the direction of the passed GPIO to input, such as gpiod_get_value() can 1481 * be called safely on it. 1482 * 1483 * Return 0 in case of success, else an error code. 1484 */ 1485 int gpiod_direction_input(struct gpio_desc *desc) 1486 { 1487 struct gpio_chip *chip; 1488 int status = -EINVAL; 1489 1490 VALIDATE_DESC(desc); 1491 chip = desc->gdev->chip; 1492 1493 if (!chip->get || !chip->direction_input) { 1494 gpiod_warn(desc, 1495 "%s: missing get() or direction_input() operations\n", 1496 __func__); 1497 return -EIO; 1498 } 1499 1500 status = chip->direction_input(chip, gpio_chip_hwgpio(desc)); 1501 if (status == 0) 1502 clear_bit(FLAG_IS_OUT, &desc->flags); 1503 1504 trace_gpio_direction(desc_to_gpio(desc), 1, status); 1505 1506 return status; 1507 } 1508 EXPORT_SYMBOL_GPL(gpiod_direction_input); 1509 1510 static int _gpiod_direction_output_raw(struct gpio_desc *desc, int value) 1511 { 1512 struct gpio_chip *chip; 1513 int status = -EINVAL; 1514 1515 /* GPIOs used for IRQs shall not be set as output */ 1516 if (test_bit(FLAG_USED_AS_IRQ, &desc->flags)) { 1517 gpiod_err(desc, 1518 "%s: tried to set a GPIO tied to an IRQ as output\n", 1519 __func__); 1520 return -EIO; 1521 } 1522 1523 /* Open drain pin should not be driven to 1 */ 1524 if (value && test_bit(FLAG_OPEN_DRAIN, &desc->flags)) 1525 return gpiod_direction_input(desc); 1526 1527 /* Open source pin should not be driven to 0 */ 1528 if (!value && test_bit(FLAG_OPEN_SOURCE, &desc->flags)) 1529 return gpiod_direction_input(desc); 1530 1531 chip = desc->gdev->chip; 1532 if (!chip->set || !chip->direction_output) { 1533 gpiod_warn(desc, 1534 "%s: missing set() or direction_output() operations\n", 1535 __func__); 1536 return -EIO; 1537 } 1538 1539 status = chip->direction_output(chip, gpio_chip_hwgpio(desc), value); 1540 if (status == 0) 1541 set_bit(FLAG_IS_OUT, &desc->flags); 1542 trace_gpio_value(desc_to_gpio(desc), 0, value); 1543 trace_gpio_direction(desc_to_gpio(desc), 0, status); 1544 return status; 1545 } 1546 1547 /** 1548 * gpiod_direction_output_raw - set the GPIO direction to output 1549 * @desc: GPIO to set to output 1550 * @value: initial output value of the GPIO 1551 * 1552 * Set the direction of the passed GPIO to output, such as gpiod_set_value() can 1553 * be called safely on it. The initial value of the output must be specified 1554 * as raw value on the physical line without regard for the ACTIVE_LOW status. 1555 * 1556 * Return 0 in case of success, else an error code. 1557 */ 1558 int gpiod_direction_output_raw(struct gpio_desc *desc, int value) 1559 { 1560 VALIDATE_DESC(desc); 1561 return _gpiod_direction_output_raw(desc, value); 1562 } 1563 EXPORT_SYMBOL_GPL(gpiod_direction_output_raw); 1564 1565 /** 1566 * gpiod_direction_output - set the GPIO direction to output 1567 * @desc: GPIO to set to output 1568 * @value: initial output value of the GPIO 1569 * 1570 * Set the direction of the passed GPIO to output, such as gpiod_set_value() can 1571 * be called safely on it. The initial value of the output must be specified 1572 * as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into 1573 * account. 1574 * 1575 * Return 0 in case of success, else an error code. 1576 */ 1577 int gpiod_direction_output(struct gpio_desc *desc, int value) 1578 { 1579 VALIDATE_DESC(desc); 1580 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 1581 value = !value; 1582 return _gpiod_direction_output_raw(desc, value); 1583 } 1584 EXPORT_SYMBOL_GPL(gpiod_direction_output); 1585 1586 /** 1587 * gpiod_set_debounce - sets @debounce time for a @gpio 1588 * @gpio: the gpio to set debounce time 1589 * @debounce: debounce time is microseconds 1590 * 1591 * returns -ENOTSUPP if the controller does not support setting 1592 * debounce. 1593 */ 1594 int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce) 1595 { 1596 struct gpio_chip *chip; 1597 1598 VALIDATE_DESC(desc); 1599 chip = desc->gdev->chip; 1600 if (!chip->set || !chip->set_debounce) { 1601 gpiod_dbg(desc, 1602 "%s: missing set() or set_debounce() operations\n", 1603 __func__); 1604 return -ENOTSUPP; 1605 } 1606 1607 return chip->set_debounce(chip, gpio_chip_hwgpio(desc), debounce); 1608 } 1609 EXPORT_SYMBOL_GPL(gpiod_set_debounce); 1610 1611 /** 1612 * gpiod_is_active_low - test whether a GPIO is active-low or not 1613 * @desc: the gpio descriptor to test 1614 * 1615 * Returns 1 if the GPIO is active-low, 0 otherwise. 1616 */ 1617 int gpiod_is_active_low(const struct gpio_desc *desc) 1618 { 1619 VALIDATE_DESC(desc); 1620 return test_bit(FLAG_ACTIVE_LOW, &desc->flags); 1621 } 1622 EXPORT_SYMBOL_GPL(gpiod_is_active_low); 1623 1624 /* I/O calls are only valid after configuration completed; the relevant 1625 * "is this a valid GPIO" error checks should already have been done. 1626 * 1627 * "Get" operations are often inlinable as reading a pin value register, 1628 * and masking the relevant bit in that register. 1629 * 1630 * When "set" operations are inlinable, they involve writing that mask to 1631 * one register to set a low value, or a different register to set it high. 1632 * Otherwise locking is needed, so there may be little value to inlining. 1633 * 1634 *------------------------------------------------------------------------ 1635 * 1636 * IMPORTANT!!! The hot paths -- get/set value -- assume that callers 1637 * have requested the GPIO. That can include implicit requesting by 1638 * a direction setting call. Marking a gpio as requested locks its chip 1639 * in memory, guaranteeing that these table lookups need no more locking 1640 * and that gpiochip_remove() will fail. 1641 * 1642 * REVISIT when debugging, consider adding some instrumentation to ensure 1643 * that the GPIO was actually requested. 1644 */ 1645 1646 static int _gpiod_get_raw_value(const struct gpio_desc *desc) 1647 { 1648 struct gpio_chip *chip; 1649 int offset; 1650 int value; 1651 1652 chip = desc->gdev->chip; 1653 offset = gpio_chip_hwgpio(desc); 1654 value = chip->get ? chip->get(chip, offset) : -EIO; 1655 value = value < 0 ? value : !!value; 1656 trace_gpio_value(desc_to_gpio(desc), 1, value); 1657 return value; 1658 } 1659 1660 /** 1661 * gpiod_get_raw_value() - return a gpio's raw value 1662 * @desc: gpio whose value will be returned 1663 * 1664 * Return the GPIO's raw value, i.e. the value of the physical line disregarding 1665 * its ACTIVE_LOW status, or negative errno on failure. 1666 * 1667 * This function should be called from contexts where we cannot sleep, and will 1668 * complain if the GPIO chip functions potentially sleep. 1669 */ 1670 int gpiod_get_raw_value(const struct gpio_desc *desc) 1671 { 1672 VALIDATE_DESC(desc); 1673 /* Should be using gpio_get_value_cansleep() */ 1674 WARN_ON(desc->gdev->chip->can_sleep); 1675 return _gpiod_get_raw_value(desc); 1676 } 1677 EXPORT_SYMBOL_GPL(gpiod_get_raw_value); 1678 1679 /** 1680 * gpiod_get_value() - return a gpio's value 1681 * @desc: gpio whose value will be returned 1682 * 1683 * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into 1684 * account, or negative errno on failure. 1685 * 1686 * This function should be called from contexts where we cannot sleep, and will 1687 * complain if the GPIO chip functions potentially sleep. 1688 */ 1689 int gpiod_get_value(const struct gpio_desc *desc) 1690 { 1691 int value; 1692 1693 VALIDATE_DESC(desc); 1694 /* Should be using gpio_get_value_cansleep() */ 1695 WARN_ON(desc->gdev->chip->can_sleep); 1696 1697 value = _gpiod_get_raw_value(desc); 1698 if (value < 0) 1699 return value; 1700 1701 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 1702 value = !value; 1703 1704 return value; 1705 } 1706 EXPORT_SYMBOL_GPL(gpiod_get_value); 1707 1708 /* 1709 * _gpio_set_open_drain_value() - Set the open drain gpio's value. 1710 * @desc: gpio descriptor whose state need to be set. 1711 * @value: Non-zero for setting it HIGH otherwise it will set to LOW. 1712 */ 1713 static void _gpio_set_open_drain_value(struct gpio_desc *desc, bool value) 1714 { 1715 int err = 0; 1716 struct gpio_chip *chip = desc->gdev->chip; 1717 int offset = gpio_chip_hwgpio(desc); 1718 1719 if (value) { 1720 err = chip->direction_input(chip, offset); 1721 if (!err) 1722 clear_bit(FLAG_IS_OUT, &desc->flags); 1723 } else { 1724 err = chip->direction_output(chip, offset, 0); 1725 if (!err) 1726 set_bit(FLAG_IS_OUT, &desc->flags); 1727 } 1728 trace_gpio_direction(desc_to_gpio(desc), value, err); 1729 if (err < 0) 1730 gpiod_err(desc, 1731 "%s: Error in set_value for open drain err %d\n", 1732 __func__, err); 1733 } 1734 1735 /* 1736 * _gpio_set_open_source_value() - Set the open source gpio's value. 1737 * @desc: gpio descriptor whose state need to be set. 1738 * @value: Non-zero for setting it HIGH otherwise it will set to LOW. 1739 */ 1740 static void _gpio_set_open_source_value(struct gpio_desc *desc, bool value) 1741 { 1742 int err = 0; 1743 struct gpio_chip *chip = desc->gdev->chip; 1744 int offset = gpio_chip_hwgpio(desc); 1745 1746 if (value) { 1747 err = chip->direction_output(chip, offset, 1); 1748 if (!err) 1749 set_bit(FLAG_IS_OUT, &desc->flags); 1750 } else { 1751 err = chip->direction_input(chip, offset); 1752 if (!err) 1753 clear_bit(FLAG_IS_OUT, &desc->flags); 1754 } 1755 trace_gpio_direction(desc_to_gpio(desc), !value, err); 1756 if (err < 0) 1757 gpiod_err(desc, 1758 "%s: Error in set_value for open source err %d\n", 1759 __func__, err); 1760 } 1761 1762 static void _gpiod_set_raw_value(struct gpio_desc *desc, bool value) 1763 { 1764 struct gpio_chip *chip; 1765 1766 chip = desc->gdev->chip; 1767 trace_gpio_value(desc_to_gpio(desc), 0, value); 1768 if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) 1769 _gpio_set_open_drain_value(desc, value); 1770 else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) 1771 _gpio_set_open_source_value(desc, value); 1772 else 1773 chip->set(chip, gpio_chip_hwgpio(desc), value); 1774 } 1775 1776 /* 1777 * set multiple outputs on the same chip; 1778 * use the chip's set_multiple function if available; 1779 * otherwise set the outputs sequentially; 1780 * @mask: bit mask array; one bit per output; BITS_PER_LONG bits per word 1781 * defines which outputs are to be changed 1782 * @bits: bit value array; one bit per output; BITS_PER_LONG bits per word 1783 * defines the values the outputs specified by mask are to be set to 1784 */ 1785 static void gpio_chip_set_multiple(struct gpio_chip *chip, 1786 unsigned long *mask, unsigned long *bits) 1787 { 1788 if (chip->set_multiple) { 1789 chip->set_multiple(chip, mask, bits); 1790 } else { 1791 int i; 1792 for (i = 0; i < chip->ngpio; i++) { 1793 if (mask[BIT_WORD(i)] == 0) { 1794 /* no more set bits in this mask word; 1795 * skip ahead to the next word */ 1796 i = (BIT_WORD(i) + 1) * BITS_PER_LONG - 1; 1797 continue; 1798 } 1799 /* set outputs if the corresponding mask bit is set */ 1800 if (__test_and_clear_bit(i, mask)) 1801 chip->set(chip, i, test_bit(i, bits)); 1802 } 1803 } 1804 } 1805 1806 static void gpiod_set_array_value_priv(bool raw, bool can_sleep, 1807 unsigned int array_size, 1808 struct gpio_desc **desc_array, 1809 int *value_array) 1810 { 1811 int i = 0; 1812 1813 while (i < array_size) { 1814 struct gpio_chip *chip = desc_array[i]->gdev->chip; 1815 unsigned long mask[BITS_TO_LONGS(chip->ngpio)]; 1816 unsigned long bits[BITS_TO_LONGS(chip->ngpio)]; 1817 int count = 0; 1818 1819 if (!can_sleep) 1820 WARN_ON(chip->can_sleep); 1821 1822 memset(mask, 0, sizeof(mask)); 1823 do { 1824 struct gpio_desc *desc = desc_array[i]; 1825 int hwgpio = gpio_chip_hwgpio(desc); 1826 int value = value_array[i]; 1827 1828 if (!raw && test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 1829 value = !value; 1830 trace_gpio_value(desc_to_gpio(desc), 0, value); 1831 /* 1832 * collect all normal outputs belonging to the same chip 1833 * open drain and open source outputs are set individually 1834 */ 1835 if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) { 1836 _gpio_set_open_drain_value(desc, value); 1837 } else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) { 1838 _gpio_set_open_source_value(desc, value); 1839 } else { 1840 __set_bit(hwgpio, mask); 1841 if (value) 1842 __set_bit(hwgpio, bits); 1843 else 1844 __clear_bit(hwgpio, bits); 1845 count++; 1846 } 1847 i++; 1848 } while ((i < array_size) && 1849 (desc_array[i]->gdev->chip == chip)); 1850 /* push collected bits to outputs */ 1851 if (count != 0) 1852 gpio_chip_set_multiple(chip, mask, bits); 1853 } 1854 } 1855 1856 /** 1857 * gpiod_set_raw_value() - assign a gpio's raw value 1858 * @desc: gpio whose value will be assigned 1859 * @value: value to assign 1860 * 1861 * Set the raw value of the GPIO, i.e. the value of its physical line without 1862 * regard for its ACTIVE_LOW status. 1863 * 1864 * This function should be called from contexts where we cannot sleep, and will 1865 * complain if the GPIO chip functions potentially sleep. 1866 */ 1867 void gpiod_set_raw_value(struct gpio_desc *desc, int value) 1868 { 1869 VALIDATE_DESC_VOID(desc); 1870 /* Should be using gpiod_set_value_cansleep() */ 1871 WARN_ON(desc->gdev->chip->can_sleep); 1872 _gpiod_set_raw_value(desc, value); 1873 } 1874 EXPORT_SYMBOL_GPL(gpiod_set_raw_value); 1875 1876 /** 1877 * gpiod_set_value() - assign a gpio's value 1878 * @desc: gpio whose value will be assigned 1879 * @value: value to assign 1880 * 1881 * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into 1882 * account 1883 * 1884 * This function should be called from contexts where we cannot sleep, and will 1885 * complain if the GPIO chip functions potentially sleep. 1886 */ 1887 void gpiod_set_value(struct gpio_desc *desc, int value) 1888 { 1889 VALIDATE_DESC_VOID(desc); 1890 /* Should be using gpiod_set_value_cansleep() */ 1891 WARN_ON(desc->gdev->chip->can_sleep); 1892 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 1893 value = !value; 1894 _gpiod_set_raw_value(desc, value); 1895 } 1896 EXPORT_SYMBOL_GPL(gpiod_set_value); 1897 1898 /** 1899 * gpiod_set_raw_array_value() - assign values to an array of GPIOs 1900 * @array_size: number of elements in the descriptor / value arrays 1901 * @desc_array: array of GPIO descriptors whose values will be assigned 1902 * @value_array: array of values to assign 1903 * 1904 * Set the raw values of the GPIOs, i.e. the values of the physical lines 1905 * without regard for their ACTIVE_LOW status. 1906 * 1907 * This function should be called from contexts where we cannot sleep, and will 1908 * complain if the GPIO chip functions potentially sleep. 1909 */ 1910 void gpiod_set_raw_array_value(unsigned int array_size, 1911 struct gpio_desc **desc_array, int *value_array) 1912 { 1913 if (!desc_array) 1914 return; 1915 gpiod_set_array_value_priv(true, false, array_size, desc_array, 1916 value_array); 1917 } 1918 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value); 1919 1920 /** 1921 * gpiod_set_array_value() - assign values to an array of GPIOs 1922 * @array_size: number of elements in the descriptor / value arrays 1923 * @desc_array: array of GPIO descriptors whose values will be assigned 1924 * @value_array: array of values to assign 1925 * 1926 * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status 1927 * into account. 1928 * 1929 * This function should be called from contexts where we cannot sleep, and will 1930 * complain if the GPIO chip functions potentially sleep. 1931 */ 1932 void gpiod_set_array_value(unsigned int array_size, 1933 struct gpio_desc **desc_array, int *value_array) 1934 { 1935 if (!desc_array) 1936 return; 1937 gpiod_set_array_value_priv(false, false, array_size, desc_array, 1938 value_array); 1939 } 1940 EXPORT_SYMBOL_GPL(gpiod_set_array_value); 1941 1942 /** 1943 * gpiod_cansleep() - report whether gpio value access may sleep 1944 * @desc: gpio to check 1945 * 1946 */ 1947 int gpiod_cansleep(const struct gpio_desc *desc) 1948 { 1949 VALIDATE_DESC(desc); 1950 return desc->gdev->chip->can_sleep; 1951 } 1952 EXPORT_SYMBOL_GPL(gpiod_cansleep); 1953 1954 /** 1955 * gpiod_to_irq() - return the IRQ corresponding to a GPIO 1956 * @desc: gpio whose IRQ will be returned (already requested) 1957 * 1958 * Return the IRQ corresponding to the passed GPIO, or an error code in case of 1959 * error. 1960 */ 1961 int gpiod_to_irq(const struct gpio_desc *desc) 1962 { 1963 struct gpio_chip *chip; 1964 int offset; 1965 1966 VALIDATE_DESC(desc); 1967 chip = desc->gdev->chip; 1968 offset = gpio_chip_hwgpio(desc); 1969 return chip->to_irq ? chip->to_irq(chip, offset) : -ENXIO; 1970 } 1971 EXPORT_SYMBOL_GPL(gpiod_to_irq); 1972 1973 /** 1974 * gpiochip_lock_as_irq() - lock a GPIO to be used as IRQ 1975 * @chip: the chip the GPIO to lock belongs to 1976 * @offset: the offset of the GPIO to lock as IRQ 1977 * 1978 * This is used directly by GPIO drivers that want to lock down 1979 * a certain GPIO line to be used for IRQs. 1980 */ 1981 int gpiochip_lock_as_irq(struct gpio_chip *chip, unsigned int offset) 1982 { 1983 if (offset >= chip->ngpio) 1984 return -EINVAL; 1985 1986 if (test_bit(FLAG_IS_OUT, &chip->gpiodev->descs[offset].flags)) { 1987 chip_err(chip, 1988 "%s: tried to flag a GPIO set as output for IRQ\n", 1989 __func__); 1990 return -EIO; 1991 } 1992 1993 set_bit(FLAG_USED_AS_IRQ, &chip->gpiodev->descs[offset].flags); 1994 return 0; 1995 } 1996 EXPORT_SYMBOL_GPL(gpiochip_lock_as_irq); 1997 1998 /** 1999 * gpiochip_unlock_as_irq() - unlock a GPIO used as IRQ 2000 * @chip: the chip the GPIO to lock belongs to 2001 * @offset: the offset of the GPIO to lock as IRQ 2002 * 2003 * This is used directly by GPIO drivers that want to indicate 2004 * that a certain GPIO is no longer used exclusively for IRQ. 2005 */ 2006 void gpiochip_unlock_as_irq(struct gpio_chip *chip, unsigned int offset) 2007 { 2008 if (offset >= chip->ngpio) 2009 return; 2010 2011 clear_bit(FLAG_USED_AS_IRQ, &chip->gpiodev->descs[offset].flags); 2012 } 2013 EXPORT_SYMBOL_GPL(gpiochip_unlock_as_irq); 2014 2015 bool gpiochip_line_is_irq(struct gpio_chip *chip, unsigned int offset) 2016 { 2017 if (offset >= chip->ngpio) 2018 return false; 2019 2020 return test_bit(FLAG_USED_AS_IRQ, &chip->gpiodev->descs[offset].flags); 2021 } 2022 EXPORT_SYMBOL_GPL(gpiochip_line_is_irq); 2023 2024 bool gpiochip_line_is_open_drain(struct gpio_chip *chip, unsigned int offset) 2025 { 2026 if (offset >= chip->ngpio) 2027 return false; 2028 2029 return test_bit(FLAG_OPEN_DRAIN, &chip->gpiodev->descs[offset].flags); 2030 } 2031 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_drain); 2032 2033 bool gpiochip_line_is_open_source(struct gpio_chip *chip, unsigned int offset) 2034 { 2035 if (offset >= chip->ngpio) 2036 return false; 2037 2038 return test_bit(FLAG_OPEN_SOURCE, &chip->gpiodev->descs[offset].flags); 2039 } 2040 EXPORT_SYMBOL_GPL(gpiochip_line_is_open_source); 2041 2042 /** 2043 * gpiod_get_raw_value_cansleep() - return a gpio's raw value 2044 * @desc: gpio whose value will be returned 2045 * 2046 * Return the GPIO's raw value, i.e. the value of the physical line disregarding 2047 * its ACTIVE_LOW status, or negative errno on failure. 2048 * 2049 * This function is to be called from contexts that can sleep. 2050 */ 2051 int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc) 2052 { 2053 might_sleep_if(extra_checks); 2054 VALIDATE_DESC(desc); 2055 return _gpiod_get_raw_value(desc); 2056 } 2057 EXPORT_SYMBOL_GPL(gpiod_get_raw_value_cansleep); 2058 2059 /** 2060 * gpiod_get_value_cansleep() - return a gpio's value 2061 * @desc: gpio whose value will be returned 2062 * 2063 * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into 2064 * account, or negative errno on failure. 2065 * 2066 * This function is to be called from contexts that can sleep. 2067 */ 2068 int gpiod_get_value_cansleep(const struct gpio_desc *desc) 2069 { 2070 int value; 2071 2072 might_sleep_if(extra_checks); 2073 VALIDATE_DESC(desc); 2074 value = _gpiod_get_raw_value(desc); 2075 if (value < 0) 2076 return value; 2077 2078 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 2079 value = !value; 2080 2081 return value; 2082 } 2083 EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep); 2084 2085 /** 2086 * gpiod_set_raw_value_cansleep() - assign a gpio's raw value 2087 * @desc: gpio whose value will be assigned 2088 * @value: value to assign 2089 * 2090 * Set the raw value of the GPIO, i.e. the value of its physical line without 2091 * regard for its ACTIVE_LOW status. 2092 * 2093 * This function is to be called from contexts that can sleep. 2094 */ 2095 void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value) 2096 { 2097 might_sleep_if(extra_checks); 2098 VALIDATE_DESC_VOID(desc); 2099 _gpiod_set_raw_value(desc, value); 2100 } 2101 EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep); 2102 2103 /** 2104 * gpiod_set_value_cansleep() - assign a gpio's value 2105 * @desc: gpio whose value will be assigned 2106 * @value: value to assign 2107 * 2108 * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into 2109 * account 2110 * 2111 * This function is to be called from contexts that can sleep. 2112 */ 2113 void gpiod_set_value_cansleep(struct gpio_desc *desc, int value) 2114 { 2115 might_sleep_if(extra_checks); 2116 VALIDATE_DESC_VOID(desc); 2117 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 2118 value = !value; 2119 _gpiod_set_raw_value(desc, value); 2120 } 2121 EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep); 2122 2123 /** 2124 * gpiod_set_raw_array_value_cansleep() - assign values to an array of GPIOs 2125 * @array_size: number of elements in the descriptor / value arrays 2126 * @desc_array: array of GPIO descriptors whose values will be assigned 2127 * @value_array: array of values to assign 2128 * 2129 * Set the raw values of the GPIOs, i.e. the values of the physical lines 2130 * without regard for their ACTIVE_LOW status. 2131 * 2132 * This function is to be called from contexts that can sleep. 2133 */ 2134 void gpiod_set_raw_array_value_cansleep(unsigned int array_size, 2135 struct gpio_desc **desc_array, 2136 int *value_array) 2137 { 2138 might_sleep_if(extra_checks); 2139 if (!desc_array) 2140 return; 2141 gpiod_set_array_value_priv(true, true, array_size, desc_array, 2142 value_array); 2143 } 2144 EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value_cansleep); 2145 2146 /** 2147 * gpiod_set_array_value_cansleep() - assign values to an array of GPIOs 2148 * @array_size: number of elements in the descriptor / value arrays 2149 * @desc_array: array of GPIO descriptors whose values will be assigned 2150 * @value_array: array of values to assign 2151 * 2152 * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status 2153 * into account. 2154 * 2155 * This function is to be called from contexts that can sleep. 2156 */ 2157 void gpiod_set_array_value_cansleep(unsigned int array_size, 2158 struct gpio_desc **desc_array, 2159 int *value_array) 2160 { 2161 might_sleep_if(extra_checks); 2162 if (!desc_array) 2163 return; 2164 gpiod_set_array_value_priv(false, true, array_size, desc_array, 2165 value_array); 2166 } 2167 EXPORT_SYMBOL_GPL(gpiod_set_array_value_cansleep); 2168 2169 /** 2170 * gpiod_add_lookup_table() - register GPIO device consumers 2171 * @table: table of consumers to register 2172 */ 2173 void gpiod_add_lookup_table(struct gpiod_lookup_table *table) 2174 { 2175 mutex_lock(&gpio_lookup_lock); 2176 2177 list_add_tail(&table->list, &gpio_lookup_list); 2178 2179 mutex_unlock(&gpio_lookup_lock); 2180 } 2181 2182 /** 2183 * gpiod_remove_lookup_table() - unregister GPIO device consumers 2184 * @table: table of consumers to unregister 2185 */ 2186 void gpiod_remove_lookup_table(struct gpiod_lookup_table *table) 2187 { 2188 mutex_lock(&gpio_lookup_lock); 2189 2190 list_del(&table->list); 2191 2192 mutex_unlock(&gpio_lookup_lock); 2193 } 2194 2195 static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id, 2196 unsigned int idx, 2197 enum gpio_lookup_flags *flags) 2198 { 2199 char prop_name[32]; /* 32 is max size of property name */ 2200 enum of_gpio_flags of_flags; 2201 struct gpio_desc *desc; 2202 unsigned int i; 2203 2204 for (i = 0; i < ARRAY_SIZE(gpio_suffixes); i++) { 2205 if (con_id) 2206 snprintf(prop_name, sizeof(prop_name), "%s-%s", con_id, 2207 gpio_suffixes[i]); 2208 else 2209 snprintf(prop_name, sizeof(prop_name), "%s", 2210 gpio_suffixes[i]); 2211 2212 desc = of_get_named_gpiod_flags(dev->of_node, prop_name, idx, 2213 &of_flags); 2214 if (!IS_ERR(desc) || (PTR_ERR(desc) == -EPROBE_DEFER)) 2215 break; 2216 } 2217 2218 if (IS_ERR(desc)) 2219 return desc; 2220 2221 if (of_flags & OF_GPIO_ACTIVE_LOW) 2222 *flags |= GPIO_ACTIVE_LOW; 2223 2224 if (of_flags & OF_GPIO_SINGLE_ENDED) { 2225 if (of_flags & OF_GPIO_ACTIVE_LOW) 2226 *flags |= GPIO_OPEN_DRAIN; 2227 else 2228 *flags |= GPIO_OPEN_SOURCE; 2229 } 2230 2231 return desc; 2232 } 2233 2234 static struct gpio_desc *acpi_find_gpio(struct device *dev, const char *con_id, 2235 unsigned int idx, 2236 enum gpio_lookup_flags *flags) 2237 { 2238 struct acpi_device *adev = ACPI_COMPANION(dev); 2239 struct acpi_gpio_info info; 2240 struct gpio_desc *desc; 2241 char propname[32]; 2242 int i; 2243 2244 /* Try first from _DSD */ 2245 for (i = 0; i < ARRAY_SIZE(gpio_suffixes); i++) { 2246 if (con_id && strcmp(con_id, "gpios")) { 2247 snprintf(propname, sizeof(propname), "%s-%s", 2248 con_id, gpio_suffixes[i]); 2249 } else { 2250 snprintf(propname, sizeof(propname), "%s", 2251 gpio_suffixes[i]); 2252 } 2253 2254 desc = acpi_get_gpiod_by_index(adev, propname, idx, &info); 2255 if (!IS_ERR(desc) || (PTR_ERR(desc) == -EPROBE_DEFER)) 2256 break; 2257 } 2258 2259 /* Then from plain _CRS GPIOs */ 2260 if (IS_ERR(desc)) { 2261 if (!acpi_can_fallback_to_crs(adev, con_id)) 2262 return ERR_PTR(-ENOENT); 2263 2264 desc = acpi_get_gpiod_by_index(adev, NULL, idx, &info); 2265 if (IS_ERR(desc)) 2266 return desc; 2267 } 2268 2269 if (info.polarity == GPIO_ACTIVE_LOW) 2270 *flags |= GPIO_ACTIVE_LOW; 2271 2272 return desc; 2273 } 2274 2275 static struct gpiod_lookup_table *gpiod_find_lookup_table(struct device *dev) 2276 { 2277 const char *dev_id = dev ? dev_name(dev) : NULL; 2278 struct gpiod_lookup_table *table; 2279 2280 mutex_lock(&gpio_lookup_lock); 2281 2282 list_for_each_entry(table, &gpio_lookup_list, list) { 2283 if (table->dev_id && dev_id) { 2284 /* 2285 * Valid strings on both ends, must be identical to have 2286 * a match 2287 */ 2288 if (!strcmp(table->dev_id, dev_id)) 2289 goto found; 2290 } else { 2291 /* 2292 * One of the pointers is NULL, so both must be to have 2293 * a match 2294 */ 2295 if (dev_id == table->dev_id) 2296 goto found; 2297 } 2298 } 2299 table = NULL; 2300 2301 found: 2302 mutex_unlock(&gpio_lookup_lock); 2303 return table; 2304 } 2305 2306 static struct gpio_desc *gpiod_find(struct device *dev, const char *con_id, 2307 unsigned int idx, 2308 enum gpio_lookup_flags *flags) 2309 { 2310 struct gpio_desc *desc = ERR_PTR(-ENOENT); 2311 struct gpiod_lookup_table *table; 2312 struct gpiod_lookup *p; 2313 2314 table = gpiod_find_lookup_table(dev); 2315 if (!table) 2316 return desc; 2317 2318 for (p = &table->table[0]; p->chip_label; p++) { 2319 struct gpio_chip *chip; 2320 2321 /* idx must always match exactly */ 2322 if (p->idx != idx) 2323 continue; 2324 2325 /* If the lookup entry has a con_id, require exact match */ 2326 if (p->con_id && (!con_id || strcmp(p->con_id, con_id))) 2327 continue; 2328 2329 chip = find_chip_by_name(p->chip_label); 2330 2331 if (!chip) { 2332 dev_err(dev, "cannot find GPIO chip %s\n", 2333 p->chip_label); 2334 return ERR_PTR(-ENODEV); 2335 } 2336 2337 if (chip->ngpio <= p->chip_hwnum) { 2338 dev_err(dev, 2339 "requested GPIO %d is out of range [0..%d] for chip %s\n", 2340 idx, chip->ngpio, chip->label); 2341 return ERR_PTR(-EINVAL); 2342 } 2343 2344 desc = gpiochip_get_desc(chip, p->chip_hwnum); 2345 *flags = p->flags; 2346 2347 return desc; 2348 } 2349 2350 return desc; 2351 } 2352 2353 static int dt_gpio_count(struct device *dev, const char *con_id) 2354 { 2355 int ret; 2356 char propname[32]; 2357 unsigned int i; 2358 2359 for (i = 0; i < ARRAY_SIZE(gpio_suffixes); i++) { 2360 if (con_id) 2361 snprintf(propname, sizeof(propname), "%s-%s", 2362 con_id, gpio_suffixes[i]); 2363 else 2364 snprintf(propname, sizeof(propname), "%s", 2365 gpio_suffixes[i]); 2366 2367 ret = of_gpio_named_count(dev->of_node, propname); 2368 if (ret >= 0) 2369 break; 2370 } 2371 return ret; 2372 } 2373 2374 static int platform_gpio_count(struct device *dev, const char *con_id) 2375 { 2376 struct gpiod_lookup_table *table; 2377 struct gpiod_lookup *p; 2378 unsigned int count = 0; 2379 2380 table = gpiod_find_lookup_table(dev); 2381 if (!table) 2382 return -ENOENT; 2383 2384 for (p = &table->table[0]; p->chip_label; p++) { 2385 if ((con_id && p->con_id && !strcmp(con_id, p->con_id)) || 2386 (!con_id && !p->con_id)) 2387 count++; 2388 } 2389 if (!count) 2390 return -ENOENT; 2391 2392 return count; 2393 } 2394 2395 /** 2396 * gpiod_count - return the number of GPIOs associated with a device / function 2397 * or -ENOENT if no GPIO has been assigned to the requested function 2398 * @dev: GPIO consumer, can be NULL for system-global GPIOs 2399 * @con_id: function within the GPIO consumer 2400 */ 2401 int gpiod_count(struct device *dev, const char *con_id) 2402 { 2403 int count = -ENOENT; 2404 2405 if (IS_ENABLED(CONFIG_OF) && dev && dev->of_node) 2406 count = dt_gpio_count(dev, con_id); 2407 else if (IS_ENABLED(CONFIG_ACPI) && dev && ACPI_HANDLE(dev)) 2408 count = acpi_gpio_count(dev, con_id); 2409 2410 if (count < 0) 2411 count = platform_gpio_count(dev, con_id); 2412 2413 return count; 2414 } 2415 EXPORT_SYMBOL_GPL(gpiod_count); 2416 2417 /** 2418 * gpiod_get - obtain a GPIO for a given GPIO function 2419 * @dev: GPIO consumer, can be NULL for system-global GPIOs 2420 * @con_id: function within the GPIO consumer 2421 * @flags: optional GPIO initialization flags 2422 * 2423 * Return the GPIO descriptor corresponding to the function con_id of device 2424 * dev, -ENOENT if no GPIO has been assigned to the requested function, or 2425 * another IS_ERR() code if an error occurred while trying to acquire the GPIO. 2426 */ 2427 struct gpio_desc *__must_check gpiod_get(struct device *dev, const char *con_id, 2428 enum gpiod_flags flags) 2429 { 2430 return gpiod_get_index(dev, con_id, 0, flags); 2431 } 2432 EXPORT_SYMBOL_GPL(gpiod_get); 2433 2434 /** 2435 * gpiod_get_optional - obtain an optional GPIO for a given GPIO function 2436 * @dev: GPIO consumer, can be NULL for system-global GPIOs 2437 * @con_id: function within the GPIO consumer 2438 * @flags: optional GPIO initialization flags 2439 * 2440 * This is equivalent to gpiod_get(), except that when no GPIO was assigned to 2441 * the requested function it will return NULL. This is convenient for drivers 2442 * that need to handle optional GPIOs. 2443 */ 2444 struct gpio_desc *__must_check gpiod_get_optional(struct device *dev, 2445 const char *con_id, 2446 enum gpiod_flags flags) 2447 { 2448 return gpiod_get_index_optional(dev, con_id, 0, flags); 2449 } 2450 EXPORT_SYMBOL_GPL(gpiod_get_optional); 2451 2452 /** 2453 * gpiod_parse_flags - helper function to parse GPIO lookup flags 2454 * @desc: gpio to be setup 2455 * @lflags: gpio_lookup_flags - returned from of_find_gpio() or 2456 * of_get_gpio_hog() 2457 * 2458 * Set the GPIO descriptor flags based on the given GPIO lookup flags. 2459 */ 2460 static void gpiod_parse_flags(struct gpio_desc *desc, unsigned long lflags) 2461 { 2462 if (lflags & GPIO_ACTIVE_LOW) 2463 set_bit(FLAG_ACTIVE_LOW, &desc->flags); 2464 if (lflags & GPIO_OPEN_DRAIN) 2465 set_bit(FLAG_OPEN_DRAIN, &desc->flags); 2466 if (lflags & GPIO_OPEN_SOURCE) 2467 set_bit(FLAG_OPEN_SOURCE, &desc->flags); 2468 } 2469 2470 /** 2471 * gpiod_configure_flags - helper function to configure a given GPIO 2472 * @desc: gpio whose value will be assigned 2473 * @con_id: function within the GPIO consumer 2474 * @dflags: gpiod_flags - optional GPIO initialization flags 2475 * 2476 * Return 0 on success, -ENOENT if no GPIO has been assigned to the 2477 * requested function and/or index, or another IS_ERR() code if an error 2478 * occurred while trying to acquire the GPIO. 2479 */ 2480 static int gpiod_configure_flags(struct gpio_desc *desc, const char *con_id, 2481 enum gpiod_flags dflags) 2482 { 2483 int status; 2484 2485 /* No particular flag request, return here... */ 2486 if (!(dflags & GPIOD_FLAGS_BIT_DIR_SET)) { 2487 pr_debug("no flags found for %s\n", con_id); 2488 return 0; 2489 } 2490 2491 /* Process flags */ 2492 if (dflags & GPIOD_FLAGS_BIT_DIR_OUT) 2493 status = gpiod_direction_output(desc, 2494 dflags & GPIOD_FLAGS_BIT_DIR_VAL); 2495 else 2496 status = gpiod_direction_input(desc); 2497 2498 return status; 2499 } 2500 2501 /** 2502 * gpiod_get_index - obtain a GPIO from a multi-index GPIO function 2503 * @dev: GPIO consumer, can be NULL for system-global GPIOs 2504 * @con_id: function within the GPIO consumer 2505 * @idx: index of the GPIO to obtain in the consumer 2506 * @flags: optional GPIO initialization flags 2507 * 2508 * This variant of gpiod_get() allows to access GPIOs other than the first 2509 * defined one for functions that define several GPIOs. 2510 * 2511 * Return a valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the 2512 * requested function and/or index, or another IS_ERR() code if an error 2513 * occurred while trying to acquire the GPIO. 2514 */ 2515 struct gpio_desc *__must_check gpiod_get_index(struct device *dev, 2516 const char *con_id, 2517 unsigned int idx, 2518 enum gpiod_flags flags) 2519 { 2520 struct gpio_desc *desc = NULL; 2521 int status; 2522 enum gpio_lookup_flags lookupflags = 0; 2523 2524 dev_dbg(dev, "GPIO lookup for consumer %s\n", con_id); 2525 2526 if (dev) { 2527 /* Using device tree? */ 2528 if (IS_ENABLED(CONFIG_OF) && dev->of_node) { 2529 dev_dbg(dev, "using device tree for GPIO lookup\n"); 2530 desc = of_find_gpio(dev, con_id, idx, &lookupflags); 2531 } else if (ACPI_COMPANION(dev)) { 2532 dev_dbg(dev, "using ACPI for GPIO lookup\n"); 2533 desc = acpi_find_gpio(dev, con_id, idx, &lookupflags); 2534 } 2535 } 2536 2537 /* 2538 * Either we are not using DT or ACPI, or their lookup did not return 2539 * a result. In that case, use platform lookup as a fallback. 2540 */ 2541 if (!desc || desc == ERR_PTR(-ENOENT)) { 2542 dev_dbg(dev, "using lookup tables for GPIO lookup\n"); 2543 desc = gpiod_find(dev, con_id, idx, &lookupflags); 2544 } 2545 2546 if (IS_ERR(desc)) { 2547 dev_dbg(dev, "lookup for GPIO %s failed\n", con_id); 2548 return desc; 2549 } 2550 2551 gpiod_parse_flags(desc, lookupflags); 2552 2553 status = gpiod_request(desc, con_id); 2554 if (status < 0) 2555 return ERR_PTR(status); 2556 2557 status = gpiod_configure_flags(desc, con_id, flags); 2558 if (status < 0) { 2559 dev_dbg(dev, "setup of GPIO %s failed\n", con_id); 2560 gpiod_put(desc); 2561 return ERR_PTR(status); 2562 } 2563 2564 return desc; 2565 } 2566 EXPORT_SYMBOL_GPL(gpiod_get_index); 2567 2568 /** 2569 * fwnode_get_named_gpiod - obtain a GPIO from firmware node 2570 * @fwnode: handle of the firmware node 2571 * @propname: name of the firmware property representing the GPIO 2572 * 2573 * This function can be used for drivers that get their configuration 2574 * from firmware. 2575 * 2576 * Function properly finds the corresponding GPIO using whatever is the 2577 * underlying firmware interface and then makes sure that the GPIO 2578 * descriptor is requested before it is returned to the caller. 2579 * 2580 * In case of error an ERR_PTR() is returned. 2581 */ 2582 struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode, 2583 const char *propname) 2584 { 2585 struct gpio_desc *desc = ERR_PTR(-ENODEV); 2586 bool active_low = false; 2587 bool single_ended = false; 2588 int ret; 2589 2590 if (!fwnode) 2591 return ERR_PTR(-EINVAL); 2592 2593 if (is_of_node(fwnode)) { 2594 enum of_gpio_flags flags; 2595 2596 desc = of_get_named_gpiod_flags(to_of_node(fwnode), propname, 0, 2597 &flags); 2598 if (!IS_ERR(desc)) { 2599 active_low = flags & OF_GPIO_ACTIVE_LOW; 2600 single_ended = flags & OF_GPIO_SINGLE_ENDED; 2601 } 2602 } else if (is_acpi_node(fwnode)) { 2603 struct acpi_gpio_info info; 2604 2605 desc = acpi_node_get_gpiod(fwnode, propname, 0, &info); 2606 if (!IS_ERR(desc)) 2607 active_low = info.polarity == GPIO_ACTIVE_LOW; 2608 } 2609 2610 if (IS_ERR(desc)) 2611 return desc; 2612 2613 if (active_low) 2614 set_bit(FLAG_ACTIVE_LOW, &desc->flags); 2615 2616 if (single_ended) { 2617 if (active_low) 2618 set_bit(FLAG_OPEN_DRAIN, &desc->flags); 2619 else 2620 set_bit(FLAG_OPEN_SOURCE, &desc->flags); 2621 } 2622 2623 ret = gpiod_request(desc, NULL); 2624 if (ret) 2625 return ERR_PTR(ret); 2626 2627 return desc; 2628 } 2629 EXPORT_SYMBOL_GPL(fwnode_get_named_gpiod); 2630 2631 /** 2632 * gpiod_get_index_optional - obtain an optional GPIO from a multi-index GPIO 2633 * function 2634 * @dev: GPIO consumer, can be NULL for system-global GPIOs 2635 * @con_id: function within the GPIO consumer 2636 * @index: index of the GPIO to obtain in the consumer 2637 * @flags: optional GPIO initialization flags 2638 * 2639 * This is equivalent to gpiod_get_index(), except that when no GPIO with the 2640 * specified index was assigned to the requested function it will return NULL. 2641 * This is convenient for drivers that need to handle optional GPIOs. 2642 */ 2643 struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev, 2644 const char *con_id, 2645 unsigned int index, 2646 enum gpiod_flags flags) 2647 { 2648 struct gpio_desc *desc; 2649 2650 desc = gpiod_get_index(dev, con_id, index, flags); 2651 if (IS_ERR(desc)) { 2652 if (PTR_ERR(desc) == -ENOENT) 2653 return NULL; 2654 } 2655 2656 return desc; 2657 } 2658 EXPORT_SYMBOL_GPL(gpiod_get_index_optional); 2659 2660 /** 2661 * gpiod_hog - Hog the specified GPIO desc given the provided flags 2662 * @desc: gpio whose value will be assigned 2663 * @name: gpio line name 2664 * @lflags: gpio_lookup_flags - returned from of_find_gpio() or 2665 * of_get_gpio_hog() 2666 * @dflags: gpiod_flags - optional GPIO initialization flags 2667 */ 2668 int gpiod_hog(struct gpio_desc *desc, const char *name, 2669 unsigned long lflags, enum gpiod_flags dflags) 2670 { 2671 struct gpio_chip *chip; 2672 struct gpio_desc *local_desc; 2673 int hwnum; 2674 int status; 2675 2676 chip = gpiod_to_chip(desc); 2677 hwnum = gpio_chip_hwgpio(desc); 2678 2679 gpiod_parse_flags(desc, lflags); 2680 2681 local_desc = gpiochip_request_own_desc(chip, hwnum, name); 2682 if (IS_ERR(local_desc)) { 2683 pr_err("requesting hog GPIO %s (chip %s, offset %d) failed\n", 2684 name, chip->label, hwnum); 2685 return PTR_ERR(local_desc); 2686 } 2687 2688 status = gpiod_configure_flags(desc, name, dflags); 2689 if (status < 0) { 2690 pr_err("setup of hog GPIO %s (chip %s, offset %d) failed\n", 2691 name, chip->label, hwnum); 2692 gpiochip_free_own_desc(desc); 2693 return status; 2694 } 2695 2696 /* Mark GPIO as hogged so it can be identified and removed later */ 2697 set_bit(FLAG_IS_HOGGED, &desc->flags); 2698 2699 pr_info("GPIO line %d (%s) hogged as %s%s\n", 2700 desc_to_gpio(desc), name, 2701 (dflags&GPIOD_FLAGS_BIT_DIR_OUT) ? "output" : "input", 2702 (dflags&GPIOD_FLAGS_BIT_DIR_OUT) ? 2703 (dflags&GPIOD_FLAGS_BIT_DIR_VAL) ? "/high" : "/low":""); 2704 2705 return 0; 2706 } 2707 2708 /** 2709 * gpiochip_free_hogs - Scan gpio-controller chip and release GPIO hog 2710 * @chip: gpio chip to act on 2711 * 2712 * This is only used by of_gpiochip_remove to free hogged gpios 2713 */ 2714 static void gpiochip_free_hogs(struct gpio_chip *chip) 2715 { 2716 int id; 2717 2718 for (id = 0; id < chip->ngpio; id++) { 2719 if (test_bit(FLAG_IS_HOGGED, &chip->gpiodev->descs[id].flags)) 2720 gpiochip_free_own_desc(&chip->gpiodev->descs[id]); 2721 } 2722 } 2723 2724 /** 2725 * gpiod_get_array - obtain multiple GPIOs from a multi-index GPIO function 2726 * @dev: GPIO consumer, can be NULL for system-global GPIOs 2727 * @con_id: function within the GPIO consumer 2728 * @flags: optional GPIO initialization flags 2729 * 2730 * This function acquires all the GPIOs defined under a given function. 2731 * 2732 * Return a struct gpio_descs containing an array of descriptors, -ENOENT if 2733 * no GPIO has been assigned to the requested function, or another IS_ERR() 2734 * code if an error occurred while trying to acquire the GPIOs. 2735 */ 2736 struct gpio_descs *__must_check gpiod_get_array(struct device *dev, 2737 const char *con_id, 2738 enum gpiod_flags flags) 2739 { 2740 struct gpio_desc *desc; 2741 struct gpio_descs *descs; 2742 int count; 2743 2744 count = gpiod_count(dev, con_id); 2745 if (count < 0) 2746 return ERR_PTR(count); 2747 2748 descs = kzalloc(sizeof(*descs) + sizeof(descs->desc[0]) * count, 2749 GFP_KERNEL); 2750 if (!descs) 2751 return ERR_PTR(-ENOMEM); 2752 2753 for (descs->ndescs = 0; descs->ndescs < count; ) { 2754 desc = gpiod_get_index(dev, con_id, descs->ndescs, flags); 2755 if (IS_ERR(desc)) { 2756 gpiod_put_array(descs); 2757 return ERR_CAST(desc); 2758 } 2759 descs->desc[descs->ndescs] = desc; 2760 descs->ndescs++; 2761 } 2762 return descs; 2763 } 2764 EXPORT_SYMBOL_GPL(gpiod_get_array); 2765 2766 /** 2767 * gpiod_get_array_optional - obtain multiple GPIOs from a multi-index GPIO 2768 * function 2769 * @dev: GPIO consumer, can be NULL for system-global GPIOs 2770 * @con_id: function within the GPIO consumer 2771 * @flags: optional GPIO initialization flags 2772 * 2773 * This is equivalent to gpiod_get_array(), except that when no GPIO was 2774 * assigned to the requested function it will return NULL. 2775 */ 2776 struct gpio_descs *__must_check gpiod_get_array_optional(struct device *dev, 2777 const char *con_id, 2778 enum gpiod_flags flags) 2779 { 2780 struct gpio_descs *descs; 2781 2782 descs = gpiod_get_array(dev, con_id, flags); 2783 if (IS_ERR(descs) && (PTR_ERR(descs) == -ENOENT)) 2784 return NULL; 2785 2786 return descs; 2787 } 2788 EXPORT_SYMBOL_GPL(gpiod_get_array_optional); 2789 2790 /** 2791 * gpiod_put - dispose of a GPIO descriptor 2792 * @desc: GPIO descriptor to dispose of 2793 * 2794 * No descriptor can be used after gpiod_put() has been called on it. 2795 */ 2796 void gpiod_put(struct gpio_desc *desc) 2797 { 2798 gpiod_free(desc); 2799 } 2800 EXPORT_SYMBOL_GPL(gpiod_put); 2801 2802 /** 2803 * gpiod_put_array - dispose of multiple GPIO descriptors 2804 * @descs: struct gpio_descs containing an array of descriptors 2805 */ 2806 void gpiod_put_array(struct gpio_descs *descs) 2807 { 2808 unsigned int i; 2809 2810 for (i = 0; i < descs->ndescs; i++) 2811 gpiod_put(descs->desc[i]); 2812 2813 kfree(descs); 2814 } 2815 EXPORT_SYMBOL_GPL(gpiod_put_array); 2816 2817 static int __init gpiolib_dev_init(void) 2818 { 2819 int ret; 2820 2821 /* Register GPIO sysfs bus */ 2822 ret = bus_register(&gpio_bus_type); 2823 if (ret < 0) { 2824 pr_err("gpiolib: could not register GPIO bus type\n"); 2825 return ret; 2826 } 2827 2828 ret = alloc_chrdev_region(&gpio_devt, 0, GPIO_DEV_MAX, "gpiochip"); 2829 if (ret < 0) { 2830 pr_err("gpiolib: failed to allocate char dev region\n"); 2831 bus_unregister(&gpio_bus_type); 2832 } 2833 return ret; 2834 } 2835 core_initcall(gpiolib_dev_init); 2836 2837 #ifdef CONFIG_DEBUG_FS 2838 2839 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_device *gdev) 2840 { 2841 unsigned i; 2842 struct gpio_chip *chip = gdev->chip; 2843 unsigned gpio = gdev->base; 2844 struct gpio_desc *gdesc = &gdev->descs[0]; 2845 int is_out; 2846 int is_irq; 2847 2848 for (i = 0; i < gdev->ngpio; i++, gpio++, gdesc++) { 2849 if (!test_bit(FLAG_REQUESTED, &gdesc->flags)) { 2850 if (gdesc->name) { 2851 seq_printf(s, " gpio-%-3d (%-20.20s)\n", 2852 gpio, gdesc->name); 2853 } 2854 continue; 2855 } 2856 2857 gpiod_get_direction(gdesc); 2858 is_out = test_bit(FLAG_IS_OUT, &gdesc->flags); 2859 is_irq = test_bit(FLAG_USED_AS_IRQ, &gdesc->flags); 2860 seq_printf(s, " gpio-%-3d (%-20.20s|%-20.20s) %s %s %s", 2861 gpio, gdesc->name ? gdesc->name : "", gdesc->label, 2862 is_out ? "out" : "in ", 2863 chip->get 2864 ? (chip->get(chip, i) ? "hi" : "lo") 2865 : "? ", 2866 is_irq ? "IRQ" : " "); 2867 seq_printf(s, "\n"); 2868 } 2869 } 2870 2871 static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos) 2872 { 2873 unsigned long flags; 2874 struct gpio_device *gdev = NULL; 2875 loff_t index = *pos; 2876 2877 s->private = ""; 2878 2879 spin_lock_irqsave(&gpio_lock, flags); 2880 list_for_each_entry(gdev, &gpio_devices, list) 2881 if (index-- == 0) { 2882 spin_unlock_irqrestore(&gpio_lock, flags); 2883 return gdev; 2884 } 2885 spin_unlock_irqrestore(&gpio_lock, flags); 2886 2887 return NULL; 2888 } 2889 2890 static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos) 2891 { 2892 unsigned long flags; 2893 struct gpio_device *gdev = v; 2894 void *ret = NULL; 2895 2896 spin_lock_irqsave(&gpio_lock, flags); 2897 if (list_is_last(&gdev->list, &gpio_devices)) 2898 ret = NULL; 2899 else 2900 ret = list_entry(gdev->list.next, struct gpio_device, list); 2901 spin_unlock_irqrestore(&gpio_lock, flags); 2902 2903 s->private = "\n"; 2904 ++*pos; 2905 2906 return ret; 2907 } 2908 2909 static void gpiolib_seq_stop(struct seq_file *s, void *v) 2910 { 2911 } 2912 2913 static int gpiolib_seq_show(struct seq_file *s, void *v) 2914 { 2915 struct gpio_device *gdev = v; 2916 struct gpio_chip *chip = gdev->chip; 2917 struct device *parent; 2918 2919 if (!chip) { 2920 seq_printf(s, "%s%s: (dangling chip)", (char *)s->private, 2921 dev_name(&gdev->dev)); 2922 return 0; 2923 } 2924 2925 seq_printf(s, "%s%s: GPIOs %d-%d", (char *)s->private, 2926 dev_name(&gdev->dev), 2927 gdev->base, gdev->base + gdev->ngpio - 1); 2928 parent = chip->parent; 2929 if (parent) 2930 seq_printf(s, ", parent: %s/%s", 2931 parent->bus ? parent->bus->name : "no-bus", 2932 dev_name(parent)); 2933 if (chip->label) 2934 seq_printf(s, ", %s", chip->label); 2935 if (chip->can_sleep) 2936 seq_printf(s, ", can sleep"); 2937 seq_printf(s, ":\n"); 2938 2939 if (chip->dbg_show) 2940 chip->dbg_show(s, chip); 2941 else 2942 gpiolib_dbg_show(s, gdev); 2943 2944 return 0; 2945 } 2946 2947 static const struct seq_operations gpiolib_seq_ops = { 2948 .start = gpiolib_seq_start, 2949 .next = gpiolib_seq_next, 2950 .stop = gpiolib_seq_stop, 2951 .show = gpiolib_seq_show, 2952 }; 2953 2954 static int gpiolib_open(struct inode *inode, struct file *file) 2955 { 2956 return seq_open(file, &gpiolib_seq_ops); 2957 } 2958 2959 static const struct file_operations gpiolib_operations = { 2960 .owner = THIS_MODULE, 2961 .open = gpiolib_open, 2962 .read = seq_read, 2963 .llseek = seq_lseek, 2964 .release = seq_release, 2965 }; 2966 2967 static int __init gpiolib_debugfs_init(void) 2968 { 2969 /* /sys/kernel/debug/gpio */ 2970 (void) debugfs_create_file("gpio", S_IFREG | S_IRUGO, 2971 NULL, NULL, &gpiolib_operations); 2972 return 0; 2973 } 2974 subsys_initcall(gpiolib_debugfs_init); 2975 2976 #endif /* DEBUG_FS */ 2977