Linux Audio

Check our new training course

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