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