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