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