1 #include <linux/kernel.h> 2 #include <linux/module.h> 3 #include <linux/interrupt.h> 4 #include <linux/irq.h> 5 #include <linux/spinlock.h> 6 #include <linux/list.h> 7 #include <linux/device.h> 8 #include <linux/err.h> 9 #include <linux/debugfs.h> 10 #include <linux/seq_file.h> 11 #include <linux/gpio.h> 12 #include <linux/of_gpio.h> 13 #include <linux/idr.h> 14 #include <linux/slab.h> 15 16 #define CREATE_TRACE_POINTS 17 #include <trace/events/gpio.h> 18 19 /* Optional implementation infrastructure for GPIO interfaces. 20 * 21 * Platforms may want to use this if they tend to use very many GPIOs 22 * that aren't part of a System-On-Chip core; or across I2C/SPI/etc. 23 * 24 * When kernel footprint or instruction count is an issue, simpler 25 * implementations may be preferred. The GPIO programming interface 26 * allows for inlining speed-critical get/set operations for common 27 * cases, so that access to SOC-integrated GPIOs can sometimes cost 28 * only an instruction or two per bit. 29 */ 30 31 32 /* When debugging, extend minimal trust to callers and platform code. 33 * Also emit diagnostic messages that may help initial bringup, when 34 * board setup or driver bugs are most common. 35 * 36 * Otherwise, minimize overhead in what may be bitbanging codepaths. 37 */ 38 #ifdef DEBUG 39 #define extra_checks 1 40 #else 41 #define extra_checks 0 42 #endif 43 44 /* gpio_lock prevents conflicts during gpio_desc[] table updates. 45 * While any GPIO is requested, its gpio_chip is not removable; 46 * each GPIO's "requested" flag serves as a lock and refcount. 47 */ 48 static DEFINE_SPINLOCK(gpio_lock); 49 50 struct gpio_desc { 51 struct gpio_chip *chip; 52 unsigned long flags; 53 /* flag symbols are bit numbers */ 54 #define FLAG_REQUESTED 0 55 #define FLAG_IS_OUT 1 56 #define FLAG_EXPORT 2 /* protected by sysfs_lock */ 57 #define FLAG_SYSFS 3 /* exported via /sys/class/gpio/control */ 58 #define FLAG_TRIG_FALL 4 /* trigger on falling edge */ 59 #define FLAG_TRIG_RISE 5 /* trigger on rising edge */ 60 #define FLAG_ACTIVE_LOW 6 /* sysfs value has active low */ 61 #define FLAG_OPEN_DRAIN 7 /* Gpio is open drain type */ 62 #define FLAG_OPEN_SOURCE 8 /* Gpio is open source type */ 63 64 #define ID_SHIFT 16 /* add new flags before this one */ 65 66 #define GPIO_FLAGS_MASK ((1 << ID_SHIFT) - 1) 67 #define GPIO_TRIGGER_MASK (BIT(FLAG_TRIG_FALL) | BIT(FLAG_TRIG_RISE)) 68 69 #ifdef CONFIG_DEBUG_FS 70 const char *label; 71 #endif 72 }; 73 static struct gpio_desc gpio_desc[ARCH_NR_GPIOS]; 74 75 #define GPIO_OFFSET_VALID(chip, offset) (offset >= 0 && offset < chip->ngpio) 76 77 static LIST_HEAD(gpio_chips); 78 79 #ifdef CONFIG_GPIO_SYSFS 80 static DEFINE_IDR(dirent_idr); 81 #endif 82 83 /* 84 * Internal gpiod_* API using descriptors instead of the integer namespace. 85 * Most of this should eventually go public. 86 */ 87 static int gpiod_request(struct gpio_desc *desc, const char *label); 88 static void gpiod_free(struct gpio_desc *desc); 89 static int gpiod_direction_input(struct gpio_desc *desc); 90 static int gpiod_direction_output(struct gpio_desc *desc, int value); 91 static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce); 92 static int gpiod_get_value_cansleep(struct gpio_desc *desc); 93 static void gpiod_set_value_cansleep(struct gpio_desc *desc, int value); 94 static int gpiod_get_value(struct gpio_desc *desc); 95 static void gpiod_set_value(struct gpio_desc *desc, int value); 96 static int gpiod_cansleep(struct gpio_desc *desc); 97 static int gpiod_to_irq(struct gpio_desc *desc); 98 static int gpiod_export(struct gpio_desc *desc, bool direction_may_change); 99 static int gpiod_export_link(struct device *dev, const char *name, 100 struct gpio_desc *desc); 101 static int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value); 102 static void gpiod_unexport(struct gpio_desc *desc); 103 104 105 static inline void desc_set_label(struct gpio_desc *d, const char *label) 106 { 107 #ifdef CONFIG_DEBUG_FS 108 d->label = label; 109 #endif 110 } 111 112 /* 113 * Return the GPIO number of the passed descriptor relative to its chip 114 */ 115 static int gpio_chip_hwgpio(const struct gpio_desc *desc) 116 { 117 return desc - &desc->chip->desc[0]; 118 } 119 120 /** 121 * Convert a GPIO number to its descriptor 122 */ 123 static struct gpio_desc *gpio_to_desc(unsigned gpio) 124 { 125 if (WARN(!gpio_is_valid(gpio), "invalid GPIO %d\n", gpio)) 126 return NULL; 127 else 128 return &gpio_desc[gpio]; 129 } 130 131 /** 132 * Convert a GPIO descriptor to the integer namespace. 133 * This should disappear in the future but is needed since we still 134 * use GPIO numbers for error messages and sysfs nodes 135 */ 136 static int desc_to_gpio(const struct gpio_desc *desc) 137 { 138 return desc->chip->base + gpio_chip_hwgpio(desc); 139 } 140 141 142 /* Warn when drivers omit gpio_request() calls -- legal but ill-advised 143 * when setting direction, and otherwise illegal. Until board setup code 144 * and drivers use explicit requests everywhere (which won't happen when 145 * those calls have no teeth) we can't avoid autorequesting. This nag 146 * message should motivate switching to explicit requests... so should 147 * the weaker cleanup after faults, compared to gpio_request(). 148 * 149 * NOTE: the autorequest mechanism is going away; at this point it's 150 * only "legal" in the sense that (old) code using it won't break yet, 151 * but instead only triggers a WARN() stack dump. 152 */ 153 static int gpio_ensure_requested(struct gpio_desc *desc) 154 { 155 const struct gpio_chip *chip = desc->chip; 156 const int gpio = desc_to_gpio(desc); 157 158 if (WARN(test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0, 159 "autorequest GPIO-%d\n", gpio)) { 160 if (!try_module_get(chip->owner)) { 161 pr_err("GPIO-%d: module can't be gotten \n", gpio); 162 clear_bit(FLAG_REQUESTED, &desc->flags); 163 /* lose */ 164 return -EIO; 165 } 166 desc_set_label(desc, "[auto]"); 167 /* caller must chip->request() w/o spinlock */ 168 if (chip->request) 169 return 1; 170 } 171 return 0; 172 } 173 174 /* caller holds gpio_lock *OR* gpio is marked as requested */ 175 static struct gpio_chip *gpiod_to_chip(struct gpio_desc *desc) 176 { 177 return desc->chip; 178 } 179 180 struct gpio_chip *gpio_to_chip(unsigned gpio) 181 { 182 return gpiod_to_chip(gpio_to_desc(gpio)); 183 } 184 185 /* dynamic allocation of GPIOs, e.g. on a hotplugged device */ 186 static int gpiochip_find_base(int ngpio) 187 { 188 struct gpio_chip *chip; 189 int base = ARCH_NR_GPIOS - ngpio; 190 191 list_for_each_entry_reverse(chip, &gpio_chips, list) { 192 /* found a free space? */ 193 if (chip->base + chip->ngpio <= base) 194 break; 195 else 196 /* nope, check the space right before the chip */ 197 base = chip->base - ngpio; 198 } 199 200 if (gpio_is_valid(base)) { 201 pr_debug("%s: found new base at %d\n", __func__, base); 202 return base; 203 } else { 204 pr_err("%s: cannot find free range\n", __func__); 205 return -ENOSPC; 206 } 207 } 208 209 /* caller ensures gpio is valid and requested, chip->get_direction may sleep */ 210 static int gpiod_get_direction(struct gpio_desc *desc) 211 { 212 struct gpio_chip *chip; 213 unsigned offset; 214 int status = -EINVAL; 215 216 chip = gpiod_to_chip(desc); 217 offset = gpio_chip_hwgpio(desc); 218 219 if (!chip->get_direction) 220 return status; 221 222 status = chip->get_direction(chip, offset); 223 if (status > 0) { 224 /* GPIOF_DIR_IN, or other positive */ 225 status = 1; 226 clear_bit(FLAG_IS_OUT, &desc->flags); 227 } 228 if (status == 0) { 229 /* GPIOF_DIR_OUT */ 230 set_bit(FLAG_IS_OUT, &desc->flags); 231 } 232 return status; 233 } 234 235 #ifdef CONFIG_GPIO_SYSFS 236 237 /* lock protects against unexport_gpio() being called while 238 * sysfs files are active. 239 */ 240 static DEFINE_MUTEX(sysfs_lock); 241 242 /* 243 * /sys/class/gpio/gpioN... only for GPIOs that are exported 244 * /direction 245 * * MAY BE OMITTED if kernel won't allow direction changes 246 * * is read/write as "in" or "out" 247 * * may also be written as "high" or "low", initializing 248 * output value as specified ("out" implies "low") 249 * /value 250 * * always readable, subject to hardware behavior 251 * * may be writable, as zero/nonzero 252 * /edge 253 * * configures behavior of poll(2) on /value 254 * * available only if pin can generate IRQs on input 255 * * is read/write as "none", "falling", "rising", or "both" 256 * /active_low 257 * * configures polarity of /value 258 * * is read/write as zero/nonzero 259 * * also affects existing and subsequent "falling" and "rising" 260 * /edge configuration 261 */ 262 263 static ssize_t gpio_direction_show(struct device *dev, 264 struct device_attribute *attr, char *buf) 265 { 266 struct gpio_desc *desc = dev_get_drvdata(dev); 267 ssize_t status; 268 269 mutex_lock(&sysfs_lock); 270 271 if (!test_bit(FLAG_EXPORT, &desc->flags)) { 272 status = -EIO; 273 } else { 274 gpiod_get_direction(desc); 275 status = sprintf(buf, "%s\n", 276 test_bit(FLAG_IS_OUT, &desc->flags) 277 ? "out" : "in"); 278 } 279 280 mutex_unlock(&sysfs_lock); 281 return status; 282 } 283 284 static ssize_t gpio_direction_store(struct device *dev, 285 struct device_attribute *attr, const char *buf, size_t size) 286 { 287 struct gpio_desc *desc = dev_get_drvdata(dev); 288 ssize_t status; 289 290 mutex_lock(&sysfs_lock); 291 292 if (!test_bit(FLAG_EXPORT, &desc->flags)) 293 status = -EIO; 294 else if (sysfs_streq(buf, "high")) 295 status = gpiod_direction_output(desc, 1); 296 else if (sysfs_streq(buf, "out") || sysfs_streq(buf, "low")) 297 status = gpiod_direction_output(desc, 0); 298 else if (sysfs_streq(buf, "in")) 299 status = gpiod_direction_input(desc); 300 else 301 status = -EINVAL; 302 303 mutex_unlock(&sysfs_lock); 304 return status ? : size; 305 } 306 307 static /* const */ DEVICE_ATTR(direction, 0644, 308 gpio_direction_show, gpio_direction_store); 309 310 static ssize_t gpio_value_show(struct device *dev, 311 struct device_attribute *attr, char *buf) 312 { 313 struct gpio_desc *desc = dev_get_drvdata(dev); 314 ssize_t status; 315 316 mutex_lock(&sysfs_lock); 317 318 if (!test_bit(FLAG_EXPORT, &desc->flags)) { 319 status = -EIO; 320 } else { 321 int value; 322 323 value = !!gpiod_get_value_cansleep(desc); 324 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 325 value = !value; 326 327 status = sprintf(buf, "%d\n", value); 328 } 329 330 mutex_unlock(&sysfs_lock); 331 return status; 332 } 333 334 static ssize_t gpio_value_store(struct device *dev, 335 struct device_attribute *attr, const char *buf, size_t size) 336 { 337 struct gpio_desc *desc = dev_get_drvdata(dev); 338 ssize_t status; 339 340 mutex_lock(&sysfs_lock); 341 342 if (!test_bit(FLAG_EXPORT, &desc->flags)) 343 status = -EIO; 344 else if (!test_bit(FLAG_IS_OUT, &desc->flags)) 345 status = -EPERM; 346 else { 347 long value; 348 349 status = strict_strtol(buf, 0, &value); 350 if (status == 0) { 351 if (test_bit(FLAG_ACTIVE_LOW, &desc->flags)) 352 value = !value; 353 gpiod_set_value_cansleep(desc, value != 0); 354 status = size; 355 } 356 } 357 358 mutex_unlock(&sysfs_lock); 359 return status; 360 } 361 362 static const DEVICE_ATTR(value, 0644, 363 gpio_value_show, gpio_value_store); 364 365 static irqreturn_t gpio_sysfs_irq(int irq, void *priv) 366 { 367 struct sysfs_dirent *value_sd = priv; 368 369 sysfs_notify_dirent(value_sd); 370 return IRQ_HANDLED; 371 } 372 373 static int gpio_setup_irq(struct gpio_desc *desc, struct device *dev, 374 unsigned long gpio_flags) 375 { 376 struct sysfs_dirent *value_sd; 377 unsigned long irq_flags; 378 int ret, irq, id; 379 380 if ((desc->flags & GPIO_TRIGGER_MASK) == gpio_flags) 381 return 0; 382 383 irq = gpiod_to_irq(desc); 384 if (irq < 0) 385 return -EIO; 386 387 id = desc->flags >> ID_SHIFT; 388 value_sd = idr_find(&dirent_idr, id); 389 if (value_sd) 390 free_irq(irq, value_sd); 391 392 desc->flags &= ~GPIO_TRIGGER_MASK; 393 394 if (!gpio_flags) { 395 ret = 0; 396 goto free_id; 397 } 398 399 irq_flags = IRQF_SHARED; 400 if (test_bit(FLAG_TRIG_FALL, &gpio_flags)) 401 irq_flags |= test_bit(FLAG_ACTIVE_LOW, &desc->flags) ? 402 IRQF_TRIGGER_RISING : IRQF_TRIGGER_FALLING; 403 if (test_bit(FLAG_TRIG_RISE, &gpio_flags)) 404 irq_flags |= test_bit(FLAG_ACTIVE_LOW, &desc->flags) ? 405 IRQF_TRIGGER_FALLING : IRQF_TRIGGER_RISING; 406 407 if (!value_sd) { 408 value_sd = sysfs_get_dirent(dev->kobj.sd, NULL, "value"); 409 if (!value_sd) { 410 ret = -ENODEV; 411 goto err_out; 412 } 413 414 ret = idr_alloc(&dirent_idr, value_sd, 1, 0, GFP_KERNEL); 415 if (ret < 0) 416 goto free_sd; 417 id = ret; 418 419 desc->flags &= GPIO_FLAGS_MASK; 420 desc->flags |= (unsigned long)id << ID_SHIFT; 421 422 if (desc->flags >> ID_SHIFT != id) { 423 ret = -ERANGE; 424 goto free_id; 425 } 426 } 427 428 ret = request_any_context_irq(irq, gpio_sysfs_irq, irq_flags, 429 "gpiolib", value_sd); 430 if (ret < 0) 431 goto free_id; 432 433 desc->flags |= gpio_flags; 434 return 0; 435 436 free_id: 437 idr_remove(&dirent_idr, id); 438 desc->flags &= GPIO_FLAGS_MASK; 439 free_sd: 440 if (value_sd) 441 sysfs_put(value_sd); 442 err_out: 443 return ret; 444 } 445 446 static const struct { 447 const char *name; 448 unsigned long flags; 449 } trigger_types[] = { 450 { "none", 0 }, 451 { "falling", BIT(FLAG_TRIG_FALL) }, 452 { "rising", BIT(FLAG_TRIG_RISE) }, 453 { "both", BIT(FLAG_TRIG_FALL) | BIT(FLAG_TRIG_RISE) }, 454 }; 455 456 static ssize_t gpio_edge_show(struct device *dev, 457 struct device_attribute *attr, char *buf) 458 { 459 const struct gpio_desc *desc = dev_get_drvdata(dev); 460 ssize_t status; 461 462 mutex_lock(&sysfs_lock); 463 464 if (!test_bit(FLAG_EXPORT, &desc->flags)) 465 status = -EIO; 466 else { 467 int i; 468 469 status = 0; 470 for (i = 0; i < ARRAY_SIZE(trigger_types); i++) 471 if ((desc->flags & GPIO_TRIGGER_MASK) 472 == trigger_types[i].flags) { 473 status = sprintf(buf, "%s\n", 474 trigger_types[i].name); 475 break; 476 } 477 } 478 479 mutex_unlock(&sysfs_lock); 480 return status; 481 } 482 483 static ssize_t gpio_edge_store(struct device *dev, 484 struct device_attribute *attr, const char *buf, size_t size) 485 { 486 struct gpio_desc *desc = dev_get_drvdata(dev); 487 ssize_t status; 488 int i; 489 490 for (i = 0; i < ARRAY_SIZE(trigger_types); i++) 491 if (sysfs_streq(trigger_types[i].name, buf)) 492 goto found; 493 return -EINVAL; 494 495 found: 496 mutex_lock(&sysfs_lock); 497 498 if (!test_bit(FLAG_EXPORT, &desc->flags)) 499 status = -EIO; 500 else { 501 status = gpio_setup_irq(desc, dev, trigger_types[i].flags); 502 if (!status) 503 status = size; 504 } 505 506 mutex_unlock(&sysfs_lock); 507 508 return status; 509 } 510 511 static DEVICE_ATTR(edge, 0644, gpio_edge_show, gpio_edge_store); 512 513 static int sysfs_set_active_low(struct gpio_desc *desc, struct device *dev, 514 int value) 515 { 516 int status = 0; 517 518 if (!!test_bit(FLAG_ACTIVE_LOW, &desc->flags) == !!value) 519 return 0; 520 521 if (value) 522 set_bit(FLAG_ACTIVE_LOW, &desc->flags); 523 else 524 clear_bit(FLAG_ACTIVE_LOW, &desc->flags); 525 526 /* reconfigure poll(2) support if enabled on one edge only */ 527 if (dev != NULL && (!!test_bit(FLAG_TRIG_RISE, &desc->flags) ^ 528 !!test_bit(FLAG_TRIG_FALL, &desc->flags))) { 529 unsigned long trigger_flags = desc->flags & GPIO_TRIGGER_MASK; 530 531 gpio_setup_irq(desc, dev, 0); 532 status = gpio_setup_irq(desc, dev, trigger_flags); 533 } 534 535 return status; 536 } 537 538 static ssize_t gpio_active_low_show(struct device *dev, 539 struct device_attribute *attr, char *buf) 540 { 541 const struct gpio_desc *desc = dev_get_drvdata(dev); 542 ssize_t status; 543 544 mutex_lock(&sysfs_lock); 545 546 if (!test_bit(FLAG_EXPORT, &desc->flags)) 547 status = -EIO; 548 else 549 status = sprintf(buf, "%d\n", 550 !!test_bit(FLAG_ACTIVE_LOW, &desc->flags)); 551 552 mutex_unlock(&sysfs_lock); 553 554 return status; 555 } 556 557 static ssize_t gpio_active_low_store(struct device *dev, 558 struct device_attribute *attr, const char *buf, size_t size) 559 { 560 struct gpio_desc *desc = dev_get_drvdata(dev); 561 ssize_t status; 562 563 mutex_lock(&sysfs_lock); 564 565 if (!test_bit(FLAG_EXPORT, &desc->flags)) { 566 status = -EIO; 567 } else { 568 long value; 569 570 status = strict_strtol(buf, 0, &value); 571 if (status == 0) 572 status = sysfs_set_active_low(desc, dev, value != 0); 573 } 574 575 mutex_unlock(&sysfs_lock); 576 577 return status ? : size; 578 } 579 580 static const DEVICE_ATTR(active_low, 0644, 581 gpio_active_low_show, gpio_active_low_store); 582 583 static const struct attribute *gpio_attrs[] = { 584 &dev_attr_value.attr, 585 &dev_attr_active_low.attr, 586 NULL, 587 }; 588 589 static const struct attribute_group gpio_attr_group = { 590 .attrs = (struct attribute **) gpio_attrs, 591 }; 592 593 /* 594 * /sys/class/gpio/gpiochipN/ 595 * /base ... matching gpio_chip.base (N) 596 * /label ... matching gpio_chip.label 597 * /ngpio ... matching gpio_chip.ngpio 598 */ 599 600 static ssize_t chip_base_show(struct device *dev, 601 struct device_attribute *attr, char *buf) 602 { 603 const struct gpio_chip *chip = dev_get_drvdata(dev); 604 605 return sprintf(buf, "%d\n", chip->base); 606 } 607 static DEVICE_ATTR(base, 0444, chip_base_show, NULL); 608 609 static ssize_t chip_label_show(struct device *dev, 610 struct device_attribute *attr, char *buf) 611 { 612 const struct gpio_chip *chip = dev_get_drvdata(dev); 613 614 return sprintf(buf, "%s\n", chip->label ? : ""); 615 } 616 static DEVICE_ATTR(label, 0444, chip_label_show, NULL); 617 618 static ssize_t chip_ngpio_show(struct device *dev, 619 struct device_attribute *attr, char *buf) 620 { 621 const struct gpio_chip *chip = dev_get_drvdata(dev); 622 623 return sprintf(buf, "%u\n", chip->ngpio); 624 } 625 static DEVICE_ATTR(ngpio, 0444, chip_ngpio_show, NULL); 626 627 static const struct attribute *gpiochip_attrs[] = { 628 &dev_attr_base.attr, 629 &dev_attr_label.attr, 630 &dev_attr_ngpio.attr, 631 NULL, 632 }; 633 634 static const struct attribute_group gpiochip_attr_group = { 635 .attrs = (struct attribute **) gpiochip_attrs, 636 }; 637 638 /* 639 * /sys/class/gpio/export ... write-only 640 * integer N ... number of GPIO to export (full access) 641 * /sys/class/gpio/unexport ... write-only 642 * integer N ... number of GPIO to unexport 643 */ 644 static ssize_t export_store(struct class *class, 645 struct class_attribute *attr, 646 const char *buf, size_t len) 647 { 648 long gpio; 649 struct gpio_desc *desc; 650 int status; 651 652 status = strict_strtol(buf, 0, &gpio); 653 if (status < 0) 654 goto done; 655 656 desc = gpio_to_desc(gpio); 657 658 /* No extra locking here; FLAG_SYSFS just signifies that the 659 * request and export were done by on behalf of userspace, so 660 * they may be undone on its behalf too. 661 */ 662 663 status = gpiod_request(desc, "sysfs"); 664 if (status < 0) { 665 if (status == -EPROBE_DEFER) 666 status = -ENODEV; 667 goto done; 668 } 669 status = gpiod_export(desc, true); 670 if (status < 0) 671 gpiod_free(desc); 672 else 673 set_bit(FLAG_SYSFS, &desc->flags); 674 675 done: 676 if (status) 677 pr_debug("%s: status %d\n", __func__, status); 678 return status ? : len; 679 } 680 681 static ssize_t unexport_store(struct class *class, 682 struct class_attribute *attr, 683 const char *buf, size_t len) 684 { 685 long gpio; 686 struct gpio_desc *desc; 687 int status; 688 689 status = strict_strtol(buf, 0, &gpio); 690 if (status < 0) 691 goto done; 692 693 status = -EINVAL; 694 695 desc = gpio_to_desc(gpio); 696 /* reject bogus commands (gpio_unexport ignores them) */ 697 if (!desc) 698 goto done; 699 700 /* No extra locking here; FLAG_SYSFS just signifies that the 701 * request and export were done by on behalf of userspace, so 702 * they may be undone on its behalf too. 703 */ 704 if (test_and_clear_bit(FLAG_SYSFS, &desc->flags)) { 705 status = 0; 706 gpiod_free(desc); 707 } 708 done: 709 if (status) 710 pr_debug("%s: status %d\n", __func__, status); 711 return status ? : len; 712 } 713 714 static struct class_attribute gpio_class_attrs[] = { 715 __ATTR(export, 0200, NULL, export_store), 716 __ATTR(unexport, 0200, NULL, unexport_store), 717 __ATTR_NULL, 718 }; 719 720 static struct class gpio_class = { 721 .name = "gpio", 722 .owner = THIS_MODULE, 723 724 .class_attrs = gpio_class_attrs, 725 }; 726 727 728 /** 729 * gpio_export - export a GPIO through sysfs 730 * @gpio: gpio to make available, already requested 731 * @direction_may_change: true if userspace may change gpio direction 732 * Context: arch_initcall or later 733 * 734 * When drivers want to make a GPIO accessible to userspace after they 735 * have requested it -- perhaps while debugging, or as part of their 736 * public interface -- they may use this routine. If the GPIO can 737 * change direction (some can't) and the caller allows it, userspace 738 * will see "direction" sysfs attribute which may be used to change 739 * the gpio's direction. A "value" attribute will always be provided. 740 * 741 * Returns zero on success, else an error. 742 */ 743 static int gpiod_export(struct gpio_desc *desc, bool direction_may_change) 744 { 745 unsigned long flags; 746 int status; 747 const char *ioname = NULL; 748 struct device *dev; 749 int offset; 750 751 /* can't export until sysfs is available ... */ 752 if (!gpio_class.p) { 753 pr_debug("%s: called too early!\n", __func__); 754 return -ENOENT; 755 } 756 757 if (!desc) { 758 pr_debug("%s: invalid gpio descriptor\n", __func__); 759 return -EINVAL; 760 } 761 762 mutex_lock(&sysfs_lock); 763 764 spin_lock_irqsave(&gpio_lock, flags); 765 if (!test_bit(FLAG_REQUESTED, &desc->flags) || 766 test_bit(FLAG_EXPORT, &desc->flags)) { 767 spin_unlock_irqrestore(&gpio_lock, flags); 768 pr_debug("%s: gpio %d unavailable (requested=%d, exported=%d)\n", 769 __func__, desc_to_gpio(desc), 770 test_bit(FLAG_REQUESTED, &desc->flags), 771 test_bit(FLAG_EXPORT, &desc->flags)); 772 status = -EPERM; 773 goto fail_unlock; 774 } 775 776 if (!desc->chip->direction_input || !desc->chip->direction_output) 777 direction_may_change = false; 778 spin_unlock_irqrestore(&gpio_lock, flags); 779 780 offset = gpio_chip_hwgpio(desc); 781 if (desc->chip->names && desc->chip->names[offset]) 782 ioname = desc->chip->names[offset]; 783 784 dev = device_create(&gpio_class, desc->chip->dev, MKDEV(0, 0), 785 desc, ioname ? ioname : "gpio%u", 786 desc_to_gpio(desc)); 787 if (IS_ERR(dev)) { 788 status = PTR_ERR(dev); 789 goto fail_unlock; 790 } 791 792 status = sysfs_create_group(&dev->kobj, &gpio_attr_group); 793 if (status) 794 goto fail_unregister_device; 795 796 if (direction_may_change) { 797 status = device_create_file(dev, &dev_attr_direction); 798 if (status) 799 goto fail_unregister_device; 800 } 801 802 if (gpiod_to_irq(desc) >= 0 && (direction_may_change || 803 !test_bit(FLAG_IS_OUT, &desc->flags))) { 804 status = device_create_file(dev, &dev_attr_edge); 805 if (status) 806 goto fail_unregister_device; 807 } 808 809 set_bit(FLAG_EXPORT, &desc->flags); 810 mutex_unlock(&sysfs_lock); 811 return 0; 812 813 fail_unregister_device: 814 device_unregister(dev); 815 fail_unlock: 816 mutex_unlock(&sysfs_lock); 817 pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc), 818 status); 819 return status; 820 } 821 822 int gpio_export(unsigned gpio, bool direction_may_change) 823 { 824 return gpiod_export(gpio_to_desc(gpio), direction_may_change); 825 } 826 EXPORT_SYMBOL_GPL(gpio_export); 827 828 static int match_export(struct device *dev, const void *data) 829 { 830 return dev_get_drvdata(dev) == data; 831 } 832 833 /** 834 * gpio_export_link - create a sysfs link to an exported GPIO node 835 * @dev: device under which to create symlink 836 * @name: name of the symlink 837 * @gpio: gpio to create symlink to, already exported 838 * 839 * Set up a symlink from /sys/.../dev/name to /sys/class/gpio/gpioN 840 * node. Caller is responsible for unlinking. 841 * 842 * Returns zero on success, else an error. 843 */ 844 static int gpiod_export_link(struct device *dev, const char *name, 845 struct gpio_desc *desc) 846 { 847 int status = -EINVAL; 848 849 if (!desc) 850 goto done; 851 852 mutex_lock(&sysfs_lock); 853 854 if (test_bit(FLAG_EXPORT, &desc->flags)) { 855 struct device *tdev; 856 857 tdev = class_find_device(&gpio_class, NULL, desc, match_export); 858 if (tdev != NULL) { 859 status = sysfs_create_link(&dev->kobj, &tdev->kobj, 860 name); 861 } else { 862 status = -ENODEV; 863 } 864 } 865 866 mutex_unlock(&sysfs_lock); 867 868 done: 869 if (status) 870 pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc), 871 status); 872 873 return status; 874 } 875 876 int gpio_export_link(struct device *dev, const char *name, unsigned gpio) 877 { 878 return gpiod_export_link(dev, name, gpio_to_desc(gpio)); 879 } 880 EXPORT_SYMBOL_GPL(gpio_export_link); 881 882 /** 883 * gpio_sysfs_set_active_low - set the polarity of gpio sysfs value 884 * @gpio: gpio to change 885 * @value: non-zero to use active low, i.e. inverted values 886 * 887 * Set the polarity of /sys/class/gpio/gpioN/value sysfs attribute. 888 * The GPIO does not have to be exported yet. If poll(2) support has 889 * been enabled for either rising or falling edge, it will be 890 * reconfigured to follow the new polarity. 891 * 892 * Returns zero on success, else an error. 893 */ 894 static int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value) 895 { 896 struct device *dev = NULL; 897 int status = -EINVAL; 898 899 if (!desc) 900 goto done; 901 902 mutex_lock(&sysfs_lock); 903 904 if (test_bit(FLAG_EXPORT, &desc->flags)) { 905 dev = class_find_device(&gpio_class, NULL, desc, match_export); 906 if (dev == NULL) { 907 status = -ENODEV; 908 goto unlock; 909 } 910 } 911 912 status = sysfs_set_active_low(desc, dev, value); 913 914 unlock: 915 mutex_unlock(&sysfs_lock); 916 917 done: 918 if (status) 919 pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc), 920 status); 921 922 return status; 923 } 924 925 int gpio_sysfs_set_active_low(unsigned gpio, int value) 926 { 927 return gpiod_sysfs_set_active_low(gpio_to_desc(gpio), value); 928 } 929 EXPORT_SYMBOL_GPL(gpio_sysfs_set_active_low); 930 931 /** 932 * gpio_unexport - reverse effect of gpio_export() 933 * @gpio: gpio to make unavailable 934 * 935 * This is implicit on gpio_free(). 936 */ 937 static void gpiod_unexport(struct gpio_desc *desc) 938 { 939 int status = 0; 940 struct device *dev = NULL; 941 942 if (!desc) { 943 status = -EINVAL; 944 goto done; 945 } 946 947 mutex_lock(&sysfs_lock); 948 949 if (test_bit(FLAG_EXPORT, &desc->flags)) { 950 951 dev = class_find_device(&gpio_class, NULL, desc, match_export); 952 if (dev) { 953 gpio_setup_irq(desc, dev, 0); 954 clear_bit(FLAG_EXPORT, &desc->flags); 955 } else 956 status = -ENODEV; 957 } 958 959 mutex_unlock(&sysfs_lock); 960 961 if (dev) { 962 device_unregister(dev); 963 put_device(dev); 964 } 965 done: 966 if (status) 967 pr_debug("%s: gpio%d status %d\n", __func__, desc_to_gpio(desc), 968 status); 969 } 970 971 void gpio_unexport(unsigned gpio) 972 { 973 gpiod_unexport(gpio_to_desc(gpio)); 974 } 975 EXPORT_SYMBOL_GPL(gpio_unexport); 976 977 static int gpiochip_export(struct gpio_chip *chip) 978 { 979 int status; 980 struct device *dev; 981 982 /* Many systems register gpio chips for SOC support very early, 983 * before driver model support is available. In those cases we 984 * export this later, in gpiolib_sysfs_init() ... here we just 985 * verify that _some_ field of gpio_class got initialized. 986 */ 987 if (!gpio_class.p) 988 return 0; 989 990 /* use chip->base for the ID; it's already known to be unique */ 991 mutex_lock(&sysfs_lock); 992 dev = device_create(&gpio_class, chip->dev, MKDEV(0, 0), chip, 993 "gpiochip%d", chip->base); 994 if (!IS_ERR(dev)) { 995 status = sysfs_create_group(&dev->kobj, 996 &gpiochip_attr_group); 997 } else 998 status = PTR_ERR(dev); 999 chip->exported = (status == 0); 1000 mutex_unlock(&sysfs_lock); 1001 1002 if (status) { 1003 unsigned long flags; 1004 unsigned gpio; 1005 1006 spin_lock_irqsave(&gpio_lock, flags); 1007 gpio = 0; 1008 while (gpio < chip->ngpio) 1009 chip->desc[gpio++].chip = NULL; 1010 spin_unlock_irqrestore(&gpio_lock, flags); 1011 1012 pr_debug("%s: chip %s status %d\n", __func__, 1013 chip->label, status); 1014 } 1015 1016 return status; 1017 } 1018 1019 static void gpiochip_unexport(struct gpio_chip *chip) 1020 { 1021 int status; 1022 struct device *dev; 1023 1024 mutex_lock(&sysfs_lock); 1025 dev = class_find_device(&gpio_class, NULL, chip, match_export); 1026 if (dev) { 1027 put_device(dev); 1028 device_unregister(dev); 1029 chip->exported = 0; 1030 status = 0; 1031 } else 1032 status = -ENODEV; 1033 mutex_unlock(&sysfs_lock); 1034 1035 if (status) 1036 pr_debug("%s: chip %s status %d\n", __func__, 1037 chip->label, status); 1038 } 1039 1040 static int __init gpiolib_sysfs_init(void) 1041 { 1042 int status; 1043 unsigned long flags; 1044 struct gpio_chip *chip; 1045 1046 status = class_register(&gpio_class); 1047 if (status < 0) 1048 return status; 1049 1050 /* Scan and register the gpio_chips which registered very 1051 * early (e.g. before the class_register above was called). 1052 * 1053 * We run before arch_initcall() so chip->dev nodes can have 1054 * registered, and so arch_initcall() can always gpio_export(). 1055 */ 1056 spin_lock_irqsave(&gpio_lock, flags); 1057 list_for_each_entry(chip, &gpio_chips, list) { 1058 if (!chip || chip->exported) 1059 continue; 1060 1061 spin_unlock_irqrestore(&gpio_lock, flags); 1062 status = gpiochip_export(chip); 1063 spin_lock_irqsave(&gpio_lock, flags); 1064 } 1065 spin_unlock_irqrestore(&gpio_lock, flags); 1066 1067 1068 return status; 1069 } 1070 postcore_initcall(gpiolib_sysfs_init); 1071 1072 #else 1073 static inline int gpiochip_export(struct gpio_chip *chip) 1074 { 1075 return 0; 1076 } 1077 1078 static inline void gpiochip_unexport(struct gpio_chip *chip) 1079 { 1080 } 1081 1082 static inline int gpiod_export(struct gpio_desc *desc, 1083 bool direction_may_change) 1084 { 1085 return -ENOSYS; 1086 } 1087 1088 static inline int gpiod_export_link(struct device *dev, const char *name, 1089 struct gpio_desc *desc) 1090 { 1091 return -ENOSYS; 1092 } 1093 1094 static inline int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value) 1095 { 1096 return -ENOSYS; 1097 } 1098 1099 static inline void gpiod_unexport(struct gpio_desc *desc) 1100 { 1101 } 1102 1103 #endif /* CONFIG_GPIO_SYSFS */ 1104 1105 /* 1106 * Add a new chip to the global chips list, keeping the list of chips sorted 1107 * by base order. 1108 * 1109 * Return -EBUSY if the new chip overlaps with some other chip's integer 1110 * space. 1111 */ 1112 static int gpiochip_add_to_list(struct gpio_chip *chip) 1113 { 1114 struct list_head *pos = &gpio_chips; 1115 struct gpio_chip *_chip; 1116 int err = 0; 1117 1118 /* find where to insert our chip */ 1119 list_for_each(pos, &gpio_chips) { 1120 _chip = list_entry(pos, struct gpio_chip, list); 1121 /* shall we insert before _chip? */ 1122 if (_chip->base >= chip->base + chip->ngpio) 1123 break; 1124 } 1125 1126 /* are we stepping on the chip right before? */ 1127 if (pos != &gpio_chips && pos->prev != &gpio_chips) { 1128 _chip = list_entry(pos->prev, struct gpio_chip, list); 1129 if (_chip->base + _chip->ngpio > chip->base) { 1130 dev_err(chip->dev, 1131 "GPIO integer space overlap, cannot add chip\n"); 1132 err = -EBUSY; 1133 } 1134 } 1135 1136 if (!err) 1137 list_add_tail(&chip->list, pos); 1138 1139 return err; 1140 } 1141 1142 /** 1143 * gpiochip_add() - register a gpio_chip 1144 * @chip: the chip to register, with chip->base initialized 1145 * Context: potentially before irqs or kmalloc will work 1146 * 1147 * Returns a negative errno if the chip can't be registered, such as 1148 * because the chip->base is invalid or already associated with a 1149 * different chip. Otherwise it returns zero as a success code. 1150 * 1151 * When gpiochip_add() is called very early during boot, so that GPIOs 1152 * can be freely used, the chip->dev device must be registered before 1153 * the gpio framework's arch_initcall(). Otherwise sysfs initialization 1154 * for GPIOs will fail rudely. 1155 * 1156 * If chip->base is negative, this requests dynamic assignment of 1157 * a range of valid GPIOs. 1158 */ 1159 int gpiochip_add(struct gpio_chip *chip) 1160 { 1161 unsigned long flags; 1162 int status = 0; 1163 unsigned id; 1164 int base = chip->base; 1165 1166 if ((!gpio_is_valid(base) || !gpio_is_valid(base + chip->ngpio - 1)) 1167 && base >= 0) { 1168 status = -EINVAL; 1169 goto fail; 1170 } 1171 1172 spin_lock_irqsave(&gpio_lock, flags); 1173 1174 if (base < 0) { 1175 base = gpiochip_find_base(chip->ngpio); 1176 if (base < 0) { 1177 status = base; 1178 goto unlock; 1179 } 1180 chip->base = base; 1181 } 1182 1183 status = gpiochip_add_to_list(chip); 1184 1185 if (status == 0) { 1186 chip->desc = &gpio_desc[chip->base]; 1187 1188 for (id = 0; id < chip->ngpio; id++) { 1189 struct gpio_desc *desc = &chip->desc[id]; 1190 desc->chip = chip; 1191 1192 /* REVISIT: most hardware initializes GPIOs as 1193 * inputs (often with pullups enabled) so power 1194 * usage is minimized. Linux code should set the 1195 * gpio direction first thing; but until it does, 1196 * and in case chip->get_direction is not set, 1197 * we may expose the wrong direction in sysfs. 1198 */ 1199 desc->flags = !chip->direction_input 1200 ? (1 << FLAG_IS_OUT) 1201 : 0; 1202 } 1203 } 1204 1205 #ifdef CONFIG_PINCTRL 1206 INIT_LIST_HEAD(&chip->pin_ranges); 1207 #endif 1208 1209 of_gpiochip_add(chip); 1210 1211 unlock: 1212 spin_unlock_irqrestore(&gpio_lock, flags); 1213 1214 if (status) 1215 goto fail; 1216 1217 status = gpiochip_export(chip); 1218 if (status) 1219 goto fail; 1220 1221 pr_debug("gpiochip_add: registered GPIOs %d to %d on device: %s\n", 1222 chip->base, chip->base + chip->ngpio - 1, 1223 chip->label ? : "generic"); 1224 1225 return 0; 1226 fail: 1227 /* failures here can mean systems won't boot... */ 1228 pr_err("gpiochip_add: gpios %d..%d (%s) failed to register\n", 1229 chip->base, chip->base + chip->ngpio - 1, 1230 chip->label ? : "generic"); 1231 return status; 1232 } 1233 EXPORT_SYMBOL_GPL(gpiochip_add); 1234 1235 /** 1236 * gpiochip_remove() - unregister a gpio_chip 1237 * @chip: the chip to unregister 1238 * 1239 * A gpio_chip with any GPIOs still requested may not be removed. 1240 */ 1241 int gpiochip_remove(struct gpio_chip *chip) 1242 { 1243 unsigned long flags; 1244 int status = 0; 1245 unsigned id; 1246 1247 spin_lock_irqsave(&gpio_lock, flags); 1248 1249 gpiochip_remove_pin_ranges(chip); 1250 of_gpiochip_remove(chip); 1251 1252 for (id = 0; id < chip->ngpio; id++) { 1253 if (test_bit(FLAG_REQUESTED, &chip->desc[id].flags)) { 1254 status = -EBUSY; 1255 break; 1256 } 1257 } 1258 if (status == 0) { 1259 for (id = 0; id < chip->ngpio; id++) 1260 chip->desc[id].chip = NULL; 1261 1262 list_del(&chip->list); 1263 } 1264 1265 spin_unlock_irqrestore(&gpio_lock, flags); 1266 1267 if (status == 0) 1268 gpiochip_unexport(chip); 1269 1270 return status; 1271 } 1272 EXPORT_SYMBOL_GPL(gpiochip_remove); 1273 1274 /** 1275 * gpiochip_find() - iterator for locating a specific gpio_chip 1276 * @data: data to pass to match function 1277 * @callback: Callback function to check gpio_chip 1278 * 1279 * Similar to bus_find_device. It returns a reference to a gpio_chip as 1280 * determined by a user supplied @match callback. The callback should return 1281 * 0 if the device doesn't match and non-zero if it does. If the callback is 1282 * non-zero, this function will return to the caller and not iterate over any 1283 * more gpio_chips. 1284 */ 1285 struct gpio_chip *gpiochip_find(void *data, 1286 int (*match)(struct gpio_chip *chip, 1287 void *data)) 1288 { 1289 struct gpio_chip *chip; 1290 unsigned long flags; 1291 1292 spin_lock_irqsave(&gpio_lock, flags); 1293 list_for_each_entry(chip, &gpio_chips, list) 1294 if (match(chip, data)) 1295 break; 1296 1297 /* No match? */ 1298 if (&chip->list == &gpio_chips) 1299 chip = NULL; 1300 spin_unlock_irqrestore(&gpio_lock, flags); 1301 1302 return chip; 1303 } 1304 EXPORT_SYMBOL_GPL(gpiochip_find); 1305 1306 #ifdef CONFIG_PINCTRL 1307 1308 /** 1309 * gpiochip_add_pin_range() - add a range for GPIO <-> pin mapping 1310 * @chip: the gpiochip to add the range for 1311 * @pinctrl_name: the dev_name() of the pin controller to map to 1312 * @gpio_offset: the start offset in the current gpio_chip number space 1313 * @pin_offset: the start offset in the pin controller number space 1314 * @npins: the number of pins from the offset of each pin space (GPIO and 1315 * pin controller) to accumulate in this range 1316 */ 1317 int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name, 1318 unsigned int gpio_offset, unsigned int pin_offset, 1319 unsigned int npins) 1320 { 1321 struct gpio_pin_range *pin_range; 1322 int ret; 1323 1324 pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL); 1325 if (!pin_range) { 1326 pr_err("%s: GPIO chip: failed to allocate pin ranges\n", 1327 chip->label); 1328 return -ENOMEM; 1329 } 1330 1331 /* Use local offset as range ID */ 1332 pin_range->range.id = gpio_offset; 1333 pin_range->range.gc = chip; 1334 pin_range->range.name = chip->label; 1335 pin_range->range.base = chip->base + gpio_offset; 1336 pin_range->range.pin_base = pin_offset; 1337 pin_range->range.npins = npins; 1338 pin_range->pctldev = pinctrl_find_and_add_gpio_range(pinctl_name, 1339 &pin_range->range); 1340 if (IS_ERR(pin_range->pctldev)) { 1341 ret = PTR_ERR(pin_range->pctldev); 1342 pr_err("%s: GPIO chip: could not create pin range\n", 1343 chip->label); 1344 kfree(pin_range); 1345 return ret; 1346 } 1347 pr_debug("GPIO chip %s: created GPIO range %d->%d ==> %s PIN %d->%d\n", 1348 chip->label, gpio_offset, gpio_offset + npins - 1, 1349 pinctl_name, 1350 pin_offset, pin_offset + npins - 1); 1351 1352 list_add_tail(&pin_range->node, &chip->pin_ranges); 1353 1354 return 0; 1355 } 1356 EXPORT_SYMBOL_GPL(gpiochip_add_pin_range); 1357 1358 /** 1359 * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings 1360 * @chip: the chip to remove all the mappings for 1361 */ 1362 void gpiochip_remove_pin_ranges(struct gpio_chip *chip) 1363 { 1364 struct gpio_pin_range *pin_range, *tmp; 1365 1366 list_for_each_entry_safe(pin_range, tmp, &chip->pin_ranges, node) { 1367 list_del(&pin_range->node); 1368 pinctrl_remove_gpio_range(pin_range->pctldev, 1369 &pin_range->range); 1370 kfree(pin_range); 1371 } 1372 } 1373 EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges); 1374 1375 #endif /* CONFIG_PINCTRL */ 1376 1377 /* These "optional" allocation calls help prevent drivers from stomping 1378 * on each other, and help provide better diagnostics in debugfs. 1379 * They're called even less than the "set direction" calls. 1380 */ 1381 static int gpiod_request(struct gpio_desc *desc, const char *label) 1382 { 1383 struct gpio_chip *chip; 1384 int status = -EPROBE_DEFER; 1385 unsigned long flags; 1386 1387 spin_lock_irqsave(&gpio_lock, flags); 1388 1389 if (!desc) { 1390 status = -EINVAL; 1391 goto done; 1392 } 1393 chip = desc->chip; 1394 if (chip == NULL) 1395 goto done; 1396 1397 if (!try_module_get(chip->owner)) 1398 goto done; 1399 1400 /* NOTE: gpio_request() can be called in early boot, 1401 * before IRQs are enabled, for non-sleeping (SOC) GPIOs. 1402 */ 1403 1404 if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) { 1405 desc_set_label(desc, label ? : "?"); 1406 status = 0; 1407 } else { 1408 status = -EBUSY; 1409 module_put(chip->owner); 1410 goto done; 1411 } 1412 1413 if (chip->request) { 1414 /* chip->request may sleep */ 1415 spin_unlock_irqrestore(&gpio_lock, flags); 1416 status = chip->request(chip, gpio_chip_hwgpio(desc)); 1417 spin_lock_irqsave(&gpio_lock, flags); 1418 1419 if (status < 0) { 1420 desc_set_label(desc, NULL); 1421 module_put(chip->owner); 1422 clear_bit(FLAG_REQUESTED, &desc->flags); 1423 goto done; 1424 } 1425 } 1426 if (chip->get_direction) { 1427 /* chip->get_direction may sleep */ 1428 spin_unlock_irqrestore(&gpio_lock, flags); 1429 gpiod_get_direction(desc); 1430 spin_lock_irqsave(&gpio_lock, flags); 1431 } 1432 done: 1433 if (status) 1434 pr_debug("_gpio_request: gpio-%d (%s) status %d\n", 1435 desc ? desc_to_gpio(desc) : -1, 1436 label ? : "?", status); 1437 spin_unlock_irqrestore(&gpio_lock, flags); 1438 return status; 1439 } 1440 1441 int gpio_request(unsigned gpio, const char *label) 1442 { 1443 return gpiod_request(gpio_to_desc(gpio), label); 1444 } 1445 EXPORT_SYMBOL_GPL(gpio_request); 1446 1447 static void gpiod_free(struct gpio_desc *desc) 1448 { 1449 unsigned long flags; 1450 struct gpio_chip *chip; 1451 1452 might_sleep(); 1453 1454 if (!desc) { 1455 WARN_ON(extra_checks); 1456 return; 1457 } 1458 1459 gpiod_unexport(desc); 1460 1461 spin_lock_irqsave(&gpio_lock, flags); 1462 1463 chip = desc->chip; 1464 if (chip && test_bit(FLAG_REQUESTED, &desc->flags)) { 1465 if (chip->free) { 1466 spin_unlock_irqrestore(&gpio_lock, flags); 1467 might_sleep_if(chip->can_sleep); 1468 chip->free(chip, gpio_chip_hwgpio(desc)); 1469 spin_lock_irqsave(&gpio_lock, flags); 1470 } 1471 desc_set_label(desc, NULL); 1472 module_put(desc->chip->owner); 1473 clear_bit(FLAG_ACTIVE_LOW, &desc->flags); 1474 clear_bit(FLAG_REQUESTED, &desc->flags); 1475 clear_bit(FLAG_OPEN_DRAIN, &desc->flags); 1476 clear_bit(FLAG_OPEN_SOURCE, &desc->flags); 1477 } else 1478 WARN_ON(extra_checks); 1479 1480 spin_unlock_irqrestore(&gpio_lock, flags); 1481 } 1482 1483 void gpio_free(unsigned gpio) 1484 { 1485 gpiod_free(gpio_to_desc(gpio)); 1486 } 1487 EXPORT_SYMBOL_GPL(gpio_free); 1488 1489 /** 1490 * gpio_request_one - request a single GPIO with initial configuration 1491 * @gpio: the GPIO number 1492 * @flags: GPIO configuration as specified by GPIOF_* 1493 * @label: a literal description string of this GPIO 1494 */ 1495 int gpio_request_one(unsigned gpio, unsigned long flags, const char *label) 1496 { 1497 struct gpio_desc *desc; 1498 int err; 1499 1500 desc = gpio_to_desc(gpio); 1501 1502 err = gpiod_request(desc, label); 1503 if (err) 1504 return err; 1505 1506 if (flags & GPIOF_OPEN_DRAIN) 1507 set_bit(FLAG_OPEN_DRAIN, &desc->flags); 1508 1509 if (flags & GPIOF_OPEN_SOURCE) 1510 set_bit(FLAG_OPEN_SOURCE, &desc->flags); 1511 1512 if (flags & GPIOF_DIR_IN) 1513 err = gpiod_direction_input(desc); 1514 else 1515 err = gpiod_direction_output(desc, 1516 (flags & GPIOF_INIT_HIGH) ? 1 : 0); 1517 1518 if (err) 1519 goto free_gpio; 1520 1521 if (flags & GPIOF_EXPORT) { 1522 err = gpiod_export(desc, flags & GPIOF_EXPORT_CHANGEABLE); 1523 if (err) 1524 goto free_gpio; 1525 } 1526 1527 return 0; 1528 1529 free_gpio: 1530 gpiod_free(desc); 1531 return err; 1532 } 1533 EXPORT_SYMBOL_GPL(gpio_request_one); 1534 1535 /** 1536 * gpio_request_array - request multiple GPIOs in a single call 1537 * @array: array of the 'struct gpio' 1538 * @num: how many GPIOs in the array 1539 */ 1540 int gpio_request_array(const struct gpio *array, size_t num) 1541 { 1542 int i, err; 1543 1544 for (i = 0; i < num; i++, array++) { 1545 err = gpio_request_one(array->gpio, array->flags, array->label); 1546 if (err) 1547 goto err_free; 1548 } 1549 return 0; 1550 1551 err_free: 1552 while (i--) 1553 gpio_free((--array)->gpio); 1554 return err; 1555 } 1556 EXPORT_SYMBOL_GPL(gpio_request_array); 1557 1558 /** 1559 * gpio_free_array - release multiple GPIOs in a single call 1560 * @array: array of the 'struct gpio' 1561 * @num: how many GPIOs in the array 1562 */ 1563 void gpio_free_array(const struct gpio *array, size_t num) 1564 { 1565 while (num--) 1566 gpio_free((array++)->gpio); 1567 } 1568 EXPORT_SYMBOL_GPL(gpio_free_array); 1569 1570 /** 1571 * gpiochip_is_requested - return string iff signal was requested 1572 * @chip: controller managing the signal 1573 * @offset: of signal within controller's 0..(ngpio - 1) range 1574 * 1575 * Returns NULL if the GPIO is not currently requested, else a string. 1576 * If debugfs support is enabled, the string returned is the label passed 1577 * to gpio_request(); otherwise it is a meaningless constant. 1578 * 1579 * This function is for use by GPIO controller drivers. The label can 1580 * help with diagnostics, and knowing that the signal is used as a GPIO 1581 * can help avoid accidentally multiplexing it to another controller. 1582 */ 1583 const char *gpiochip_is_requested(struct gpio_chip *chip, unsigned offset) 1584 { 1585 struct gpio_desc *desc; 1586 1587 if (!GPIO_OFFSET_VALID(chip, offset)) 1588 return NULL; 1589 1590 desc = &chip->desc[offset]; 1591 1592 if (test_bit(FLAG_REQUESTED, &desc->flags) == 0) 1593 return NULL; 1594 #ifdef CONFIG_DEBUG_FS 1595 return desc->label; 1596 #else 1597 return "?"; 1598 #endif 1599 } 1600 EXPORT_SYMBOL_GPL(gpiochip_is_requested); 1601 1602 1603 /* Drivers MUST set GPIO direction before making get/set calls. In 1604 * some cases this is done in early boot, before IRQs are enabled. 1605 * 1606 * As a rule these aren't called more than once (except for drivers 1607 * using the open-drain emulation idiom) so these are natural places 1608 * to accumulate extra debugging checks. Note that we can't (yet) 1609 * rely on gpio_request() having been called beforehand. 1610 */ 1611 1612 static int gpiod_direction_input(struct gpio_desc *desc) 1613 { 1614 unsigned long flags; 1615 struct gpio_chip *chip; 1616 int status = -EINVAL; 1617 int offset; 1618 1619 spin_lock_irqsave(&gpio_lock, flags); 1620 1621 if (!desc) 1622 goto fail; 1623 chip = desc->chip; 1624 if (!chip || !chip->get || !chip->direction_input) 1625 goto fail; 1626 status = gpio_ensure_requested(desc); 1627 if (status < 0) 1628 goto fail; 1629 1630 /* now we know the gpio is valid and chip won't vanish */ 1631 1632 spin_unlock_irqrestore(&gpio_lock, flags); 1633 1634 might_sleep_if(chip->can_sleep); 1635 1636 offset = gpio_chip_hwgpio(desc); 1637 if (status) { 1638 status = chip->request(chip, offset); 1639 if (status < 0) { 1640 pr_debug("GPIO-%d: chip request fail, %d\n", 1641 desc_to_gpio(desc), status); 1642 /* and it's not available to anyone else ... 1643 * gpio_request() is the fully clean solution. 1644 */ 1645 goto lose; 1646 } 1647 } 1648 1649 status = chip->direction_input(chip, offset); 1650 if (status == 0) 1651 clear_bit(FLAG_IS_OUT, &desc->flags); 1652 1653 trace_gpio_direction(desc_to_gpio(desc), 1, status); 1654 lose: 1655 return status; 1656 fail: 1657 spin_unlock_irqrestore(&gpio_lock, flags); 1658 if (status) { 1659 int gpio = -1; 1660 if (desc) 1661 gpio = desc_to_gpio(desc); 1662 pr_debug("%s: gpio-%d status %d\n", 1663 __func__, gpio, status); 1664 } 1665 return status; 1666 } 1667 1668 int gpio_direction_input(unsigned gpio) 1669 { 1670 return gpiod_direction_input(gpio_to_desc(gpio)); 1671 } 1672 EXPORT_SYMBOL_GPL(gpio_direction_input); 1673 1674 static int gpiod_direction_output(struct gpio_desc *desc, int value) 1675 { 1676 unsigned long flags; 1677 struct gpio_chip *chip; 1678 int status = -EINVAL; 1679 int offset; 1680 1681 /* Open drain pin should not be driven to 1 */ 1682 if (value && test_bit(FLAG_OPEN_DRAIN, &desc->flags)) 1683 return gpiod_direction_input(desc); 1684 1685 /* Open source pin should not be driven to 0 */ 1686 if (!value && test_bit(FLAG_OPEN_SOURCE, &desc->flags)) 1687 return gpiod_direction_input(desc); 1688 1689 spin_lock_irqsave(&gpio_lock, flags); 1690 1691 if (!desc) 1692 goto fail; 1693 chip = desc->chip; 1694 if (!chip || !chip->set || !chip->direction_output) 1695 goto fail; 1696 status = gpio_ensure_requested(desc); 1697 if (status < 0) 1698 goto fail; 1699 1700 /* now we know the gpio is valid and chip won't vanish */ 1701 1702 spin_unlock_irqrestore(&gpio_lock, flags); 1703 1704 might_sleep_if(chip->can_sleep); 1705 1706 offset = gpio_chip_hwgpio(desc); 1707 if (status) { 1708 status = chip->request(chip, offset); 1709 if (status < 0) { 1710 pr_debug("GPIO-%d: chip request fail, %d\n", 1711 desc_to_gpio(desc), status); 1712 /* and it's not available to anyone else ... 1713 * gpio_request() is the fully clean solution. 1714 */ 1715 goto lose; 1716 } 1717 } 1718 1719 status = chip->direction_output(chip, offset, value); 1720 if (status == 0) 1721 set_bit(FLAG_IS_OUT, &desc->flags); 1722 trace_gpio_value(desc_to_gpio(desc), 0, value); 1723 trace_gpio_direction(desc_to_gpio(desc), 0, status); 1724 lose: 1725 return status; 1726 fail: 1727 spin_unlock_irqrestore(&gpio_lock, flags); 1728 if (status) { 1729 int gpio = -1; 1730 if (desc) 1731 gpio = desc_to_gpio(desc); 1732 pr_debug("%s: gpio-%d status %d\n", 1733 __func__, gpio, status); 1734 } 1735 return status; 1736 } 1737 1738 int gpio_direction_output(unsigned gpio, int value) 1739 { 1740 return gpiod_direction_output(gpio_to_desc(gpio), value); 1741 } 1742 EXPORT_SYMBOL_GPL(gpio_direction_output); 1743 1744 /** 1745 * gpio_set_debounce - sets @debounce time for a @gpio 1746 * @gpio: the gpio to set debounce time 1747 * @debounce: debounce time is microseconds 1748 */ 1749 static int gpiod_set_debounce(struct gpio_desc *desc, unsigned debounce) 1750 { 1751 unsigned long flags; 1752 struct gpio_chip *chip; 1753 int status = -EINVAL; 1754 int offset; 1755 1756 spin_lock_irqsave(&gpio_lock, flags); 1757 1758 if (!desc) 1759 goto fail; 1760 chip = desc->chip; 1761 if (!chip || !chip->set || !chip->set_debounce) 1762 goto fail; 1763 1764 status = gpio_ensure_requested(desc); 1765 if (status < 0) 1766 goto fail; 1767 1768 /* now we know the gpio is valid and chip won't vanish */ 1769 1770 spin_unlock_irqrestore(&gpio_lock, flags); 1771 1772 might_sleep_if(chip->can_sleep); 1773 1774 offset = gpio_chip_hwgpio(desc); 1775 return chip->set_debounce(chip, offset, debounce); 1776 1777 fail: 1778 spin_unlock_irqrestore(&gpio_lock, flags); 1779 if (status) { 1780 int gpio = -1; 1781 if (desc) 1782 gpio = desc_to_gpio(desc); 1783 pr_debug("%s: gpio-%d status %d\n", 1784 __func__, gpio, status); 1785 } 1786 1787 return status; 1788 } 1789 1790 int gpio_set_debounce(unsigned gpio, unsigned debounce) 1791 { 1792 return gpiod_set_debounce(gpio_to_desc(gpio), debounce); 1793 } 1794 EXPORT_SYMBOL_GPL(gpio_set_debounce); 1795 1796 /* I/O calls are only valid after configuration completed; the relevant 1797 * "is this a valid GPIO" error checks should already have been done. 1798 * 1799 * "Get" operations are often inlinable as reading a pin value register, 1800 * and masking the relevant bit in that register. 1801 * 1802 * When "set" operations are inlinable, they involve writing that mask to 1803 * one register to set a low value, or a different register to set it high. 1804 * Otherwise locking is needed, so there may be little value to inlining. 1805 * 1806 *------------------------------------------------------------------------ 1807 * 1808 * IMPORTANT!!! The hot paths -- get/set value -- assume that callers 1809 * have requested the GPIO. That can include implicit requesting by 1810 * a direction setting call. Marking a gpio as requested locks its chip 1811 * in memory, guaranteeing that these table lookups need no more locking 1812 * and that gpiochip_remove() will fail. 1813 * 1814 * REVISIT when debugging, consider adding some instrumentation to ensure 1815 * that the GPIO was actually requested. 1816 */ 1817 1818 /** 1819 * __gpio_get_value() - return a gpio's value 1820 * @gpio: gpio whose value will be returned 1821 * Context: any 1822 * 1823 * This is used directly or indirectly to implement gpio_get_value(). 1824 * It returns the zero or nonzero value provided by the associated 1825 * gpio_chip.get() method; or zero if no such method is provided. 1826 */ 1827 static int gpiod_get_value(struct gpio_desc *desc) 1828 { 1829 struct gpio_chip *chip; 1830 int value; 1831 int offset; 1832 1833 chip = desc->chip; 1834 offset = gpio_chip_hwgpio(desc); 1835 /* Should be using gpio_get_value_cansleep() */ 1836 WARN_ON(chip->can_sleep); 1837 value = chip->get ? chip->get(chip, offset) : 0; 1838 trace_gpio_value(desc_to_gpio(desc), 1, value); 1839 return value; 1840 } 1841 1842 int __gpio_get_value(unsigned gpio) 1843 { 1844 return gpiod_get_value(gpio_to_desc(gpio)); 1845 } 1846 EXPORT_SYMBOL_GPL(__gpio_get_value); 1847 1848 /* 1849 * _gpio_set_open_drain_value() - Set the open drain gpio's value. 1850 * @gpio: Gpio whose state need to be set. 1851 * @chip: Gpio chip. 1852 * @value: Non-zero for setting it HIGH otherise it will set to LOW. 1853 */ 1854 static void _gpio_set_open_drain_value(struct gpio_desc *desc, int value) 1855 { 1856 int err = 0; 1857 struct gpio_chip *chip = desc->chip; 1858 int offset = gpio_chip_hwgpio(desc); 1859 1860 if (value) { 1861 err = chip->direction_input(chip, offset); 1862 if (!err) 1863 clear_bit(FLAG_IS_OUT, &desc->flags); 1864 } else { 1865 err = chip->direction_output(chip, offset, 0); 1866 if (!err) 1867 set_bit(FLAG_IS_OUT, &desc->flags); 1868 } 1869 trace_gpio_direction(desc_to_gpio(desc), value, err); 1870 if (err < 0) 1871 pr_err("%s: Error in set_value for open drain gpio%d err %d\n", 1872 __func__, desc_to_gpio(desc), err); 1873 } 1874 1875 /* 1876 * _gpio_set_open_source() - Set the open source gpio's value. 1877 * @gpio: Gpio whose state need to be set. 1878 * @chip: Gpio chip. 1879 * @value: Non-zero for setting it HIGH otherise it will set to LOW. 1880 */ 1881 static void _gpio_set_open_source_value(struct gpio_desc *desc, int value) 1882 { 1883 int err = 0; 1884 struct gpio_chip *chip = desc->chip; 1885 int offset = gpio_chip_hwgpio(desc); 1886 1887 if (value) { 1888 err = chip->direction_output(chip, offset, 1); 1889 if (!err) 1890 set_bit(FLAG_IS_OUT, &desc->flags); 1891 } else { 1892 err = chip->direction_input(chip, offset); 1893 if (!err) 1894 clear_bit(FLAG_IS_OUT, &desc->flags); 1895 } 1896 trace_gpio_direction(desc_to_gpio(desc), !value, err); 1897 if (err < 0) 1898 pr_err("%s: Error in set_value for open source gpio%d err %d\n", 1899 __func__, desc_to_gpio(desc), err); 1900 } 1901 1902 /** 1903 * __gpio_set_value() - assign a gpio's value 1904 * @gpio: gpio whose value will be assigned 1905 * @value: value to assign 1906 * Context: any 1907 * 1908 * This is used directly or indirectly to implement gpio_set_value(). 1909 * It invokes the associated gpio_chip.set() method. 1910 */ 1911 static void gpiod_set_value(struct gpio_desc *desc, int value) 1912 { 1913 struct gpio_chip *chip; 1914 1915 chip = desc->chip; 1916 /* Should be using gpio_set_value_cansleep() */ 1917 WARN_ON(chip->can_sleep); 1918 trace_gpio_value(desc_to_gpio(desc), 0, value); 1919 if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) 1920 _gpio_set_open_drain_value(desc, value); 1921 else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) 1922 _gpio_set_open_source_value(desc, value); 1923 else 1924 chip->set(chip, gpio_chip_hwgpio(desc), value); 1925 } 1926 1927 void __gpio_set_value(unsigned gpio, int value) 1928 { 1929 return gpiod_set_value(gpio_to_desc(gpio), value); 1930 } 1931 EXPORT_SYMBOL_GPL(__gpio_set_value); 1932 1933 /** 1934 * __gpio_cansleep() - report whether gpio value access will sleep 1935 * @gpio: gpio in question 1936 * Context: any 1937 * 1938 * This is used directly or indirectly to implement gpio_cansleep(). It 1939 * returns nonzero if access reading or writing the GPIO value can sleep. 1940 */ 1941 static int gpiod_cansleep(struct gpio_desc *desc) 1942 { 1943 /* only call this on GPIOs that are valid! */ 1944 return desc->chip->can_sleep; 1945 } 1946 1947 int __gpio_cansleep(unsigned gpio) 1948 { 1949 return gpiod_cansleep(gpio_to_desc(gpio)); 1950 } 1951 EXPORT_SYMBOL_GPL(__gpio_cansleep); 1952 1953 /** 1954 * __gpio_to_irq() - return the IRQ corresponding to a GPIO 1955 * @gpio: gpio whose IRQ will be returned (already requested) 1956 * Context: any 1957 * 1958 * This is used directly or indirectly to implement gpio_to_irq(). 1959 * It returns the number of the IRQ signaled by this (input) GPIO, 1960 * or a negative errno. 1961 */ 1962 static int gpiod_to_irq(struct gpio_desc *desc) 1963 { 1964 struct gpio_chip *chip; 1965 int offset; 1966 1967 chip = desc->chip; 1968 offset = gpio_chip_hwgpio(desc); 1969 return chip->to_irq ? chip->to_irq(chip, offset) : -ENXIO; 1970 } 1971 1972 int __gpio_to_irq(unsigned gpio) 1973 { 1974 return gpiod_to_irq(gpio_to_desc(gpio)); 1975 } 1976 EXPORT_SYMBOL_GPL(__gpio_to_irq); 1977 1978 1979 /* There's no value in making it easy to inline GPIO calls that may sleep. 1980 * Common examples include ones connected to I2C or SPI chips. 1981 */ 1982 1983 static int gpiod_get_value_cansleep(struct gpio_desc *desc) 1984 { 1985 struct gpio_chip *chip; 1986 int value; 1987 int offset; 1988 1989 might_sleep_if(extra_checks); 1990 chip = desc->chip; 1991 offset = gpio_chip_hwgpio(desc); 1992 value = chip->get ? chip->get(chip, offset) : 0; 1993 trace_gpio_value(desc_to_gpio(desc), 1, value); 1994 return value; 1995 } 1996 1997 int gpio_get_value_cansleep(unsigned gpio) 1998 { 1999 return gpiod_get_value_cansleep(gpio_to_desc(gpio)); 2000 } 2001 EXPORT_SYMBOL_GPL(gpio_get_value_cansleep); 2002 2003 static void gpiod_set_value_cansleep(struct gpio_desc *desc, int value) 2004 { 2005 struct gpio_chip *chip; 2006 2007 might_sleep_if(extra_checks); 2008 chip = desc->chip; 2009 trace_gpio_value(desc_to_gpio(desc), 0, value); 2010 if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) 2011 _gpio_set_open_drain_value(desc, value); 2012 else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) 2013 _gpio_set_open_source_value(desc, value); 2014 else 2015 chip->set(chip, gpio_chip_hwgpio(desc), value); 2016 } 2017 2018 void gpio_set_value_cansleep(unsigned gpio, int value) 2019 { 2020 return gpiod_set_value_cansleep(gpio_to_desc(gpio), value); 2021 } 2022 EXPORT_SYMBOL_GPL(gpio_set_value_cansleep); 2023 2024 #ifdef CONFIG_DEBUG_FS 2025 2026 static void gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip) 2027 { 2028 unsigned i; 2029 unsigned gpio = chip->base; 2030 struct gpio_desc *gdesc = &chip->desc[0]; 2031 int is_out; 2032 2033 for (i = 0; i < chip->ngpio; i++, gpio++, gdesc++) { 2034 if (!test_bit(FLAG_REQUESTED, &gdesc->flags)) 2035 continue; 2036 2037 gpiod_get_direction(gdesc); 2038 is_out = test_bit(FLAG_IS_OUT, &gdesc->flags); 2039 seq_printf(s, " gpio-%-3d (%-20.20s) %s %s", 2040 gpio, gdesc->label, 2041 is_out ? "out" : "in ", 2042 chip->get 2043 ? (chip->get(chip, i) ? "hi" : "lo") 2044 : "? "); 2045 seq_printf(s, "\n"); 2046 } 2047 } 2048 2049 static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos) 2050 { 2051 unsigned long flags; 2052 struct gpio_chip *chip = NULL; 2053 loff_t index = *pos; 2054 2055 s->private = ""; 2056 2057 spin_lock_irqsave(&gpio_lock, flags); 2058 list_for_each_entry(chip, &gpio_chips, list) 2059 if (index-- == 0) { 2060 spin_unlock_irqrestore(&gpio_lock, flags); 2061 return chip; 2062 } 2063 spin_unlock_irqrestore(&gpio_lock, flags); 2064 2065 return NULL; 2066 } 2067 2068 static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos) 2069 { 2070 unsigned long flags; 2071 struct gpio_chip *chip = v; 2072 void *ret = NULL; 2073 2074 spin_lock_irqsave(&gpio_lock, flags); 2075 if (list_is_last(&chip->list, &gpio_chips)) 2076 ret = NULL; 2077 else 2078 ret = list_entry(chip->list.next, struct gpio_chip, list); 2079 spin_unlock_irqrestore(&gpio_lock, flags); 2080 2081 s->private = "\n"; 2082 ++*pos; 2083 2084 return ret; 2085 } 2086 2087 static void gpiolib_seq_stop(struct seq_file *s, void *v) 2088 { 2089 } 2090 2091 static int gpiolib_seq_show(struct seq_file *s, void *v) 2092 { 2093 struct gpio_chip *chip = v; 2094 struct device *dev; 2095 2096 seq_printf(s, "%sGPIOs %d-%d", (char *)s->private, 2097 chip->base, chip->base + chip->ngpio - 1); 2098 dev = chip->dev; 2099 if (dev) 2100 seq_printf(s, ", %s/%s", dev->bus ? dev->bus->name : "no-bus", 2101 dev_name(dev)); 2102 if (chip->label) 2103 seq_printf(s, ", %s", chip->label); 2104 if (chip->can_sleep) 2105 seq_printf(s, ", can sleep"); 2106 seq_printf(s, ":\n"); 2107 2108 if (chip->dbg_show) 2109 chip->dbg_show(s, chip); 2110 else 2111 gpiolib_dbg_show(s, chip); 2112 2113 return 0; 2114 } 2115 2116 static const struct seq_operations gpiolib_seq_ops = { 2117 .start = gpiolib_seq_start, 2118 .next = gpiolib_seq_next, 2119 .stop = gpiolib_seq_stop, 2120 .show = gpiolib_seq_show, 2121 }; 2122 2123 static int gpiolib_open(struct inode *inode, struct file *file) 2124 { 2125 return seq_open(file, &gpiolib_seq_ops); 2126 } 2127 2128 static const struct file_operations gpiolib_operations = { 2129 .owner = THIS_MODULE, 2130 .open = gpiolib_open, 2131 .read = seq_read, 2132 .llseek = seq_lseek, 2133 .release = seq_release, 2134 }; 2135 2136 static int __init gpiolib_debugfs_init(void) 2137 { 2138 /* /sys/kernel/debug/gpio */ 2139 (void) debugfs_create_file("gpio", S_IFREG | S_IRUGO, 2140 NULL, NULL, &gpiolib_operations); 2141 return 0; 2142 } 2143 subsys_initcall(gpiolib_debugfs_init); 2144 2145 #endif /* DEBUG_FS */ 2146