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