linux/drivers/gpio/gpiolib.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2
   3#include <linux/bitmap.h>
   4#include <linux/kernel.h>
   5#include <linux/module.h>
   6#include <linux/interrupt.h>
   7#include <linux/irq.h>
   8#include <linux/spinlock.h>
   9#include <linux/list.h>
  10#include <linux/device.h>
  11#include <linux/err.h>
  12#include <linux/debugfs.h>
  13#include <linux/seq_file.h>
  14#include <linux/gpio.h>
  15#include <linux/idr.h>
  16#include <linux/slab.h>
  17#include <linux/acpi.h>
  18#include <linux/gpio/driver.h>
  19#include <linux/gpio/machine.h>
  20#include <linux/pinctrl/consumer.h>
  21#include <linux/fs.h>
  22#include <linux/compat.h>
  23#include <linux/file.h>
  24#include <uapi/linux/gpio.h>
  25
  26#include "gpiolib.h"
  27#include "gpiolib-of.h"
  28#include "gpiolib-acpi.h"
  29#include "gpiolib-cdev.h"
  30#include "gpiolib-sysfs.h"
  31
  32#define CREATE_TRACE_POINTS
  33#include <trace/events/gpio.h>
  34
  35/* Implementation infrastructure for GPIO interfaces.
  36 *
  37 * The GPIO programming interface allows for inlining speed-critical
  38 * get/set operations for common cases, so that access to SOC-integrated
  39 * GPIOs can sometimes cost only an instruction or two per bit.
  40 */
  41
  42
  43/* When debugging, extend minimal trust to callers and platform code.
  44 * Also emit diagnostic messages that may help initial bringup, when
  45 * board setup or driver bugs are most common.
  46 *
  47 * Otherwise, minimize overhead in what may be bitbanging codepaths.
  48 */
  49#ifdef  DEBUG
  50#define extra_checks    1
  51#else
  52#define extra_checks    0
  53#endif
  54
  55/* Device and char device-related information */
  56static DEFINE_IDA(gpio_ida);
  57static dev_t gpio_devt;
  58#define GPIO_DEV_MAX 256 /* 256 GPIO chip devices supported */
  59static int gpio_bus_match(struct device *dev, struct device_driver *drv);
  60static struct bus_type gpio_bus_type = {
  61        .name = "gpio",
  62        .match = gpio_bus_match,
  63};
  64
  65/*
  66 * Number of GPIOs to use for the fast path in set array
  67 */
  68#define FASTPATH_NGPIO CONFIG_GPIOLIB_FASTPATH_LIMIT
  69
  70/* gpio_lock prevents conflicts during gpio_desc[] table updates.
  71 * While any GPIO is requested, its gpio_chip is not removable;
  72 * each GPIO's "requested" flag serves as a lock and refcount.
  73 */
  74DEFINE_SPINLOCK(gpio_lock);
  75
  76static DEFINE_MUTEX(gpio_lookup_lock);
  77static LIST_HEAD(gpio_lookup_list);
  78LIST_HEAD(gpio_devices);
  79
  80static DEFINE_MUTEX(gpio_machine_hogs_mutex);
  81static LIST_HEAD(gpio_machine_hogs);
  82
  83static void gpiochip_free_hogs(struct gpio_chip *gc);
  84static int gpiochip_add_irqchip(struct gpio_chip *gc,
  85                                struct lock_class_key *lock_key,
  86                                struct lock_class_key *request_key);
  87static void gpiochip_irqchip_remove(struct gpio_chip *gc);
  88static int gpiochip_irqchip_init_hw(struct gpio_chip *gc);
  89static int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc);
  90static void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc);
  91
  92static bool gpiolib_initialized;
  93
  94static inline void desc_set_label(struct gpio_desc *d, const char *label)
  95{
  96        d->label = label;
  97}
  98
  99/**
 100 * gpio_to_desc - Convert a GPIO number to its descriptor
 101 * @gpio: global GPIO number
 102 *
 103 * Returns:
 104 * The GPIO descriptor associated with the given GPIO, or %NULL if no GPIO
 105 * with the given number exists in the system.
 106 */
 107struct gpio_desc *gpio_to_desc(unsigned gpio)
 108{
 109        struct gpio_device *gdev;
 110        unsigned long flags;
 111
 112        spin_lock_irqsave(&gpio_lock, flags);
 113
 114        list_for_each_entry(gdev, &gpio_devices, list) {
 115                if (gdev->base <= gpio &&
 116                    gdev->base + gdev->ngpio > gpio) {
 117                        spin_unlock_irqrestore(&gpio_lock, flags);
 118                        return &gdev->descs[gpio - gdev->base];
 119                }
 120        }
 121
 122        spin_unlock_irqrestore(&gpio_lock, flags);
 123
 124        if (!gpio_is_valid(gpio))
 125                pr_warn("invalid GPIO %d\n", gpio);
 126
 127        return NULL;
 128}
 129EXPORT_SYMBOL_GPL(gpio_to_desc);
 130
 131/**
 132 * gpiochip_get_desc - get the GPIO descriptor corresponding to the given
 133 *                     hardware number for this chip
 134 * @gc: GPIO chip
 135 * @hwnum: hardware number of the GPIO for this chip
 136 *
 137 * Returns:
 138 * A pointer to the GPIO descriptor or ``ERR_PTR(-EINVAL)`` if no GPIO exists
 139 * in the given chip for the specified hardware number.
 140 */
 141struct gpio_desc *gpiochip_get_desc(struct gpio_chip *gc,
 142                                    unsigned int hwnum)
 143{
 144        struct gpio_device *gdev = gc->gpiodev;
 145
 146        if (hwnum >= gdev->ngpio)
 147                return ERR_PTR(-EINVAL);
 148
 149        return &gdev->descs[hwnum];
 150}
 151EXPORT_SYMBOL_GPL(gpiochip_get_desc);
 152
 153/**
 154 * desc_to_gpio - convert a GPIO descriptor to the integer namespace
 155 * @desc: GPIO descriptor
 156 *
 157 * This should disappear in the future but is needed since we still
 158 * use GPIO numbers for error messages and sysfs nodes.
 159 *
 160 * Returns:
 161 * The global GPIO number for the GPIO specified by its descriptor.
 162 */
 163int desc_to_gpio(const struct gpio_desc *desc)
 164{
 165        return desc->gdev->base + (desc - &desc->gdev->descs[0]);
 166}
 167EXPORT_SYMBOL_GPL(desc_to_gpio);
 168
 169
 170/**
 171 * gpiod_to_chip - Return the GPIO chip to which a GPIO descriptor belongs
 172 * @desc:       descriptor to return the chip of
 173 */
 174struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc)
 175{
 176        if (!desc || !desc->gdev)
 177                return NULL;
 178        return desc->gdev->chip;
 179}
 180EXPORT_SYMBOL_GPL(gpiod_to_chip);
 181
 182/* dynamic allocation of GPIOs, e.g. on a hotplugged device */
 183static int gpiochip_find_base(int ngpio)
 184{
 185        struct gpio_device *gdev;
 186        int base = ARCH_NR_GPIOS - ngpio;
 187
 188        list_for_each_entry_reverse(gdev, &gpio_devices, list) {
 189                /* found a free space? */
 190                if (gdev->base + gdev->ngpio <= base)
 191                        break;
 192                else
 193                        /* nope, check the space right before the chip */
 194                        base = gdev->base - ngpio;
 195        }
 196
 197        if (gpio_is_valid(base)) {
 198                pr_debug("%s: found new base at %d\n", __func__, base);
 199                return base;
 200        } else {
 201                pr_err("%s: cannot find free range\n", __func__);
 202                return -ENOSPC;
 203        }
 204}
 205
 206/**
 207 * gpiod_get_direction - return the current direction of a GPIO
 208 * @desc:       GPIO to get the direction of
 209 *
 210 * Returns 0 for output, 1 for input, or an error code in case of error.
 211 *
 212 * This function may sleep if gpiod_cansleep() is true.
 213 */
 214int gpiod_get_direction(struct gpio_desc *desc)
 215{
 216        struct gpio_chip *gc;
 217        unsigned int offset;
 218        int ret;
 219
 220        gc = gpiod_to_chip(desc);
 221        offset = gpio_chip_hwgpio(desc);
 222
 223        /*
 224         * Open drain emulation using input mode may incorrectly report
 225         * input here, fix that up.
 226         */
 227        if (test_bit(FLAG_OPEN_DRAIN, &desc->flags) &&
 228            test_bit(FLAG_IS_OUT, &desc->flags))
 229                return 0;
 230
 231        if (!gc->get_direction)
 232                return -ENOTSUPP;
 233
 234        ret = gc->get_direction(gc, offset);
 235        if (ret < 0)
 236                return ret;
 237
 238        /* GPIOF_DIR_IN or other positive, otherwise GPIOF_DIR_OUT */
 239        if (ret > 0)
 240                ret = 1;
 241
 242        assign_bit(FLAG_IS_OUT, &desc->flags, !ret);
 243
 244        return ret;
 245}
 246EXPORT_SYMBOL_GPL(gpiod_get_direction);
 247
 248/*
 249 * Add a new chip to the global chips list, keeping the list of chips sorted
 250 * by range(means [base, base + ngpio - 1]) order.
 251 *
 252 * Return -EBUSY if the new chip overlaps with some other chip's integer
 253 * space.
 254 */
 255static int gpiodev_add_to_list(struct gpio_device *gdev)
 256{
 257        struct gpio_device *prev, *next;
 258
 259        if (list_empty(&gpio_devices)) {
 260                /* initial entry in list */
 261                list_add_tail(&gdev->list, &gpio_devices);
 262                return 0;
 263        }
 264
 265        next = list_entry(gpio_devices.next, struct gpio_device, list);
 266        if (gdev->base + gdev->ngpio <= next->base) {
 267                /* add before first entry */
 268                list_add(&gdev->list, &gpio_devices);
 269                return 0;
 270        }
 271
 272        prev = list_entry(gpio_devices.prev, struct gpio_device, list);
 273        if (prev->base + prev->ngpio <= gdev->base) {
 274                /* add behind last entry */
 275                list_add_tail(&gdev->list, &gpio_devices);
 276                return 0;
 277        }
 278
 279        list_for_each_entry_safe(prev, next, &gpio_devices, list) {
 280                /* at the end of the list */
 281                if (&next->list == &gpio_devices)
 282                        break;
 283
 284                /* add between prev and next */
 285                if (prev->base + prev->ngpio <= gdev->base
 286                                && gdev->base + gdev->ngpio <= next->base) {
 287                        list_add(&gdev->list, &prev->list);
 288                        return 0;
 289                }
 290        }
 291
 292        dev_err(&gdev->dev, "GPIO integer space overlap, cannot add chip\n");
 293        return -EBUSY;
 294}
 295
 296/*
 297 * Convert a GPIO name to its descriptor
 298 * Note that there is no guarantee that GPIO names are globally unique!
 299 * Hence this function will return, if it exists, a reference to the first GPIO
 300 * line found that matches the given name.
 301 */
 302static struct gpio_desc *gpio_name_to_desc(const char * const name)
 303{
 304        struct gpio_device *gdev;
 305        unsigned long flags;
 306
 307        if (!name)
 308                return NULL;
 309
 310        spin_lock_irqsave(&gpio_lock, flags);
 311
 312        list_for_each_entry(gdev, &gpio_devices, list) {
 313                int i;
 314
 315                for (i = 0; i != gdev->ngpio; ++i) {
 316                        struct gpio_desc *desc = &gdev->descs[i];
 317
 318                        if (!desc->name)
 319                                continue;
 320
 321                        if (!strcmp(desc->name, name)) {
 322                                spin_unlock_irqrestore(&gpio_lock, flags);
 323                                return desc;
 324                        }
 325                }
 326        }
 327
 328        spin_unlock_irqrestore(&gpio_lock, flags);
 329
 330        return NULL;
 331}
 332
 333/*
 334 * Take the names from gc->names and assign them to their GPIO descriptors.
 335 * Warn if a name is already used for a GPIO line on a different GPIO chip.
 336 *
 337 * Note that:
 338 *   1. Non-unique names are still accepted,
 339 *   2. Name collisions within the same GPIO chip are not reported.
 340 */
 341static int gpiochip_set_desc_names(struct gpio_chip *gc)
 342{
 343        struct gpio_device *gdev = gc->gpiodev;
 344        int i;
 345
 346        /* First check all names if they are unique */
 347        for (i = 0; i != gc->ngpio; ++i) {
 348                struct gpio_desc *gpio;
 349
 350                gpio = gpio_name_to_desc(gc->names[i]);
 351                if (gpio)
 352                        dev_warn(&gdev->dev,
 353                                 "Detected name collision for GPIO name '%s'\n",
 354                                 gc->names[i]);
 355        }
 356
 357        /* Then add all names to the GPIO descriptors */
 358        for (i = 0; i != gc->ngpio; ++i)
 359                gdev->descs[i].name = gc->names[i];
 360
 361        return 0;
 362}
 363
 364/*
 365 * devprop_gpiochip_set_names - Set GPIO line names using device properties
 366 * @chip: GPIO chip whose lines should be named, if possible
 367 *
 368 * Looks for device property "gpio-line-names" and if it exists assigns
 369 * GPIO line names for the chip. The memory allocated for the assigned
 370 * names belong to the underlying firmware node and should not be released
 371 * by the caller.
 372 */
 373static int devprop_gpiochip_set_names(struct gpio_chip *chip)
 374{
 375        struct gpio_device *gdev = chip->gpiodev;
 376        struct fwnode_handle *fwnode = dev_fwnode(&gdev->dev);
 377        const char **names;
 378        int ret, i;
 379        int count;
 380
 381        count = fwnode_property_string_array_count(fwnode, "gpio-line-names");
 382        if (count < 0)
 383                return 0;
 384
 385        /*
 386         * When offset is set in the driver side we assume the driver internally
 387         * is using more than one gpiochip per the same device. We have to stop
 388         * setting friendly names if the specified ones with 'gpio-line-names'
 389         * are less than the offset in the device itself. This means all the
 390         * lines are not present for every single pin within all the internal
 391         * gpiochips.
 392         */
 393        if (count <= chip->offset) {
 394                dev_warn(&gdev->dev, "gpio-line-names too short (length %d), cannot map names for the gpiochip at offset %u\n",
 395                         count, chip->offset);
 396                return 0;
 397        }
 398
 399        names = kcalloc(count, sizeof(*names), GFP_KERNEL);
 400        if (!names)
 401                return -ENOMEM;
 402
 403        ret = fwnode_property_read_string_array(fwnode, "gpio-line-names",
 404                                                names, count);
 405        if (ret < 0) {
 406                dev_warn(&gdev->dev, "failed to read GPIO line names\n");
 407                kfree(names);
 408                return ret;
 409        }
 410
 411        /*
 412         * When more that one gpiochip per device is used, 'count' can
 413         * contain at most number gpiochips x chip->ngpio. We have to
 414         * correctly distribute all defined lines taking into account
 415         * chip->offset as starting point from where we will assign
 416         * the names to pins from the 'names' array. Since property
 417         * 'gpio-line-names' cannot contains gaps, we have to be sure
 418         * we only assign those pins that really exists since chip->ngpio
 419         * can be different of the chip->offset.
 420         */
 421        count = (count > chip->offset) ? count - chip->offset : count;
 422        if (count > chip->ngpio)
 423                count = chip->ngpio;
 424
 425        for (i = 0; i < count; i++)
 426                gdev->descs[i].name = names[chip->offset + i];
 427
 428        kfree(names);
 429
 430        return 0;
 431}
 432
 433static unsigned long *gpiochip_allocate_mask(struct gpio_chip *gc)
 434{
 435        unsigned long *p;
 436
 437        p = bitmap_alloc(gc->ngpio, GFP_KERNEL);
 438        if (!p)
 439                return NULL;
 440
 441        /* Assume by default all GPIOs are valid */
 442        bitmap_fill(p, gc->ngpio);
 443
 444        return p;
 445}
 446
 447static int gpiochip_alloc_valid_mask(struct gpio_chip *gc)
 448{
 449        if (!(of_gpio_need_valid_mask(gc) || gc->init_valid_mask))
 450                return 0;
 451
 452        gc->valid_mask = gpiochip_allocate_mask(gc);
 453        if (!gc->valid_mask)
 454                return -ENOMEM;
 455
 456        return 0;
 457}
 458
 459static int gpiochip_init_valid_mask(struct gpio_chip *gc)
 460{
 461        if (gc->init_valid_mask)
 462                return gc->init_valid_mask(gc,
 463                                           gc->valid_mask,
 464                                           gc->ngpio);
 465
 466        return 0;
 467}
 468
 469static void gpiochip_free_valid_mask(struct gpio_chip *gc)
 470{
 471        bitmap_free(gc->valid_mask);
 472        gc->valid_mask = NULL;
 473}
 474
 475static int gpiochip_add_pin_ranges(struct gpio_chip *gc)
 476{
 477        if (gc->add_pin_ranges)
 478                return gc->add_pin_ranges(gc);
 479
 480        return 0;
 481}
 482
 483bool gpiochip_line_is_valid(const struct gpio_chip *gc,
 484                                unsigned int offset)
 485{
 486        /* No mask means all valid */
 487        if (likely(!gc->valid_mask))
 488                return true;
 489        return test_bit(offset, gc->valid_mask);
 490}
 491EXPORT_SYMBOL_GPL(gpiochip_line_is_valid);
 492
 493static void gpiodevice_release(struct device *dev)
 494{
 495        struct gpio_device *gdev = container_of(dev, struct gpio_device, dev);
 496        unsigned long flags;
 497
 498        spin_lock_irqsave(&gpio_lock, flags);
 499        list_del(&gdev->list);
 500        spin_unlock_irqrestore(&gpio_lock, flags);
 501
 502        ida_free(&gpio_ida, gdev->id);
 503        kfree_const(gdev->label);
 504        kfree(gdev->descs);
 505        kfree(gdev);
 506}
 507
 508#ifdef CONFIG_GPIO_CDEV
 509#define gcdev_register(gdev, devt)      gpiolib_cdev_register((gdev), (devt))
 510#define gcdev_unregister(gdev)          gpiolib_cdev_unregister((gdev))
 511#else
 512/*
 513 * gpiolib_cdev_register() indirectly calls device_add(), which is still
 514 * required even when cdev is not selected.
 515 */
 516#define gcdev_register(gdev, devt)      device_add(&(gdev)->dev)
 517#define gcdev_unregister(gdev)          device_del(&(gdev)->dev)
 518#endif
 519
 520static int gpiochip_setup_dev(struct gpio_device *gdev)
 521{
 522        int ret;
 523
 524        ret = gcdev_register(gdev, gpio_devt);
 525        if (ret)
 526                return ret;
 527
 528        ret = gpiochip_sysfs_register(gdev);
 529        if (ret)
 530                goto err_remove_device;
 531
 532        /* From this point, the .release() function cleans up gpio_device */
 533        gdev->dev.release = gpiodevice_release;
 534        dev_dbg(&gdev->dev, "registered GPIOs %d to %d on %s\n", gdev->base,
 535                gdev->base + gdev->ngpio - 1, gdev->chip->label ? : "generic");
 536
 537        return 0;
 538
 539err_remove_device:
 540        gcdev_unregister(gdev);
 541        return ret;
 542}
 543
 544static void gpiochip_machine_hog(struct gpio_chip *gc, struct gpiod_hog *hog)
 545{
 546        struct gpio_desc *desc;
 547        int rv;
 548
 549        desc = gpiochip_get_desc(gc, hog->chip_hwnum);
 550        if (IS_ERR(desc)) {
 551                chip_err(gc, "%s: unable to get GPIO desc: %ld\n", __func__,
 552                         PTR_ERR(desc));
 553                return;
 554        }
 555
 556        if (test_bit(FLAG_IS_HOGGED, &desc->flags))
 557                return;
 558
 559        rv = gpiod_hog(desc, hog->line_name, hog->lflags, hog->dflags);
 560        if (rv)
 561                gpiod_err(desc, "%s: unable to hog GPIO line (%s:%u): %d\n",
 562                          __func__, gc->label, hog->chip_hwnum, rv);
 563}
 564
 565static void machine_gpiochip_add(struct gpio_chip *gc)
 566{
 567        struct gpiod_hog *hog;
 568
 569        mutex_lock(&gpio_machine_hogs_mutex);
 570
 571        list_for_each_entry(hog, &gpio_machine_hogs, list) {
 572                if (!strcmp(gc->label, hog->chip_label))
 573                        gpiochip_machine_hog(gc, hog);
 574        }
 575
 576        mutex_unlock(&gpio_machine_hogs_mutex);
 577}
 578
 579static void gpiochip_setup_devs(void)
 580{
 581        struct gpio_device *gdev;
 582        int ret;
 583
 584        list_for_each_entry(gdev, &gpio_devices, list) {
 585                ret = gpiochip_setup_dev(gdev);
 586                if (ret)
 587                        dev_err(&gdev->dev,
 588                                "Failed to initialize gpio device (%d)\n", ret);
 589        }
 590}
 591
 592int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
 593                               struct lock_class_key *lock_key,
 594                               struct lock_class_key *request_key)
 595{
 596        struct fwnode_handle *fwnode = gc->parent ? dev_fwnode(gc->parent) : NULL;
 597        unsigned long   flags;
 598        int             ret = 0;
 599        unsigned        i;
 600        int             base = gc->base;
 601        struct gpio_device *gdev;
 602
 603        /*
 604         * First: allocate and populate the internal stat container, and
 605         * set up the struct device.
 606         */
 607        gdev = kzalloc(sizeof(*gdev), GFP_KERNEL);
 608        if (!gdev)
 609                return -ENOMEM;
 610        gdev->dev.bus = &gpio_bus_type;
 611        gdev->dev.parent = gc->parent;
 612        gdev->chip = gc;
 613        gc->gpiodev = gdev;
 614
 615        of_gpio_dev_init(gc, gdev);
 616        acpi_gpio_dev_init(gc, gdev);
 617
 618        /*
 619         * Assign fwnode depending on the result of the previous calls,
 620         * if none of them succeed, assign it to the parent's one.
 621         */
 622        gdev->dev.fwnode = dev_fwnode(&gdev->dev) ?: fwnode;
 623
 624        gdev->id = ida_alloc(&gpio_ida, GFP_KERNEL);
 625        if (gdev->id < 0) {
 626                ret = gdev->id;
 627                goto err_free_gdev;
 628        }
 629
 630        ret = dev_set_name(&gdev->dev, GPIOCHIP_NAME "%d", gdev->id);
 631        if (ret)
 632                goto err_free_ida;
 633
 634        device_initialize(&gdev->dev);
 635        if (gc->parent && gc->parent->driver)
 636                gdev->owner = gc->parent->driver->owner;
 637        else if (gc->owner)
 638                /* TODO: remove chip->owner */
 639                gdev->owner = gc->owner;
 640        else
 641                gdev->owner = THIS_MODULE;
 642
 643        gdev->descs = kcalloc(gc->ngpio, sizeof(gdev->descs[0]), GFP_KERNEL);
 644        if (!gdev->descs) {
 645                ret = -ENOMEM;
 646                goto err_free_dev_name;
 647        }
 648
 649        if (gc->ngpio == 0) {
 650                chip_err(gc, "tried to insert a GPIO chip with zero lines\n");
 651                ret = -EINVAL;
 652                goto err_free_descs;
 653        }
 654
 655        if (gc->ngpio > FASTPATH_NGPIO)
 656                chip_warn(gc, "line cnt %u is greater than fast path cnt %u\n",
 657                          gc->ngpio, FASTPATH_NGPIO);
 658
 659        gdev->label = kstrdup_const(gc->label ?: "unknown", GFP_KERNEL);
 660        if (!gdev->label) {
 661                ret = -ENOMEM;
 662                goto err_free_descs;
 663        }
 664
 665        gdev->ngpio = gc->ngpio;
 666        gdev->data = data;
 667
 668        spin_lock_irqsave(&gpio_lock, flags);
 669
 670        /*
 671         * TODO: this allocates a Linux GPIO number base in the global
 672         * GPIO numberspace for this chip. In the long run we want to
 673         * get *rid* of this numberspace and use only descriptors, but
 674         * it may be a pipe dream. It will not happen before we get rid
 675         * of the sysfs interface anyways.
 676         */
 677        if (base < 0) {
 678                base = gpiochip_find_base(gc->ngpio);
 679                if (base < 0) {
 680                        ret = base;
 681                        spin_unlock_irqrestore(&gpio_lock, flags);
 682                        goto err_free_label;
 683                }
 684                /*
 685                 * TODO: it should not be necessary to reflect the assigned
 686                 * base outside of the GPIO subsystem. Go over drivers and
 687                 * see if anyone makes use of this, else drop this and assign
 688                 * a poison instead.
 689                 */
 690                gc->base = base;
 691        }
 692        gdev->base = base;
 693
 694        ret = gpiodev_add_to_list(gdev);
 695        if (ret) {
 696                spin_unlock_irqrestore(&gpio_lock, flags);
 697                goto err_free_label;
 698        }
 699
 700        for (i = 0; i < gc->ngpio; i++)
 701                gdev->descs[i].gdev = gdev;
 702
 703        spin_unlock_irqrestore(&gpio_lock, flags);
 704
 705        BLOCKING_INIT_NOTIFIER_HEAD(&gdev->notifier);
 706
 707#ifdef CONFIG_PINCTRL
 708        INIT_LIST_HEAD(&gdev->pin_ranges);
 709#endif
 710
 711        if (gc->names)
 712                ret = gpiochip_set_desc_names(gc);
 713        else
 714                ret = devprop_gpiochip_set_names(gc);
 715        if (ret)
 716                goto err_remove_from_list;
 717
 718        ret = gpiochip_alloc_valid_mask(gc);
 719        if (ret)
 720                goto err_remove_from_list;
 721
 722        ret = of_gpiochip_add(gc);
 723        if (ret)
 724                goto err_free_gpiochip_mask;
 725
 726        ret = gpiochip_init_valid_mask(gc);
 727        if (ret)
 728                goto err_remove_of_chip;
 729
 730        for (i = 0; i < gc->ngpio; i++) {
 731                struct gpio_desc *desc = &gdev->descs[i];
 732
 733                if (gc->get_direction && gpiochip_line_is_valid(gc, i)) {
 734                        assign_bit(FLAG_IS_OUT,
 735                                   &desc->flags, !gc->get_direction(gc, i));
 736                } else {
 737                        assign_bit(FLAG_IS_OUT,
 738                                   &desc->flags, !gc->direction_input);
 739                }
 740        }
 741
 742        ret = gpiochip_add_pin_ranges(gc);
 743        if (ret)
 744                goto err_remove_of_chip;
 745
 746        acpi_gpiochip_add(gc);
 747
 748        machine_gpiochip_add(gc);
 749
 750        ret = gpiochip_irqchip_init_valid_mask(gc);
 751        if (ret)
 752                goto err_remove_acpi_chip;
 753
 754        ret = gpiochip_irqchip_init_hw(gc);
 755        if (ret)
 756                goto err_remove_acpi_chip;
 757
 758        ret = gpiochip_add_irqchip(gc, lock_key, request_key);
 759        if (ret)
 760                goto err_remove_irqchip_mask;
 761
 762        /*
 763         * By first adding the chardev, and then adding the device,
 764         * we get a device node entry in sysfs under
 765         * /sys/bus/gpio/devices/gpiochipN/dev that can be used for
 766         * coldplug of device nodes and other udev business.
 767         * We can do this only if gpiolib has been initialized.
 768         * Otherwise, defer until later.
 769         */
 770        if (gpiolib_initialized) {
 771                ret = gpiochip_setup_dev(gdev);
 772                if (ret)
 773                        goto err_remove_irqchip;
 774        }
 775        return 0;
 776
 777err_remove_irqchip:
 778        gpiochip_irqchip_remove(gc);
 779err_remove_irqchip_mask:
 780        gpiochip_irqchip_free_valid_mask(gc);
 781err_remove_acpi_chip:
 782        acpi_gpiochip_remove(gc);
 783err_remove_of_chip:
 784        gpiochip_free_hogs(gc);
 785        of_gpiochip_remove(gc);
 786err_free_gpiochip_mask:
 787        gpiochip_remove_pin_ranges(gc);
 788        gpiochip_free_valid_mask(gc);
 789err_remove_from_list:
 790        spin_lock_irqsave(&gpio_lock, flags);
 791        list_del(&gdev->list);
 792        spin_unlock_irqrestore(&gpio_lock, flags);
 793err_free_label:
 794        kfree_const(gdev->label);
 795err_free_descs:
 796        kfree(gdev->descs);
 797err_free_dev_name:
 798        kfree(dev_name(&gdev->dev));
 799err_free_ida:
 800        ida_free(&gpio_ida, gdev->id);
 801err_free_gdev:
 802        /* failures here can mean systems won't boot... */
 803        if (ret != -EPROBE_DEFER) {
 804                pr_err("%s: GPIOs %d..%d (%s) failed to register, %d\n", __func__,
 805                       gdev->base, gdev->base + gdev->ngpio - 1,
 806                       gc->label ? : "generic", ret);
 807        }
 808        kfree(gdev);
 809        return ret;
 810}
 811EXPORT_SYMBOL_GPL(gpiochip_add_data_with_key);
 812
 813/**
 814 * gpiochip_get_data() - get per-subdriver data for the chip
 815 * @gc: GPIO chip
 816 *
 817 * Returns:
 818 * The per-subdriver data for the chip.
 819 */
 820void *gpiochip_get_data(struct gpio_chip *gc)
 821{
 822        return gc->gpiodev->data;
 823}
 824EXPORT_SYMBOL_GPL(gpiochip_get_data);
 825
 826/**
 827 * gpiochip_remove() - unregister a gpio_chip
 828 * @gc: the chip to unregister
 829 *
 830 * A gpio_chip with any GPIOs still requested may not be removed.
 831 */
 832void gpiochip_remove(struct gpio_chip *gc)
 833{
 834        struct gpio_device *gdev = gc->gpiodev;
 835        unsigned long   flags;
 836        unsigned int    i;
 837
 838        /* FIXME: should the legacy sysfs handling be moved to gpio_device? */
 839        gpiochip_sysfs_unregister(gdev);
 840        gpiochip_free_hogs(gc);
 841        /* Numb the device, cancelling all outstanding operations */
 842        gdev->chip = NULL;
 843        gpiochip_irqchip_remove(gc);
 844        acpi_gpiochip_remove(gc);
 845        of_gpiochip_remove(gc);
 846        gpiochip_remove_pin_ranges(gc);
 847        gpiochip_free_valid_mask(gc);
 848        /*
 849         * We accept no more calls into the driver from this point, so
 850         * NULL the driver data pointer
 851         */
 852        gdev->data = NULL;
 853
 854        spin_lock_irqsave(&gpio_lock, flags);
 855        for (i = 0; i < gdev->ngpio; i++) {
 856                if (gpiochip_is_requested(gc, i))
 857                        break;
 858        }
 859        spin_unlock_irqrestore(&gpio_lock, flags);
 860
 861        if (i != gdev->ngpio)
 862                dev_crit(&gdev->dev,
 863                         "REMOVING GPIOCHIP WITH GPIOS STILL REQUESTED\n");
 864
 865        /*
 866         * The gpiochip side puts its use of the device to rest here:
 867         * if there are no userspace clients, the chardev and device will
 868         * be removed, else it will be dangling until the last user is
 869         * gone.
 870         */
 871        gcdev_unregister(gdev);
 872        put_device(&gdev->dev);
 873}
 874EXPORT_SYMBOL_GPL(gpiochip_remove);
 875
 876/**
 877 * gpiochip_find() - iterator for locating a specific gpio_chip
 878 * @data: data to pass to match function
 879 * @match: Callback function to check gpio_chip
 880 *
 881 * Similar to bus_find_device.  It returns a reference to a gpio_chip as
 882 * determined by a user supplied @match callback.  The callback should return
 883 * 0 if the device doesn't match and non-zero if it does.  If the callback is
 884 * non-zero, this function will return to the caller and not iterate over any
 885 * more gpio_chips.
 886 */
 887struct gpio_chip *gpiochip_find(void *data,
 888                                int (*match)(struct gpio_chip *gc,
 889                                             void *data))
 890{
 891        struct gpio_device *gdev;
 892        struct gpio_chip *gc = NULL;
 893        unsigned long flags;
 894
 895        spin_lock_irqsave(&gpio_lock, flags);
 896        list_for_each_entry(gdev, &gpio_devices, list)
 897                if (gdev->chip && match(gdev->chip, data)) {
 898                        gc = gdev->chip;
 899                        break;
 900                }
 901
 902        spin_unlock_irqrestore(&gpio_lock, flags);
 903
 904        return gc;
 905}
 906EXPORT_SYMBOL_GPL(gpiochip_find);
 907
 908static int gpiochip_match_name(struct gpio_chip *gc, void *data)
 909{
 910        const char *name = data;
 911
 912        return !strcmp(gc->label, name);
 913}
 914
 915static struct gpio_chip *find_chip_by_name(const char *name)
 916{
 917        return gpiochip_find((void *)name, gpiochip_match_name);
 918}
 919
 920#ifdef CONFIG_GPIOLIB_IRQCHIP
 921
 922/*
 923 * The following is irqchip helper code for gpiochips.
 924 */
 925
 926static int gpiochip_irqchip_init_hw(struct gpio_chip *gc)
 927{
 928        struct gpio_irq_chip *girq = &gc->irq;
 929
 930        if (!girq->init_hw)
 931                return 0;
 932
 933        return girq->init_hw(gc);
 934}
 935
 936static int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc)
 937{
 938        struct gpio_irq_chip *girq = &gc->irq;
 939
 940        if (!girq->init_valid_mask)
 941                return 0;
 942
 943        girq->valid_mask = gpiochip_allocate_mask(gc);
 944        if (!girq->valid_mask)
 945                return -ENOMEM;
 946
 947        girq->init_valid_mask(gc, girq->valid_mask, gc->ngpio);
 948
 949        return 0;
 950}
 951
 952static void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc)
 953{
 954        bitmap_free(gc->irq.valid_mask);
 955        gc->irq.valid_mask = NULL;
 956}
 957
 958bool gpiochip_irqchip_irq_valid(const struct gpio_chip *gc,
 959                                unsigned int offset)
 960{
 961        if (!gpiochip_line_is_valid(gc, offset))
 962                return false;
 963        /* No mask means all valid */
 964        if (likely(!gc->irq.valid_mask))
 965                return true;
 966        return test_bit(offset, gc->irq.valid_mask);
 967}
 968EXPORT_SYMBOL_GPL(gpiochip_irqchip_irq_valid);
 969
 970#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
 971
 972/**
 973 * gpiochip_set_hierarchical_irqchip() - connects a hierarchical irqchip
 974 * to a gpiochip
 975 * @gc: the gpiochip to set the irqchip hierarchical handler to
 976 * @irqchip: the irqchip to handle this level of the hierarchy, the interrupt
 977 * will then percolate up to the parent
 978 */
 979static void gpiochip_set_hierarchical_irqchip(struct gpio_chip *gc,
 980                                              struct irq_chip *irqchip)
 981{
 982        /* DT will deal with mapping each IRQ as we go along */
 983        if (is_of_node(gc->irq.fwnode))
 984                return;
 985
 986        /*
 987         * This is for legacy and boardfile "irqchip" fwnodes: allocate
 988         * irqs upfront instead of dynamically since we don't have the
 989         * dynamic type of allocation that hardware description languages
 990         * provide. Once all GPIO drivers using board files are gone from
 991         * the kernel we can delete this code, but for a transitional period
 992         * it is necessary to keep this around.
 993         */
 994        if (is_fwnode_irqchip(gc->irq.fwnode)) {
 995                int i;
 996                int ret;
 997
 998                for (i = 0; i < gc->ngpio; i++) {
 999                        struct irq_fwspec fwspec;
1000                        unsigned int parent_hwirq;
1001                        unsigned int parent_type;
1002                        struct gpio_irq_chip *girq = &gc->irq;
1003
1004                        /*
1005                         * We call the child to parent translation function
1006                         * only to check if the child IRQ is valid or not.
1007                         * Just pick the rising edge type here as that is what
1008                         * we likely need to support.
1009                         */
1010                        ret = girq->child_to_parent_hwirq(gc, i,
1011                                                          IRQ_TYPE_EDGE_RISING,
1012                                                          &parent_hwirq,
1013                                                          &parent_type);
1014                        if (ret) {
1015                                chip_err(gc, "skip set-up on hwirq %d\n",
1016                                         i);
1017                                continue;
1018                        }
1019
1020                        fwspec.fwnode = gc->irq.fwnode;
1021                        /* This is the hwirq for the GPIO line side of things */
1022                        fwspec.param[0] = girq->child_offset_to_irq(gc, i);
1023                        /* Just pick something */
1024                        fwspec.param[1] = IRQ_TYPE_EDGE_RISING;
1025                        fwspec.param_count = 2;
1026                        ret = __irq_domain_alloc_irqs(gc->irq.domain,
1027                                                      /* just pick something */
1028                                                      -1,
1029                                                      1,
1030                                                      NUMA_NO_NODE,
1031                                                      &fwspec,
1032                                                      false,
1033                                                      NULL);
1034                        if (ret < 0) {
1035                                chip_err(gc,
1036                                         "can not allocate irq for GPIO line %d parent hwirq %d in hierarchy domain: %d\n",
1037                                         i, parent_hwirq,
1038                                         ret);
1039                        }
1040                }
1041        }
1042
1043        chip_err(gc, "%s unknown fwnode type proceed anyway\n", __func__);
1044
1045        return;
1046}
1047
1048static int gpiochip_hierarchy_irq_domain_translate(struct irq_domain *d,
1049                                                   struct irq_fwspec *fwspec,
1050                                                   unsigned long *hwirq,
1051                                                   unsigned int *type)
1052{
1053        /* We support standard DT translation */
1054        if (is_of_node(fwspec->fwnode) && fwspec->param_count == 2) {
1055                return irq_domain_translate_twocell(d, fwspec, hwirq, type);
1056        }
1057
1058        /* This is for board files and others not using DT */
1059        if (is_fwnode_irqchip(fwspec->fwnode)) {
1060                int ret;
1061
1062                ret = irq_domain_translate_twocell(d, fwspec, hwirq, type);
1063                if (ret)
1064                        return ret;
1065                WARN_ON(*type == IRQ_TYPE_NONE);
1066                return 0;
1067        }
1068        return -EINVAL;
1069}
1070
1071static int gpiochip_hierarchy_irq_domain_alloc(struct irq_domain *d,
1072                                               unsigned int irq,
1073                                               unsigned int nr_irqs,
1074                                               void *data)
1075{
1076        struct gpio_chip *gc = d->host_data;
1077        irq_hw_number_t hwirq;
1078        unsigned int type = IRQ_TYPE_NONE;
1079        struct irq_fwspec *fwspec = data;
1080        void *parent_arg;
1081        unsigned int parent_hwirq;
1082        unsigned int parent_type;
1083        struct gpio_irq_chip *girq = &gc->irq;
1084        int ret;
1085
1086        /*
1087         * The nr_irqs parameter is always one except for PCI multi-MSI
1088         * so this should not happen.
1089         */
1090        WARN_ON(nr_irqs != 1);
1091
1092        ret = gc->irq.child_irq_domain_ops.translate(d, fwspec, &hwirq, &type);
1093        if (ret)
1094                return ret;
1095
1096        chip_dbg(gc, "allocate IRQ %d, hwirq %lu\n", irq,  hwirq);
1097
1098        ret = girq->child_to_parent_hwirq(gc, hwirq, type,
1099                                          &parent_hwirq, &parent_type);
1100        if (ret) {
1101                chip_err(gc, "can't look up hwirq %lu\n", hwirq);
1102                return ret;
1103        }
1104        chip_dbg(gc, "found parent hwirq %u\n", parent_hwirq);
1105
1106        /*
1107         * We set handle_bad_irq because the .set_type() should
1108         * always be invoked and set the right type of handler.
1109         */
1110        irq_domain_set_info(d,
1111                            irq,
1112                            hwirq,
1113                            gc->irq.chip,
1114                            gc,
1115                            girq->handler,
1116                            NULL, NULL);
1117        irq_set_probe(irq);
1118
1119        /* This parent only handles asserted level IRQs */
1120        parent_arg = girq->populate_parent_alloc_arg(gc, parent_hwirq, parent_type);
1121        if (!parent_arg)
1122                return -ENOMEM;
1123
1124        chip_dbg(gc, "alloc_irqs_parent for %d parent hwirq %d\n",
1125                  irq, parent_hwirq);
1126        irq_set_lockdep_class(irq, gc->irq.lock_key, gc->irq.request_key);
1127        ret = irq_domain_alloc_irqs_parent(d, irq, 1, parent_arg);
1128        /*
1129         * If the parent irqdomain is msi, the interrupts have already
1130         * been allocated, so the EEXIST is good.
1131         */
1132        if (irq_domain_is_msi(d->parent) && (ret == -EEXIST))
1133                ret = 0;
1134        if (ret)
1135                chip_err(gc,
1136                         "failed to allocate parent hwirq %d for hwirq %lu\n",
1137                         parent_hwirq, hwirq);
1138
1139        kfree(parent_arg);
1140        return ret;
1141}
1142
1143static unsigned int gpiochip_child_offset_to_irq_noop(struct gpio_chip *gc,
1144                                                      unsigned int offset)
1145{
1146        return offset;
1147}
1148
1149static void gpiochip_hierarchy_setup_domain_ops(struct irq_domain_ops *ops)
1150{
1151        ops->activate = gpiochip_irq_domain_activate;
1152        ops->deactivate = gpiochip_irq_domain_deactivate;
1153        ops->alloc = gpiochip_hierarchy_irq_domain_alloc;
1154        ops->free = irq_domain_free_irqs_common;
1155
1156        /*
1157         * We only allow overriding the translate() function for
1158         * hierarchical chips, and this should only be done if the user
1159         * really need something other than 1:1 translation.
1160         */
1161        if (!ops->translate)
1162                ops->translate = gpiochip_hierarchy_irq_domain_translate;
1163}
1164
1165static int gpiochip_hierarchy_add_domain(struct gpio_chip *gc)
1166{
1167        if (!gc->irq.child_to_parent_hwirq ||
1168            !gc->irq.fwnode) {
1169                chip_err(gc, "missing irqdomain vital data\n");
1170                return -EINVAL;
1171        }
1172
1173        if (!gc->irq.child_offset_to_irq)
1174                gc->irq.child_offset_to_irq = gpiochip_child_offset_to_irq_noop;
1175
1176        if (!gc->irq.populate_parent_alloc_arg)
1177                gc->irq.populate_parent_alloc_arg =
1178                        gpiochip_populate_parent_fwspec_twocell;
1179
1180        gpiochip_hierarchy_setup_domain_ops(&gc->irq.child_irq_domain_ops);
1181
1182        gc->irq.domain = irq_domain_create_hierarchy(
1183                gc->irq.parent_domain,
1184                0,
1185                gc->ngpio,
1186                gc->irq.fwnode,
1187                &gc->irq.child_irq_domain_ops,
1188                gc);
1189
1190        if (!gc->irq.domain)
1191                return -ENOMEM;
1192
1193        gpiochip_set_hierarchical_irqchip(gc, gc->irq.chip);
1194
1195        return 0;
1196}
1197
1198static bool gpiochip_hierarchy_is_hierarchical(struct gpio_chip *gc)
1199{
1200        return !!gc->irq.parent_domain;
1201}
1202
1203void *gpiochip_populate_parent_fwspec_twocell(struct gpio_chip *gc,
1204                                             unsigned int parent_hwirq,
1205                                             unsigned int parent_type)
1206{
1207        struct irq_fwspec *fwspec;
1208
1209        fwspec = kmalloc(sizeof(*fwspec), GFP_KERNEL);
1210        if (!fwspec)
1211                return NULL;
1212
1213        fwspec->fwnode = gc->irq.parent_domain->fwnode;
1214        fwspec->param_count = 2;
1215        fwspec->param[0] = parent_hwirq;
1216        fwspec->param[1] = parent_type;
1217
1218        return fwspec;
1219}
1220EXPORT_SYMBOL_GPL(gpiochip_populate_parent_fwspec_twocell);
1221
1222void *gpiochip_populate_parent_fwspec_fourcell(struct gpio_chip *gc,
1223                                              unsigned int parent_hwirq,
1224                                              unsigned int parent_type)
1225{
1226        struct irq_fwspec *fwspec;
1227
1228        fwspec = kmalloc(sizeof(*fwspec), GFP_KERNEL);
1229        if (!fwspec)
1230                return NULL;
1231
1232        fwspec->fwnode = gc->irq.parent_domain->fwnode;
1233        fwspec->param_count = 4;
1234        fwspec->param[0] = 0;
1235        fwspec->param[1] = parent_hwirq;
1236        fwspec->param[2] = 0;
1237        fwspec->param[3] = parent_type;
1238
1239        return fwspec;
1240}
1241EXPORT_SYMBOL_GPL(gpiochip_populate_parent_fwspec_fourcell);
1242
1243#else
1244
1245static int gpiochip_hierarchy_add_domain(struct gpio_chip *gc)
1246{
1247        return -EINVAL;
1248}
1249
1250static bool gpiochip_hierarchy_is_hierarchical(struct gpio_chip *gc)
1251{
1252        return false;
1253}
1254
1255#endif /* CONFIG_IRQ_DOMAIN_HIERARCHY */
1256
1257/**
1258 * gpiochip_irq_map() - maps an IRQ into a GPIO irqchip
1259 * @d: the irqdomain used by this irqchip
1260 * @irq: the global irq number used by this GPIO irqchip irq
1261 * @hwirq: the local IRQ/GPIO line offset on this gpiochip
1262 *
1263 * This function will set up the mapping for a certain IRQ line on a
1264 * gpiochip by assigning the gpiochip as chip data, and using the irqchip
1265 * stored inside the gpiochip.
1266 */
1267int gpiochip_irq_map(struct irq_domain *d, unsigned int irq,
1268                     irq_hw_number_t hwirq)
1269{
1270        struct gpio_chip *gc = d->host_data;
1271        int ret = 0;
1272
1273        if (!gpiochip_irqchip_irq_valid(gc, hwirq))
1274                return -ENXIO;
1275
1276        irq_set_chip_data(irq, gc);
1277        /*
1278         * This lock class tells lockdep that GPIO irqs are in a different
1279         * category than their parents, so it won't report false recursion.
1280         */
1281        irq_set_lockdep_class(irq, gc->irq.lock_key, gc->irq.request_key);
1282        irq_set_chip_and_handler(irq, gc->irq.chip, gc->irq.handler);
1283        /* Chips that use nested thread handlers have them marked */
1284        if (gc->irq.threaded)
1285                irq_set_nested_thread(irq, 1);
1286        irq_set_noprobe(irq);
1287
1288        if (gc->irq.num_parents == 1)
1289                ret = irq_set_parent(irq, gc->irq.parents[0]);
1290        else if (gc->irq.map)
1291                ret = irq_set_parent(irq, gc->irq.map[hwirq]);
1292
1293        if (ret < 0)
1294                return ret;
1295
1296        /*
1297         * No set-up of the hardware will happen if IRQ_TYPE_NONE
1298         * is passed as default type.
1299         */
1300        if (gc->irq.default_type != IRQ_TYPE_NONE)
1301                irq_set_irq_type(irq, gc->irq.default_type);
1302
1303        return 0;
1304}
1305EXPORT_SYMBOL_GPL(gpiochip_irq_map);
1306
1307void gpiochip_irq_unmap(struct irq_domain *d, unsigned int irq)
1308{
1309        struct gpio_chip *gc = d->host_data;
1310
1311        if (gc->irq.threaded)
1312                irq_set_nested_thread(irq, 0);
1313        irq_set_chip_and_handler(irq, NULL, NULL);
1314        irq_set_chip_data(irq, NULL);
1315}
1316EXPORT_SYMBOL_GPL(gpiochip_irq_unmap);
1317
1318static const struct irq_domain_ops gpiochip_domain_ops = {
1319        .map    = gpiochip_irq_map,
1320        .unmap  = gpiochip_irq_unmap,
1321        /* Virtually all GPIO irqchips are twocell:ed */
1322        .xlate  = irq_domain_xlate_twocell,
1323};
1324
1325/*
1326 * TODO: move these activate/deactivate in under the hierarchicial
1327 * irqchip implementation as static once SPMI and SSBI (all external
1328 * users) are phased over.
1329 */
1330/**
1331 * gpiochip_irq_domain_activate() - Lock a GPIO to be used as an IRQ
1332 * @domain: The IRQ domain used by this IRQ chip
1333 * @data: Outermost irq_data associated with the IRQ
1334 * @reserve: If set, only reserve an interrupt vector instead of assigning one
1335 *
1336 * This function is a wrapper that calls gpiochip_lock_as_irq() and is to be
1337 * used as the activate function for the &struct irq_domain_ops. The host_data
1338 * for the IRQ domain must be the &struct gpio_chip.
1339 */
1340int gpiochip_irq_domain_activate(struct irq_domain *domain,
1341                                 struct irq_data *data, bool reserve)
1342{
1343        struct gpio_chip *gc = domain->host_data;
1344
1345        return gpiochip_lock_as_irq(gc, data->hwirq);
1346}
1347EXPORT_SYMBOL_GPL(gpiochip_irq_domain_activate);
1348
1349/**
1350 * gpiochip_irq_domain_deactivate() - Unlock a GPIO used as an IRQ
1351 * @domain: The IRQ domain used by this IRQ chip
1352 * @data: Outermost irq_data associated with the IRQ
1353 *
1354 * This function is a wrapper that will call gpiochip_unlock_as_irq() and is to
1355 * be used as the deactivate function for the &struct irq_domain_ops. The
1356 * host_data for the IRQ domain must be the &struct gpio_chip.
1357 */
1358void gpiochip_irq_domain_deactivate(struct irq_domain *domain,
1359                                    struct irq_data *data)
1360{
1361        struct gpio_chip *gc = domain->host_data;
1362
1363        return gpiochip_unlock_as_irq(gc, data->hwirq);
1364}
1365EXPORT_SYMBOL_GPL(gpiochip_irq_domain_deactivate);
1366
1367static int gpiochip_to_irq(struct gpio_chip *gc, unsigned int offset)
1368{
1369        struct irq_domain *domain = gc->irq.domain;
1370
1371        if (!gpiochip_irqchip_irq_valid(gc, offset))
1372                return -ENXIO;
1373
1374#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
1375        if (irq_domain_is_hierarchy(domain)) {
1376                struct irq_fwspec spec;
1377
1378                spec.fwnode = domain->fwnode;
1379                spec.param_count = 2;
1380                spec.param[0] = gc->irq.child_offset_to_irq(gc, offset);
1381                spec.param[1] = IRQ_TYPE_NONE;
1382
1383                return irq_create_fwspec_mapping(&spec);
1384        }
1385#endif
1386
1387        return irq_create_mapping(domain, offset);
1388}
1389
1390static int gpiochip_irq_reqres(struct irq_data *d)
1391{
1392        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1393
1394        return gpiochip_reqres_irq(gc, d->hwirq);
1395}
1396
1397static void gpiochip_irq_relres(struct irq_data *d)
1398{
1399        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1400
1401        gpiochip_relres_irq(gc, d->hwirq);
1402}
1403
1404static void gpiochip_irq_mask(struct irq_data *d)
1405{
1406        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1407
1408        if (gc->irq.irq_mask)
1409                gc->irq.irq_mask(d);
1410        gpiochip_disable_irq(gc, d->hwirq);
1411}
1412
1413static void gpiochip_irq_unmask(struct irq_data *d)
1414{
1415        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1416
1417        gpiochip_enable_irq(gc, d->hwirq);
1418        if (gc->irq.irq_unmask)
1419                gc->irq.irq_unmask(d);
1420}
1421
1422static void gpiochip_irq_enable(struct irq_data *d)
1423{
1424        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1425
1426        gpiochip_enable_irq(gc, d->hwirq);
1427        gc->irq.irq_enable(d);
1428}
1429
1430static void gpiochip_irq_disable(struct irq_data *d)
1431{
1432        struct gpio_chip *gc = irq_data_get_irq_chip_data(d);
1433
1434        gc->irq.irq_disable(d);
1435        gpiochip_disable_irq(gc, d->hwirq);
1436}
1437
1438static void gpiochip_set_irq_hooks(struct gpio_chip *gc)
1439{
1440        struct irq_chip *irqchip = gc->irq.chip;
1441
1442        if (!irqchip->irq_request_resources &&
1443            !irqchip->irq_release_resources) {
1444                irqchip->irq_request_resources = gpiochip_irq_reqres;
1445                irqchip->irq_release_resources = gpiochip_irq_relres;
1446        }
1447        if (WARN_ON(gc->irq.irq_enable))
1448                return;
1449        /* Check if the irqchip already has this hook... */
1450        if (irqchip->irq_enable == gpiochip_irq_enable ||
1451                irqchip->irq_mask == gpiochip_irq_mask) {
1452                /*
1453                 * ...and if so, give a gentle warning that this is bad
1454                 * practice.
1455                 */
1456                chip_info(gc,
1457                          "detected irqchip that is shared with multiple gpiochips: please fix the driver.\n");
1458                return;
1459        }
1460
1461        if (irqchip->irq_disable) {
1462                gc->irq.irq_disable = irqchip->irq_disable;
1463                irqchip->irq_disable = gpiochip_irq_disable;
1464        } else {
1465                gc->irq.irq_mask = irqchip->irq_mask;
1466                irqchip->irq_mask = gpiochip_irq_mask;
1467        }
1468
1469        if (irqchip->irq_enable) {
1470                gc->irq.irq_enable = irqchip->irq_enable;
1471                irqchip->irq_enable = gpiochip_irq_enable;
1472        } else {
1473                gc->irq.irq_unmask = irqchip->irq_unmask;
1474                irqchip->irq_unmask = gpiochip_irq_unmask;
1475        }
1476}
1477
1478/**
1479 * gpiochip_add_irqchip() - adds an IRQ chip to a GPIO chip
1480 * @gc: the GPIO chip to add the IRQ chip to
1481 * @lock_key: lockdep class for IRQ lock
1482 * @request_key: lockdep class for IRQ request
1483 */
1484static int gpiochip_add_irqchip(struct gpio_chip *gc,
1485                                struct lock_class_key *lock_key,
1486                                struct lock_class_key *request_key)
1487{
1488        struct fwnode_handle *fwnode = dev_fwnode(&gc->gpiodev->dev);
1489        struct irq_chip *irqchip = gc->irq.chip;
1490        unsigned int type;
1491        unsigned int i;
1492
1493        if (!irqchip)
1494                return 0;
1495
1496        if (gc->irq.parent_handler && gc->can_sleep) {
1497                chip_err(gc, "you cannot have chained interrupts on a chip that may sleep\n");
1498                return -EINVAL;
1499        }
1500
1501        type = gc->irq.default_type;
1502
1503        /*
1504         * Specifying a default trigger is a terrible idea if DT or ACPI is
1505         * used to configure the interrupts, as you may end up with
1506         * conflicting triggers. Tell the user, and reset to NONE.
1507         */
1508        if (WARN(fwnode && type != IRQ_TYPE_NONE,
1509                 "%pfw: Ignoring %u default trigger\n", fwnode, type))
1510                type = IRQ_TYPE_NONE;
1511
1512        if (gc->to_irq)
1513                chip_warn(gc, "to_irq is redefined in %s and you shouldn't rely on it\n", __func__);
1514
1515        gc->to_irq = gpiochip_to_irq;
1516        gc->irq.default_type = type;
1517        gc->irq.lock_key = lock_key;
1518        gc->irq.request_key = request_key;
1519
1520        /* If a parent irqdomain is provided, let's build a hierarchy */
1521        if (gpiochip_hierarchy_is_hierarchical(gc)) {
1522                int ret = gpiochip_hierarchy_add_domain(gc);
1523                if (ret)
1524                        return ret;
1525        } else {
1526                /* Some drivers provide custom irqdomain ops */
1527                gc->irq.domain = irq_domain_create_simple(fwnode,
1528                        gc->ngpio,
1529                        gc->irq.first,
1530                        gc->irq.domain_ops ?: &gpiochip_domain_ops,
1531                        gc);
1532                if (!gc->irq.domain)
1533                        return -EINVAL;
1534        }
1535
1536        if (gc->irq.parent_handler) {
1537                void *data = gc->irq.parent_handler_data ?: gc;
1538
1539                for (i = 0; i < gc->irq.num_parents; i++) {
1540                        /*
1541                         * The parent IRQ chip is already using the chip_data
1542                         * for this IRQ chip, so our callbacks simply use the
1543                         * handler_data.
1544                         */
1545                        irq_set_chained_handler_and_data(gc->irq.parents[i],
1546                                                         gc->irq.parent_handler,
1547                                                         data);
1548                }
1549        }
1550
1551        gpiochip_set_irq_hooks(gc);
1552
1553        acpi_gpiochip_request_interrupts(gc);
1554
1555        return 0;
1556}
1557
1558/**
1559 * gpiochip_irqchip_remove() - removes an irqchip added to a gpiochip
1560 * @gc: the gpiochip to remove the irqchip from
1561 *
1562 * This is called only from gpiochip_remove()
1563 */
1564static void gpiochip_irqchip_remove(struct gpio_chip *gc)
1565{
1566        struct irq_chip *irqchip = gc->irq.chip;
1567        unsigned int offset;
1568
1569        acpi_gpiochip_free_interrupts(gc);
1570
1571        if (irqchip && gc->irq.parent_handler) {
1572                struct gpio_irq_chip *irq = &gc->irq;
1573                unsigned int i;
1574
1575                for (i = 0; i < irq->num_parents; i++)
1576                        irq_set_chained_handler_and_data(irq->parents[i],
1577                                                         NULL, NULL);
1578        }
1579
1580        /* Remove all IRQ mappings and delete the domain */
1581        if (gc->irq.domain) {
1582                unsigned int irq;
1583
1584                for (offset = 0; offset < gc->ngpio; offset++) {
1585                        if (!gpiochip_irqchip_irq_valid(gc, offset))
1586                                continue;
1587
1588                        irq = irq_find_mapping(gc->irq.domain, offset);
1589                        irq_dispose_mapping(irq);
1590                }
1591
1592                irq_domain_remove(gc->irq.domain);
1593        }
1594
1595        if (irqchip) {
1596                if (irqchip->irq_request_resources == gpiochip_irq_reqres) {
1597                        irqchip->irq_request_resources = NULL;
1598                        irqchip->irq_release_resources = NULL;
1599                }
1600                if (irqchip->irq_enable == gpiochip_irq_enable) {
1601                        irqchip->irq_enable = gc->irq.irq_enable;
1602                        irqchip->irq_disable = gc->irq.irq_disable;
1603                }
1604        }
1605        gc->irq.irq_enable = NULL;
1606        gc->irq.irq_disable = NULL;
1607        gc->irq.chip = NULL;
1608
1609        gpiochip_irqchip_free_valid_mask(gc);
1610}
1611
1612/**
1613 * gpiochip_irqchip_add_domain() - adds an irqdomain to a gpiochip
1614 * @gc: the gpiochip to add the irqchip to
1615 * @domain: the irqdomain to add to the gpiochip
1616 *
1617 * This function adds an IRQ domain to the gpiochip.
1618 */
1619int gpiochip_irqchip_add_domain(struct gpio_chip *gc,
1620                                struct irq_domain *domain)
1621{
1622        if (!domain)
1623                return -EINVAL;
1624
1625        gc->to_irq = gpiochip_to_irq;
1626        gc->irq.domain = domain;
1627
1628        return 0;
1629}
1630EXPORT_SYMBOL_GPL(gpiochip_irqchip_add_domain);
1631
1632#else /* CONFIG_GPIOLIB_IRQCHIP */
1633
1634static inline int gpiochip_add_irqchip(struct gpio_chip *gc,
1635                                       struct lock_class_key *lock_key,
1636                                       struct lock_class_key *request_key)
1637{
1638        return 0;
1639}
1640static void gpiochip_irqchip_remove(struct gpio_chip *gc) {}
1641
1642static inline int gpiochip_irqchip_init_hw(struct gpio_chip *gc)
1643{
1644        return 0;
1645}
1646
1647static inline int gpiochip_irqchip_init_valid_mask(struct gpio_chip *gc)
1648{
1649        return 0;
1650}
1651static inline void gpiochip_irqchip_free_valid_mask(struct gpio_chip *gc)
1652{ }
1653
1654#endif /* CONFIG_GPIOLIB_IRQCHIP */
1655
1656/**
1657 * gpiochip_generic_request() - request the gpio function for a pin
1658 * @gc: the gpiochip owning the GPIO
1659 * @offset: the offset of the GPIO to request for GPIO function
1660 */
1661int gpiochip_generic_request(struct gpio_chip *gc, unsigned int offset)
1662{
1663#ifdef CONFIG_PINCTRL
1664        if (list_empty(&gc->gpiodev->pin_ranges))
1665                return 0;
1666#endif
1667
1668        return pinctrl_gpio_request(gc->gpiodev->base + offset);
1669}
1670EXPORT_SYMBOL_GPL(gpiochip_generic_request);
1671
1672/**
1673 * gpiochip_generic_free() - free the gpio function from a pin
1674 * @gc: the gpiochip to request the gpio function for
1675 * @offset: the offset of the GPIO to free from GPIO function
1676 */
1677void gpiochip_generic_free(struct gpio_chip *gc, unsigned int offset)
1678{
1679#ifdef CONFIG_PINCTRL
1680        if (list_empty(&gc->gpiodev->pin_ranges))
1681                return;
1682#endif
1683
1684        pinctrl_gpio_free(gc->gpiodev->base + offset);
1685}
1686EXPORT_SYMBOL_GPL(gpiochip_generic_free);
1687
1688/**
1689 * gpiochip_generic_config() - apply configuration for a pin
1690 * @gc: the gpiochip owning the GPIO
1691 * @offset: the offset of the GPIO to apply the configuration
1692 * @config: the configuration to be applied
1693 */
1694int gpiochip_generic_config(struct gpio_chip *gc, unsigned int offset,
1695                            unsigned long config)
1696{
1697        return pinctrl_gpio_set_config(gc->gpiodev->base + offset, config);
1698}
1699EXPORT_SYMBOL_GPL(gpiochip_generic_config);
1700
1701#ifdef CONFIG_PINCTRL
1702
1703/**
1704 * gpiochip_add_pingroup_range() - add a range for GPIO <-> pin mapping
1705 * @gc: the gpiochip to add the range for
1706 * @pctldev: the pin controller to map to
1707 * @gpio_offset: the start offset in the current gpio_chip number space
1708 * @pin_group: name of the pin group inside the pin controller
1709 *
1710 * Calling this function directly from a DeviceTree-supported
1711 * pinctrl driver is DEPRECATED. Please see Section 2.1 of
1712 * Documentation/devicetree/bindings/gpio/gpio.txt on how to
1713 * bind pinctrl and gpio drivers via the "gpio-ranges" property.
1714 */
1715int gpiochip_add_pingroup_range(struct gpio_chip *gc,
1716                        struct pinctrl_dev *pctldev,
1717                        unsigned int gpio_offset, const char *pin_group)
1718{
1719        struct gpio_pin_range *pin_range;
1720        struct gpio_device *gdev = gc->gpiodev;
1721        int ret;
1722
1723        pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL);
1724        if (!pin_range) {
1725                chip_err(gc, "failed to allocate pin ranges\n");
1726                return -ENOMEM;
1727        }
1728
1729        /* Use local offset as range ID */
1730        pin_range->range.id = gpio_offset;
1731        pin_range->range.gc = gc;
1732        pin_range->range.name = gc->label;
1733        pin_range->range.base = gdev->base + gpio_offset;
1734        pin_range->pctldev = pctldev;
1735
1736        ret = pinctrl_get_group_pins(pctldev, pin_group,
1737                                        &pin_range->range.pins,
1738                                        &pin_range->range.npins);
1739        if (ret < 0) {
1740                kfree(pin_range);
1741                return ret;
1742        }
1743
1744        pinctrl_add_gpio_range(pctldev, &pin_range->range);
1745
1746        chip_dbg(gc, "created GPIO range %d->%d ==> %s PINGRP %s\n",
1747                 gpio_offset, gpio_offset + pin_range->range.npins - 1,
1748                 pinctrl_dev_get_devname(pctldev), pin_group);
1749
1750        list_add_tail(&pin_range->node, &gdev->pin_ranges);
1751
1752        return 0;
1753}
1754EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range);
1755
1756/**
1757 * gpiochip_add_pin_range() - add a range for GPIO <-> pin mapping
1758 * @gc: the gpiochip to add the range for
1759 * @pinctl_name: the dev_name() of the pin controller to map to
1760 * @gpio_offset: the start offset in the current gpio_chip number space
1761 * @pin_offset: the start offset in the pin controller number space
1762 * @npins: the number of pins from the offset of each pin space (GPIO and
1763 *      pin controller) to accumulate in this range
1764 *
1765 * Returns:
1766 * 0 on success, or a negative error-code on failure.
1767 *
1768 * Calling this function directly from a DeviceTree-supported
1769 * pinctrl driver is DEPRECATED. Please see Section 2.1 of
1770 * Documentation/devicetree/bindings/gpio/gpio.txt on how to
1771 * bind pinctrl and gpio drivers via the "gpio-ranges" property.
1772 */
1773int gpiochip_add_pin_range(struct gpio_chip *gc, const char *pinctl_name,
1774                           unsigned int gpio_offset, unsigned int pin_offset,
1775                           unsigned int npins)
1776{
1777        struct gpio_pin_range *pin_range;
1778        struct gpio_device *gdev = gc->gpiodev;
1779        int ret;
1780
1781        pin_range = kzalloc(sizeof(*pin_range), GFP_KERNEL);
1782        if (!pin_range) {
1783                chip_err(gc, "failed to allocate pin ranges\n");
1784                return -ENOMEM;
1785        }
1786
1787        /* Use local offset as range ID */
1788        pin_range->range.id = gpio_offset;
1789        pin_range->range.gc = gc;
1790        pin_range->range.name = gc->label;
1791        pin_range->range.base = gdev->base + gpio_offset;
1792        pin_range->range.pin_base = pin_offset;
1793        pin_range->range.npins = npins;
1794        pin_range->pctldev = pinctrl_find_and_add_gpio_range(pinctl_name,
1795                        &pin_range->range);
1796        if (IS_ERR(pin_range->pctldev)) {
1797                ret = PTR_ERR(pin_range->pctldev);
1798                chip_err(gc, "could not create pin range\n");
1799                kfree(pin_range);
1800                return ret;
1801        }
1802        chip_dbg(gc, "created GPIO range %d->%d ==> %s PIN %d->%d\n",
1803                 gpio_offset, gpio_offset + npins - 1,
1804                 pinctl_name,
1805                 pin_offset, pin_offset + npins - 1);
1806
1807        list_add_tail(&pin_range->node, &gdev->pin_ranges);
1808
1809        return 0;
1810}
1811EXPORT_SYMBOL_GPL(gpiochip_add_pin_range);
1812
1813/**
1814 * gpiochip_remove_pin_ranges() - remove all the GPIO <-> pin mappings
1815 * @gc: the chip to remove all the mappings for
1816 */
1817void gpiochip_remove_pin_ranges(struct gpio_chip *gc)
1818{
1819        struct gpio_pin_range *pin_range, *tmp;
1820        struct gpio_device *gdev = gc->gpiodev;
1821
1822        list_for_each_entry_safe(pin_range, tmp, &gdev->pin_ranges, node) {
1823                list_del(&pin_range->node);
1824                pinctrl_remove_gpio_range(pin_range->pctldev,
1825                                &pin_range->range);
1826                kfree(pin_range);
1827        }
1828}
1829EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges);
1830
1831#endif /* CONFIG_PINCTRL */
1832
1833/* These "optional" allocation calls help prevent drivers from stomping
1834 * on each other, and help provide better diagnostics in debugfs.
1835 * They're called even less than the "set direction" calls.
1836 */
1837static int gpiod_request_commit(struct gpio_desc *desc, const char *label)
1838{
1839        struct gpio_chip        *gc = desc->gdev->chip;
1840        int                     ret;
1841        unsigned long           flags;
1842        unsigned                offset;
1843
1844        if (label) {
1845                label = kstrdup_const(label, GFP_KERNEL);
1846                if (!label)
1847                        return -ENOMEM;
1848        }
1849
1850        spin_lock_irqsave(&gpio_lock, flags);
1851
1852        /* NOTE:  gpio_request() can be called in early boot,
1853         * before IRQs are enabled, for non-sleeping (SOC) GPIOs.
1854         */
1855
1856        if (test_and_set_bit(FLAG_REQUESTED, &desc->flags) == 0) {
1857                desc_set_label(desc, label ? : "?");
1858        } else {
1859                ret = -EBUSY;
1860                goto out_free_unlock;
1861        }
1862
1863        if (gc->request) {
1864                /* gc->request may sleep */
1865                spin_unlock_irqrestore(&gpio_lock, flags);
1866                offset = gpio_chip_hwgpio(desc);
1867                if (gpiochip_line_is_valid(gc, offset))
1868                        ret = gc->request(gc, offset);
1869                else
1870                        ret = -EINVAL;
1871                spin_lock_irqsave(&gpio_lock, flags);
1872
1873                if (ret) {
1874                        desc_set_label(desc, NULL);
1875                        clear_bit(FLAG_REQUESTED, &desc->flags);
1876                        goto out_free_unlock;
1877                }
1878        }
1879        if (gc->get_direction) {
1880                /* gc->get_direction may sleep */
1881                spin_unlock_irqrestore(&gpio_lock, flags);
1882                gpiod_get_direction(desc);
1883                spin_lock_irqsave(&gpio_lock, flags);
1884        }
1885        spin_unlock_irqrestore(&gpio_lock, flags);
1886        return 0;
1887
1888out_free_unlock:
1889        spin_unlock_irqrestore(&gpio_lock, flags);
1890        kfree_const(label);
1891        return ret;
1892}
1893
1894/*
1895 * This descriptor validation needs to be inserted verbatim into each
1896 * function taking a descriptor, so we need to use a preprocessor
1897 * macro to avoid endless duplication. If the desc is NULL it is an
1898 * optional GPIO and calls should just bail out.
1899 */
1900static int validate_desc(const struct gpio_desc *desc, const char *func)
1901{
1902        if (!desc)
1903                return 0;
1904        if (IS_ERR(desc)) {
1905                pr_warn("%s: invalid GPIO (errorpointer)\n", func);
1906                return PTR_ERR(desc);
1907        }
1908        if (!desc->gdev) {
1909                pr_warn("%s: invalid GPIO (no device)\n", func);
1910                return -EINVAL;
1911        }
1912        if (!desc->gdev->chip) {
1913                dev_warn(&desc->gdev->dev,
1914                         "%s: backing chip is gone\n", func);
1915                return 0;
1916        }
1917        return 1;
1918}
1919
1920#define VALIDATE_DESC(desc) do { \
1921        int __valid = validate_desc(desc, __func__); \
1922        if (__valid <= 0) \
1923                return __valid; \
1924        } while (0)
1925
1926#define VALIDATE_DESC_VOID(desc) do { \
1927        int __valid = validate_desc(desc, __func__); \
1928        if (__valid <= 0) \
1929                return; \
1930        } while (0)
1931
1932int gpiod_request(struct gpio_desc *desc, const char *label)
1933{
1934        int ret = -EPROBE_DEFER;
1935        struct gpio_device *gdev;
1936
1937        VALIDATE_DESC(desc);
1938        gdev = desc->gdev;
1939
1940        if (try_module_get(gdev->owner)) {
1941                ret = gpiod_request_commit(desc, label);
1942                if (ret)
1943                        module_put(gdev->owner);
1944                else
1945                        get_device(&gdev->dev);
1946        }
1947
1948        if (ret)
1949                gpiod_dbg(desc, "%s: status %d\n", __func__, ret);
1950
1951        return ret;
1952}
1953
1954static bool gpiod_free_commit(struct gpio_desc *desc)
1955{
1956        bool                    ret = false;
1957        unsigned long           flags;
1958        struct gpio_chip        *gc;
1959
1960        might_sleep();
1961
1962        gpiod_unexport(desc);
1963
1964        spin_lock_irqsave(&gpio_lock, flags);
1965
1966        gc = desc->gdev->chip;
1967        if (gc && test_bit(FLAG_REQUESTED, &desc->flags)) {
1968                if (gc->free) {
1969                        spin_unlock_irqrestore(&gpio_lock, flags);
1970                        might_sleep_if(gc->can_sleep);
1971                        gc->free(gc, gpio_chip_hwgpio(desc));
1972                        spin_lock_irqsave(&gpio_lock, flags);
1973                }
1974                kfree_const(desc->label);
1975                desc_set_label(desc, NULL);
1976                clear_bit(FLAG_ACTIVE_LOW, &desc->flags);
1977                clear_bit(FLAG_REQUESTED, &desc->flags);
1978                clear_bit(FLAG_OPEN_DRAIN, &desc->flags);
1979                clear_bit(FLAG_OPEN_SOURCE, &desc->flags);
1980                clear_bit(FLAG_PULL_UP, &desc->flags);
1981                clear_bit(FLAG_PULL_DOWN, &desc->flags);
1982                clear_bit(FLAG_BIAS_DISABLE, &desc->flags);
1983                clear_bit(FLAG_EDGE_RISING, &desc->flags);
1984                clear_bit(FLAG_EDGE_FALLING, &desc->flags);
1985                clear_bit(FLAG_IS_HOGGED, &desc->flags);
1986#ifdef CONFIG_OF_DYNAMIC
1987                desc->hog = NULL;
1988#endif
1989#ifdef CONFIG_GPIO_CDEV
1990                WRITE_ONCE(desc->debounce_period_us, 0);
1991#endif
1992                ret = true;
1993        }
1994
1995        spin_unlock_irqrestore(&gpio_lock, flags);
1996        blocking_notifier_call_chain(&desc->gdev->notifier,
1997                                     GPIOLINE_CHANGED_RELEASED, desc);
1998
1999        return ret;
2000}
2001
2002void gpiod_free(struct gpio_desc *desc)
2003{
2004        if (desc && desc->gdev && gpiod_free_commit(desc)) {
2005                module_put(desc->gdev->owner);
2006                put_device(&desc->gdev->dev);
2007        } else {
2008                WARN_ON(extra_checks);
2009        }
2010}
2011
2012/**
2013 * gpiochip_is_requested - return string iff signal was requested
2014 * @gc: controller managing the signal
2015 * @offset: of signal within controller's 0..(ngpio - 1) range
2016 *
2017 * Returns NULL if the GPIO is not currently requested, else a string.
2018 * The string returned is the label passed to gpio_request(); if none has been
2019 * passed it is a meaningless, non-NULL constant.
2020 *
2021 * This function is for use by GPIO controller drivers.  The label can
2022 * help with diagnostics, and knowing that the signal is used as a GPIO
2023 * can help avoid accidentally multiplexing it to another controller.
2024 */
2025const char *gpiochip_is_requested(struct gpio_chip *gc, unsigned int offset)
2026{
2027        struct gpio_desc *desc;
2028
2029        desc = gpiochip_get_desc(gc, offset);
2030        if (IS_ERR(desc))
2031                return NULL;
2032
2033        if (test_bit(FLAG_REQUESTED, &desc->flags) == 0)
2034                return NULL;
2035        return desc->label;
2036}
2037EXPORT_SYMBOL_GPL(gpiochip_is_requested);
2038
2039/**
2040 * gpiochip_request_own_desc - Allow GPIO chip to request its own descriptor
2041 * @gc: GPIO chip
2042 * @hwnum: hardware number of the GPIO for which to request the descriptor
2043 * @label: label for the GPIO
2044 * @lflags: lookup flags for this GPIO or 0 if default, this can be used to
2045 * specify things like line inversion semantics with the machine flags
2046 * such as GPIO_OUT_LOW
2047 * @dflags: descriptor request flags for this GPIO or 0 if default, this
2048 * can be used to specify consumer semantics such as open drain
2049 *
2050 * Function allows GPIO chip drivers to request and use their own GPIO
2051 * descriptors via gpiolib API. Difference to gpiod_request() is that this
2052 * function will not increase reference count of the GPIO chip module. This
2053 * allows the GPIO chip module to be unloaded as needed (we assume that the
2054 * GPIO chip driver handles freeing the GPIOs it has requested).
2055 *
2056 * Returns:
2057 * A pointer to the GPIO descriptor, or an ERR_PTR()-encoded negative error
2058 * code on failure.
2059 */
2060struct gpio_desc *gpiochip_request_own_desc(struct gpio_chip *gc,
2061                                            unsigned int hwnum,
2062                                            const char *label,
2063                                            enum gpio_lookup_flags lflags,
2064                                            enum gpiod_flags dflags)
2065{
2066        struct gpio_desc *desc = gpiochip_get_desc(gc, hwnum);
2067        int ret;
2068
2069        if (IS_ERR(desc)) {
2070                chip_err(gc, "failed to get GPIO descriptor\n");
2071                return desc;
2072        }
2073
2074        ret = gpiod_request_commit(desc, label);
2075        if (ret < 0)
2076                return ERR_PTR(ret);
2077
2078        ret = gpiod_configure_flags(desc, label, lflags, dflags);
2079        if (ret) {
2080                chip_err(gc, "setup of own GPIO %s failed\n", label);
2081                gpiod_free_commit(desc);
2082                return ERR_PTR(ret);
2083        }
2084
2085        return desc;
2086}
2087EXPORT_SYMBOL_GPL(gpiochip_request_own_desc);
2088
2089/**
2090 * gpiochip_free_own_desc - Free GPIO requested by the chip driver
2091 * @desc: GPIO descriptor to free
2092 *
2093 * Function frees the given GPIO requested previously with
2094 * gpiochip_request_own_desc().
2095 */
2096void gpiochip_free_own_desc(struct gpio_desc *desc)
2097{
2098        if (desc)
2099                gpiod_free_commit(desc);
2100}
2101EXPORT_SYMBOL_GPL(gpiochip_free_own_desc);
2102
2103/*
2104 * Drivers MUST set GPIO direction before making get/set calls.  In
2105 * some cases this is done in early boot, before IRQs are enabled.
2106 *
2107 * As a rule these aren't called more than once (except for drivers
2108 * using the open-drain emulation idiom) so these are natural places
2109 * to accumulate extra debugging checks.  Note that we can't (yet)
2110 * rely on gpio_request() having been called beforehand.
2111 */
2112
2113static int gpio_do_set_config(struct gpio_chip *gc, unsigned int offset,
2114                              unsigned long config)
2115{
2116        if (!gc->set_config)
2117                return -ENOTSUPP;
2118
2119        return gc->set_config(gc, offset, config);
2120}
2121
2122static int gpio_set_config_with_argument(struct gpio_desc *desc,
2123                                         enum pin_config_param mode,
2124                                         u32 argument)
2125{
2126        struct gpio_chip *gc = desc->gdev->chip;
2127        unsigned long config;
2128
2129        config = pinconf_to_config_packed(mode, argument);
2130        return gpio_do_set_config(gc, gpio_chip_hwgpio(desc), config);
2131}
2132
2133static int gpio_set_config_with_argument_optional(struct gpio_desc *desc,
2134                                                  enum pin_config_param mode,
2135                                                  u32 argument)
2136{
2137        struct device *dev = &desc->gdev->dev;
2138        int gpio = gpio_chip_hwgpio(desc);
2139        int ret;
2140
2141        ret = gpio_set_config_with_argument(desc, mode, argument);
2142        if (ret != -ENOTSUPP)
2143                return ret;
2144
2145        switch (mode) {
2146        case PIN_CONFIG_PERSIST_STATE:
2147                dev_dbg(dev, "Persistence not supported for GPIO %d\n", gpio);
2148                break;
2149        default:
2150                break;
2151        }
2152
2153        return 0;
2154}
2155
2156static int gpio_set_config(struct gpio_desc *desc, enum pin_config_param mode)
2157{
2158        return gpio_set_config_with_argument(desc, mode, 0);
2159}
2160
2161static int gpio_set_bias(struct gpio_desc *desc)
2162{
2163        enum pin_config_param bias;
2164        unsigned int arg;
2165
2166        if (test_bit(FLAG_BIAS_DISABLE, &desc->flags))
2167                bias = PIN_CONFIG_BIAS_DISABLE;
2168        else if (test_bit(FLAG_PULL_UP, &desc->flags))
2169                bias = PIN_CONFIG_BIAS_PULL_UP;
2170        else if (test_bit(FLAG_PULL_DOWN, &desc->flags))
2171                bias = PIN_CONFIG_BIAS_PULL_DOWN;
2172        else
2173                return 0;
2174
2175        switch (bias) {
2176        case PIN_CONFIG_BIAS_PULL_DOWN:
2177        case PIN_CONFIG_BIAS_PULL_UP:
2178                arg = 1;
2179                break;
2180
2181        default:
2182                arg = 0;
2183                break;
2184        }
2185
2186        return gpio_set_config_with_argument_optional(desc, bias, arg);
2187}
2188
2189int gpio_set_debounce_timeout(struct gpio_desc *desc, unsigned int debounce)
2190{
2191        return gpio_set_config_with_argument_optional(desc,
2192                                                      PIN_CONFIG_INPUT_DEBOUNCE,
2193                                                      debounce);
2194}
2195
2196/**
2197 * gpiod_direction_input - set the GPIO direction to input
2198 * @desc:       GPIO to set to input
2199 *
2200 * Set the direction of the passed GPIO to input, such as gpiod_get_value() can
2201 * be called safely on it.
2202 *
2203 * Return 0 in case of success, else an error code.
2204 */
2205int gpiod_direction_input(struct gpio_desc *desc)
2206{
2207        struct gpio_chip        *gc;
2208        int                     ret = 0;
2209
2210        VALIDATE_DESC(desc);
2211        gc = desc->gdev->chip;
2212
2213        /*
2214         * It is legal to have no .get() and .direction_input() specified if
2215         * the chip is output-only, but you can't specify .direction_input()
2216         * and not support the .get() operation, that doesn't make sense.
2217         */
2218        if (!gc->get && gc->direction_input) {
2219                gpiod_warn(desc,
2220                           "%s: missing get() but have direction_input()\n",
2221                           __func__);
2222                return -EIO;
2223        }
2224
2225        /*
2226         * If we have a .direction_input() callback, things are simple,
2227         * just call it. Else we are some input-only chip so try to check the
2228         * direction (if .get_direction() is supported) else we silently
2229         * assume we are in input mode after this.
2230         */
2231        if (gc->direction_input) {
2232                ret = gc->direction_input(gc, gpio_chip_hwgpio(desc));
2233        } else if (gc->get_direction &&
2234                  (gc->get_direction(gc, gpio_chip_hwgpio(desc)) != 1)) {
2235                gpiod_warn(desc,
2236                           "%s: missing direction_input() operation and line is output\n",
2237                           __func__);
2238                return -EIO;
2239        }
2240        if (ret == 0) {
2241                clear_bit(FLAG_IS_OUT, &desc->flags);
2242                ret = gpio_set_bias(desc);
2243        }
2244
2245        trace_gpio_direction(desc_to_gpio(desc), 1, ret);
2246
2247        return ret;
2248}
2249EXPORT_SYMBOL_GPL(gpiod_direction_input);
2250
2251static int gpiod_direction_output_raw_commit(struct gpio_desc *desc, int value)
2252{
2253        struct gpio_chip *gc = desc->gdev->chip;
2254        int val = !!value;
2255        int ret = 0;
2256
2257        /*
2258         * It's OK not to specify .direction_output() if the gpiochip is
2259         * output-only, but if there is then not even a .set() operation it
2260         * is pretty tricky to drive the output line.
2261         */
2262        if (!gc->set && !gc->direction_output) {
2263                gpiod_warn(desc,
2264                           "%s: missing set() and direction_output() operations\n",
2265                           __func__);
2266                return -EIO;
2267        }
2268
2269        if (gc->direction_output) {
2270                ret = gc->direction_output(gc, gpio_chip_hwgpio(desc), val);
2271        } else {
2272                /* Check that we are in output mode if we can */
2273                if (gc->get_direction &&
2274                    gc->get_direction(gc, gpio_chip_hwgpio(desc))) {
2275                        gpiod_warn(desc,
2276                                "%s: missing direction_output() operation\n",
2277                                __func__);
2278                        return -EIO;
2279                }
2280                /*
2281                 * If we can't actively set the direction, we are some
2282                 * output-only chip, so just drive the output as desired.
2283                 */
2284                gc->set(gc, gpio_chip_hwgpio(desc), val);
2285        }
2286
2287        if (!ret)
2288                set_bit(FLAG_IS_OUT, &desc->flags);
2289        trace_gpio_value(desc_to_gpio(desc), 0, val);
2290        trace_gpio_direction(desc_to_gpio(desc), 0, ret);
2291        return ret;
2292}
2293
2294/**
2295 * gpiod_direction_output_raw - set the GPIO direction to output
2296 * @desc:       GPIO to set to output
2297 * @value:      initial output value of the GPIO
2298 *
2299 * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
2300 * be called safely on it. The initial value of the output must be specified
2301 * as raw value on the physical line without regard for the ACTIVE_LOW status.
2302 *
2303 * Return 0 in case of success, else an error code.
2304 */
2305int gpiod_direction_output_raw(struct gpio_desc *desc, int value)
2306{
2307        VALIDATE_DESC(desc);
2308        return gpiod_direction_output_raw_commit(desc, value);
2309}
2310EXPORT_SYMBOL_GPL(gpiod_direction_output_raw);
2311
2312/**
2313 * gpiod_direction_output - set the GPIO direction to output
2314 * @desc:       GPIO to set to output
2315 * @value:      initial output value of the GPIO
2316 *
2317 * Set the direction of the passed GPIO to output, such as gpiod_set_value() can
2318 * be called safely on it. The initial value of the output must be specified
2319 * as the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
2320 * account.
2321 *
2322 * Return 0 in case of success, else an error code.
2323 */
2324int gpiod_direction_output(struct gpio_desc *desc, int value)
2325{
2326        int ret;
2327
2328        VALIDATE_DESC(desc);
2329        if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2330                value = !value;
2331        else
2332                value = !!value;
2333
2334        /* GPIOs used for enabled IRQs shall not be set as output */
2335        if (test_bit(FLAG_USED_AS_IRQ, &desc->flags) &&
2336            test_bit(FLAG_IRQ_IS_ENABLED, &desc->flags)) {
2337                gpiod_err(desc,
2338                          "%s: tried to set a GPIO tied to an IRQ as output\n",
2339                          __func__);
2340                return -EIO;
2341        }
2342
2343        if (test_bit(FLAG_OPEN_DRAIN, &desc->flags)) {
2344                /* First see if we can enable open drain in hardware */
2345                ret = gpio_set_config(desc, PIN_CONFIG_DRIVE_OPEN_DRAIN);
2346                if (!ret)
2347                        goto set_output_value;
2348                /* Emulate open drain by not actively driving the line high */
2349                if (value) {
2350                        ret = gpiod_direction_input(desc);
2351                        goto set_output_flag;
2352                }
2353        }
2354        else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags)) {
2355                ret = gpio_set_config(desc, PIN_CONFIG_DRIVE_OPEN_SOURCE);
2356                if (!ret)
2357                        goto set_output_value;
2358                /* Emulate open source by not actively driving the line low */
2359                if (!value) {
2360                        ret = gpiod_direction_input(desc);
2361                        goto set_output_flag;
2362                }
2363        } else {
2364                gpio_set_config(desc, PIN_CONFIG_DRIVE_PUSH_PULL);
2365        }
2366
2367set_output_value:
2368        ret = gpio_set_bias(desc);
2369        if (ret)
2370                return ret;
2371        return gpiod_direction_output_raw_commit(desc, value);
2372
2373set_output_flag:
2374        /*
2375         * When emulating open-source or open-drain functionalities by not
2376         * actively driving the line (setting mode to input) we still need to
2377         * set the IS_OUT flag or otherwise we won't be able to set the line
2378         * value anymore.
2379         */
2380        if (ret == 0)
2381                set_bit(FLAG_IS_OUT, &desc->flags);
2382        return ret;
2383}
2384EXPORT_SYMBOL_GPL(gpiod_direction_output);
2385
2386/**
2387 * gpiod_set_config - sets @config for a GPIO
2388 * @desc: descriptor of the GPIO for which to set the configuration
2389 * @config: Same packed config format as generic pinconf
2390 *
2391 * Returns:
2392 * 0 on success, %-ENOTSUPP if the controller doesn't support setting the
2393 * configuration.
2394 */
2395int gpiod_set_config(struct gpio_desc *desc, unsigned long config)
2396{
2397        struct gpio_chip *gc;
2398
2399        VALIDATE_DESC(desc);
2400        gc = desc->gdev->chip;
2401
2402        return gpio_do_set_config(gc, gpio_chip_hwgpio(desc), config);
2403}
2404EXPORT_SYMBOL_GPL(gpiod_set_config);
2405
2406/**
2407 * gpiod_set_debounce - sets @debounce time for a GPIO
2408 * @desc: descriptor of the GPIO for which to set debounce time
2409 * @debounce: debounce time in microseconds
2410 *
2411 * Returns:
2412 * 0 on success, %-ENOTSUPP if the controller doesn't support setting the
2413 * debounce time.
2414 */
2415int gpiod_set_debounce(struct gpio_desc *desc, unsigned int debounce)
2416{
2417        unsigned long config;
2418
2419        config = pinconf_to_config_packed(PIN_CONFIG_INPUT_DEBOUNCE, debounce);
2420        return gpiod_set_config(desc, config);
2421}
2422EXPORT_SYMBOL_GPL(gpiod_set_debounce);
2423
2424/**
2425 * gpiod_set_transitory - Lose or retain GPIO state on suspend or reset
2426 * @desc: descriptor of the GPIO for which to configure persistence
2427 * @transitory: True to lose state on suspend or reset, false for persistence
2428 *
2429 * Returns:
2430 * 0 on success, otherwise a negative error code.
2431 */
2432int gpiod_set_transitory(struct gpio_desc *desc, bool transitory)
2433{
2434        VALIDATE_DESC(desc);
2435        /*
2436         * Handle FLAG_TRANSITORY first, enabling queries to gpiolib for
2437         * persistence state.
2438         */
2439        assign_bit(FLAG_TRANSITORY, &desc->flags, transitory);
2440
2441        /* If the driver supports it, set the persistence state now */
2442        return gpio_set_config_with_argument_optional(desc,
2443                                                      PIN_CONFIG_PERSIST_STATE,
2444                                                      !transitory);
2445}
2446EXPORT_SYMBOL_GPL(gpiod_set_transitory);
2447
2448/**
2449 * gpiod_is_active_low - test whether a GPIO is active-low or not
2450 * @desc: the gpio descriptor to test
2451 *
2452 * Returns 1 if the GPIO is active-low, 0 otherwise.
2453 */
2454int gpiod_is_active_low(const struct gpio_desc *desc)
2455{
2456        VALIDATE_DESC(desc);
2457        return test_bit(FLAG_ACTIVE_LOW, &desc->flags);
2458}
2459EXPORT_SYMBOL_GPL(gpiod_is_active_low);
2460
2461/**
2462 * gpiod_toggle_active_low - toggle whether a GPIO is active-low or not
2463 * @desc: the gpio descriptor to change
2464 */
2465void gpiod_toggle_active_low(struct gpio_desc *desc)
2466{
2467        VALIDATE_DESC_VOID(desc);
2468        change_bit(FLAG_ACTIVE_LOW, &desc->flags);
2469}
2470EXPORT_SYMBOL_GPL(gpiod_toggle_active_low);
2471
2472/* I/O calls are only valid after configuration completed; the relevant
2473 * "is this a valid GPIO" error checks should already have been done.
2474 *
2475 * "Get" operations are often inlinable as reading a pin value register,
2476 * and masking the relevant bit in that register.
2477 *
2478 * When "set" operations are inlinable, they involve writing that mask to
2479 * one register to set a low value, or a different register to set it high.
2480 * Otherwise locking is needed, so there may be little value to inlining.
2481 *
2482 *------------------------------------------------------------------------
2483 *
2484 * IMPORTANT!!!  The hot paths -- get/set value -- assume that callers
2485 * have requested the GPIO.  That can include implicit requesting by
2486 * a direction setting call.  Marking a gpio as requested locks its chip
2487 * in memory, guaranteeing that these table lookups need no more locking
2488 * and that gpiochip_remove() will fail.
2489 *
2490 * REVISIT when debugging, consider adding some instrumentation to ensure
2491 * that the GPIO was actually requested.
2492 */
2493
2494static int gpiod_get_raw_value_commit(const struct gpio_desc *desc)
2495{
2496        struct gpio_chip        *gc;
2497        int offset;
2498        int value;
2499
2500        gc = desc->gdev->chip;
2501        offset = gpio_chip_hwgpio(desc);
2502        value = gc->get ? gc->get(gc, offset) : -EIO;
2503        value = value < 0 ? value : !!value;
2504        trace_gpio_value(desc_to_gpio(desc), 1, value);
2505        return value;
2506}
2507
2508static int gpio_chip_get_multiple(struct gpio_chip *gc,
2509                                  unsigned long *mask, unsigned long *bits)
2510{
2511        if (gc->get_multiple) {
2512                return gc->get_multiple(gc, mask, bits);
2513        } else if (gc->get) {
2514                int i, value;
2515
2516                for_each_set_bit(i, mask, gc->ngpio) {
2517                        value = gc->get(gc, i);
2518                        if (value < 0)
2519                                return value;
2520                        __assign_bit(i, bits, value);
2521                }
2522                return 0;
2523        }
2524        return -EIO;
2525}
2526
2527int gpiod_get_array_value_complex(bool raw, bool can_sleep,
2528                                  unsigned int array_size,
2529                                  struct gpio_desc **desc_array,
2530                                  struct gpio_array *array_info,
2531                                  unsigned long *value_bitmap)
2532{
2533        int ret, i = 0;
2534
2535        /*
2536         * Validate array_info against desc_array and its size.
2537         * It should immediately follow desc_array if both
2538         * have been obtained from the same gpiod_get_array() call.
2539         */
2540        if (array_info && array_info->desc == desc_array &&
2541            array_size <= array_info->size &&
2542            (void *)array_info == desc_array + array_info->size) {
2543                if (!can_sleep)
2544                        WARN_ON(array_info->chip->can_sleep);
2545
2546                ret = gpio_chip_get_multiple(array_info->chip,
2547                                             array_info->get_mask,
2548                                             value_bitmap);
2549                if (ret)
2550                        return ret;
2551
2552                if (!raw && !bitmap_empty(array_info->invert_mask, array_size))
2553                        bitmap_xor(value_bitmap, value_bitmap,
2554                                   array_info->invert_mask, array_size);
2555
2556                i = find_first_zero_bit(array_info->get_mask, array_size);
2557                if (i == array_size)
2558                        return 0;
2559        } else {
2560                array_info = NULL;
2561        }
2562
2563        while (i < array_size) {
2564                struct gpio_chip *gc = desc_array[i]->gdev->chip;
2565                DECLARE_BITMAP(fastpath_mask, FASTPATH_NGPIO);
2566                DECLARE_BITMAP(fastpath_bits, FASTPATH_NGPIO);
2567                unsigned long *mask, *bits;
2568                int first, j;
2569
2570                if (likely(gc->ngpio <= FASTPATH_NGPIO)) {
2571                        mask = fastpath_mask;
2572                        bits = fastpath_bits;
2573                } else {
2574                        gfp_t flags = can_sleep ? GFP_KERNEL : GFP_ATOMIC;
2575
2576                        mask = bitmap_alloc(gc->ngpio, flags);
2577                        if (!mask)
2578                                return -ENOMEM;
2579
2580                        bits = bitmap_alloc(gc->ngpio, flags);
2581                        if (!bits) {
2582                                bitmap_free(mask);
2583                                return -ENOMEM;
2584                        }
2585                }
2586
2587                bitmap_zero(mask, gc->ngpio);
2588
2589                if (!can_sleep)
2590                        WARN_ON(gc->can_sleep);
2591
2592                /* collect all inputs belonging to the same chip */
2593                first = i;
2594                do {
2595                        const struct gpio_desc *desc = desc_array[i];
2596                        int hwgpio = gpio_chip_hwgpio(desc);
2597
2598                        __set_bit(hwgpio, mask);
2599                        i++;
2600
2601                        if (array_info)
2602                                i = find_next_zero_bit(array_info->get_mask,
2603                                                       array_size, i);
2604                } while ((i < array_size) &&
2605                         (desc_array[i]->gdev->chip == gc));
2606
2607                ret = gpio_chip_get_multiple(gc, mask, bits);
2608                if (ret) {
2609                        if (mask != fastpath_mask)
2610                                bitmap_free(mask);
2611                        if (bits != fastpath_bits)
2612                                bitmap_free(bits);
2613                        return ret;
2614                }
2615
2616                for (j = first; j < i; ) {
2617                        const struct gpio_desc *desc = desc_array[j];
2618                        int hwgpio = gpio_chip_hwgpio(desc);
2619                        int value = test_bit(hwgpio, bits);
2620
2621                        if (!raw && test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2622                                value = !value;
2623                        __assign_bit(j, value_bitmap, value);
2624                        trace_gpio_value(desc_to_gpio(desc), 1, value);
2625                        j++;
2626
2627                        if (array_info)
2628                                j = find_next_zero_bit(array_info->get_mask, i,
2629                                                       j);
2630                }
2631
2632                if (mask != fastpath_mask)
2633                        bitmap_free(mask);
2634                if (bits != fastpath_bits)
2635                        bitmap_free(bits);
2636        }
2637        return 0;
2638}
2639
2640/**
2641 * gpiod_get_raw_value() - return a gpio's raw value
2642 * @desc: gpio whose value will be returned
2643 *
2644 * Return the GPIO's raw value, i.e. the value of the physical line disregarding
2645 * its ACTIVE_LOW status, or negative errno on failure.
2646 *
2647 * This function can be called from contexts where we cannot sleep, and will
2648 * complain if the GPIO chip functions potentially sleep.
2649 */
2650int gpiod_get_raw_value(const struct gpio_desc *desc)
2651{
2652        VALIDATE_DESC(desc);
2653        /* Should be using gpiod_get_raw_value_cansleep() */
2654        WARN_ON(desc->gdev->chip->can_sleep);
2655        return gpiod_get_raw_value_commit(desc);
2656}
2657EXPORT_SYMBOL_GPL(gpiod_get_raw_value);
2658
2659/**
2660 * gpiod_get_value() - return a gpio's value
2661 * @desc: gpio whose value will be returned
2662 *
2663 * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into
2664 * account, or negative errno on failure.
2665 *
2666 * This function can be called from contexts where we cannot sleep, and will
2667 * complain if the GPIO chip functions potentially sleep.
2668 */
2669int gpiod_get_value(const struct gpio_desc *desc)
2670{
2671        int value;
2672
2673        VALIDATE_DESC(desc);
2674        /* Should be using gpiod_get_value_cansleep() */
2675        WARN_ON(desc->gdev->chip->can_sleep);
2676
2677        value = gpiod_get_raw_value_commit(desc);
2678        if (value < 0)
2679                return value;
2680
2681        if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2682                value = !value;
2683
2684        return value;
2685}
2686EXPORT_SYMBOL_GPL(gpiod_get_value);
2687
2688/**
2689 * gpiod_get_raw_array_value() - read raw values from an array of GPIOs
2690 * @array_size: number of elements in the descriptor array / value bitmap
2691 * @desc_array: array of GPIO descriptors whose values will be read
2692 * @array_info: information on applicability of fast bitmap processing path
2693 * @value_bitmap: bitmap to store the read values
2694 *
2695 * Read the raw values of the GPIOs, i.e. the values of the physical lines
2696 * without regard for their ACTIVE_LOW status.  Return 0 in case of success,
2697 * else an error code.
2698 *
2699 * This function can be called from contexts where we cannot sleep,
2700 * and it will complain if the GPIO chip functions potentially sleep.
2701 */
2702int gpiod_get_raw_array_value(unsigned int array_size,
2703                              struct gpio_desc **desc_array,
2704                              struct gpio_array *array_info,
2705                              unsigned long *value_bitmap)
2706{
2707        if (!desc_array)
2708                return -EINVAL;
2709        return gpiod_get_array_value_complex(true, false, array_size,
2710                                             desc_array, array_info,
2711                                             value_bitmap);
2712}
2713EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value);
2714
2715/**
2716 * gpiod_get_array_value() - read values from an array of GPIOs
2717 * @array_size: number of elements in the descriptor array / value bitmap
2718 * @desc_array: array of GPIO descriptors whose values will be read
2719 * @array_info: information on applicability of fast bitmap processing path
2720 * @value_bitmap: bitmap to store the read values
2721 *
2722 * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
2723 * into account.  Return 0 in case of success, else an error code.
2724 *
2725 * This function can be called from contexts where we cannot sleep,
2726 * and it will complain if the GPIO chip functions potentially sleep.
2727 */
2728int gpiod_get_array_value(unsigned int array_size,
2729                          struct gpio_desc **desc_array,
2730                          struct gpio_array *array_info,
2731                          unsigned long *value_bitmap)
2732{
2733        if (!desc_array)
2734                return -EINVAL;
2735        return gpiod_get_array_value_complex(false, false, array_size,
2736                                             desc_array, array_info,
2737                                             value_bitmap);
2738}
2739EXPORT_SYMBOL_GPL(gpiod_get_array_value);
2740
2741/*
2742 *  gpio_set_open_drain_value_commit() - Set the open drain gpio's value.
2743 * @desc: gpio descriptor whose state need to be set.
2744 * @value: Non-zero for setting it HIGH otherwise it will set to LOW.
2745 */
2746static void gpio_set_open_drain_value_commit(struct gpio_desc *desc, bool value)
2747{
2748        int ret = 0;
2749        struct gpio_chip *gc = desc->gdev->chip;
2750        int offset = gpio_chip_hwgpio(desc);
2751
2752        if (value) {
2753                ret = gc->direction_input(gc, offset);
2754        } else {
2755                ret = gc->direction_output(gc, offset, 0);
2756                if (!ret)
2757                        set_bit(FLAG_IS_OUT, &desc->flags);
2758        }
2759        trace_gpio_direction(desc_to_gpio(desc), value, ret);
2760        if (ret < 0)
2761                gpiod_err(desc,
2762                          "%s: Error in set_value for open drain err %d\n",
2763                          __func__, ret);
2764}
2765
2766/*
2767 *  _gpio_set_open_source_value() - Set the open source gpio's value.
2768 * @desc: gpio descriptor whose state need to be set.
2769 * @value: Non-zero for setting it HIGH otherwise it will set to LOW.
2770 */
2771static void gpio_set_open_source_value_commit(struct gpio_desc *desc, bool value)
2772{
2773        int ret = 0;
2774        struct gpio_chip *gc = desc->gdev->chip;
2775        int offset = gpio_chip_hwgpio(desc);
2776
2777        if (value) {
2778                ret = gc->direction_output(gc, offset, 1);
2779                if (!ret)
2780                        set_bit(FLAG_IS_OUT, &desc->flags);
2781        } else {
2782                ret = gc->direction_input(gc, offset);
2783        }
2784        trace_gpio_direction(desc_to_gpio(desc), !value, ret);
2785        if (ret < 0)
2786                gpiod_err(desc,
2787                          "%s: Error in set_value for open source err %d\n",
2788                          __func__, ret);
2789}
2790
2791static void gpiod_set_raw_value_commit(struct gpio_desc *desc, bool value)
2792{
2793        struct gpio_chip        *gc;
2794
2795        gc = desc->gdev->chip;
2796        trace_gpio_value(desc_to_gpio(desc), 0, value);
2797        gc->set(gc, gpio_chip_hwgpio(desc), value);
2798}
2799
2800/*
2801 * set multiple outputs on the same chip;
2802 * use the chip's set_multiple function if available;
2803 * otherwise set the outputs sequentially;
2804 * @chip: the GPIO chip we operate on
2805 * @mask: bit mask array; one bit per output; BITS_PER_LONG bits per word
2806 *        defines which outputs are to be changed
2807 * @bits: bit value array; one bit per output; BITS_PER_LONG bits per word
2808 *        defines the values the outputs specified by mask are to be set to
2809 */
2810static void gpio_chip_set_multiple(struct gpio_chip *gc,
2811                                   unsigned long *mask, unsigned long *bits)
2812{
2813        if (gc->set_multiple) {
2814                gc->set_multiple(gc, mask, bits);
2815        } else {
2816                unsigned int i;
2817
2818                /* set outputs if the corresponding mask bit is set */
2819                for_each_set_bit(i, mask, gc->ngpio)
2820                        gc->set(gc, i, test_bit(i, bits));
2821        }
2822}
2823
2824int gpiod_set_array_value_complex(bool raw, bool can_sleep,
2825                                  unsigned int array_size,
2826                                  struct gpio_desc **desc_array,
2827                                  struct gpio_array *array_info,
2828                                  unsigned long *value_bitmap)
2829{
2830        int i = 0;
2831
2832        /*
2833         * Validate array_info against desc_array and its size.
2834         * It should immediately follow desc_array if both
2835         * have been obtained from the same gpiod_get_array() call.
2836         */
2837        if (array_info && array_info->desc == desc_array &&
2838            array_size <= array_info->size &&
2839            (void *)array_info == desc_array + array_info->size) {
2840                if (!can_sleep)
2841                        WARN_ON(array_info->chip->can_sleep);
2842
2843                if (!raw && !bitmap_empty(array_info->invert_mask, array_size))
2844                        bitmap_xor(value_bitmap, value_bitmap,
2845                                   array_info->invert_mask, array_size);
2846
2847                gpio_chip_set_multiple(array_info->chip, array_info->set_mask,
2848                                       value_bitmap);
2849
2850                i = find_first_zero_bit(array_info->set_mask, array_size);
2851                if (i == array_size)
2852                        return 0;
2853        } else {
2854                array_info = NULL;
2855        }
2856
2857        while (i < array_size) {
2858                struct gpio_chip *gc = desc_array[i]->gdev->chip;
2859                DECLARE_BITMAP(fastpath_mask, FASTPATH_NGPIO);
2860                DECLARE_BITMAP(fastpath_bits, FASTPATH_NGPIO);
2861                unsigned long *mask, *bits;
2862                int count = 0;
2863
2864                if (likely(gc->ngpio <= FASTPATH_NGPIO)) {
2865                        mask = fastpath_mask;
2866                        bits = fastpath_bits;
2867                } else {
2868                        gfp_t flags = can_sleep ? GFP_KERNEL : GFP_ATOMIC;
2869
2870                        mask = bitmap_alloc(gc->ngpio, flags);
2871                        if (!mask)
2872                                return -ENOMEM;
2873
2874                        bits = bitmap_alloc(gc->ngpio, flags);
2875                        if (!bits) {
2876                                bitmap_free(mask);
2877                                return -ENOMEM;
2878                        }
2879                }
2880
2881                bitmap_zero(mask, gc->ngpio);
2882
2883                if (!can_sleep)
2884                        WARN_ON(gc->can_sleep);
2885
2886                do {
2887                        struct gpio_desc *desc = desc_array[i];
2888                        int hwgpio = gpio_chip_hwgpio(desc);
2889                        int value = test_bit(i, value_bitmap);
2890
2891                        /*
2892                         * Pins applicable for fast input but not for
2893                         * fast output processing may have been already
2894                         * inverted inside the fast path, skip them.
2895                         */
2896                        if (!raw && !(array_info &&
2897                            test_bit(i, array_info->invert_mask)) &&
2898                            test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2899                                value = !value;
2900                        trace_gpio_value(desc_to_gpio(desc), 0, value);
2901                        /*
2902                         * collect all normal outputs belonging to the same chip
2903                         * open drain and open source outputs are set individually
2904                         */
2905                        if (test_bit(FLAG_OPEN_DRAIN, &desc->flags) && !raw) {
2906                                gpio_set_open_drain_value_commit(desc, value);
2907                        } else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags) && !raw) {
2908                                gpio_set_open_source_value_commit(desc, value);
2909                        } else {
2910                                __set_bit(hwgpio, mask);
2911                                __assign_bit(hwgpio, bits, value);
2912                                count++;
2913                        }
2914                        i++;
2915
2916                        if (array_info)
2917                                i = find_next_zero_bit(array_info->set_mask,
2918                                                       array_size, i);
2919                } while ((i < array_size) &&
2920                         (desc_array[i]->gdev->chip == gc));
2921                /* push collected bits to outputs */
2922                if (count != 0)
2923                        gpio_chip_set_multiple(gc, mask, bits);
2924
2925                if (mask != fastpath_mask)
2926                        bitmap_free(mask);
2927                if (bits != fastpath_bits)
2928                        bitmap_free(bits);
2929        }
2930        return 0;
2931}
2932
2933/**
2934 * gpiod_set_raw_value() - assign a gpio's raw value
2935 * @desc: gpio whose value will be assigned
2936 * @value: value to assign
2937 *
2938 * Set the raw value of the GPIO, i.e. the value of its physical line without
2939 * regard for its ACTIVE_LOW status.
2940 *
2941 * This function can be called from contexts where we cannot sleep, and will
2942 * complain if the GPIO chip functions potentially sleep.
2943 */
2944void gpiod_set_raw_value(struct gpio_desc *desc, int value)
2945{
2946        VALIDATE_DESC_VOID(desc);
2947        /* Should be using gpiod_set_raw_value_cansleep() */
2948        WARN_ON(desc->gdev->chip->can_sleep);
2949        gpiod_set_raw_value_commit(desc, value);
2950}
2951EXPORT_SYMBOL_GPL(gpiod_set_raw_value);
2952
2953/**
2954 * gpiod_set_value_nocheck() - set a GPIO line value without checking
2955 * @desc: the descriptor to set the value on
2956 * @value: value to set
2957 *
2958 * This sets the value of a GPIO line backing a descriptor, applying
2959 * different semantic quirks like active low and open drain/source
2960 * handling.
2961 */
2962static void gpiod_set_value_nocheck(struct gpio_desc *desc, int value)
2963{
2964        if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
2965                value = !value;
2966        if (test_bit(FLAG_OPEN_DRAIN, &desc->flags))
2967                gpio_set_open_drain_value_commit(desc, value);
2968        else if (test_bit(FLAG_OPEN_SOURCE, &desc->flags))
2969                gpio_set_open_source_value_commit(desc, value);
2970        else
2971                gpiod_set_raw_value_commit(desc, value);
2972}
2973
2974/**
2975 * gpiod_set_value() - assign a gpio's value
2976 * @desc: gpio whose value will be assigned
2977 * @value: value to assign
2978 *
2979 * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW,
2980 * OPEN_DRAIN and OPEN_SOURCE flags into account.
2981 *
2982 * This function can be called from contexts where we cannot sleep, and will
2983 * complain if the GPIO chip functions potentially sleep.
2984 */
2985void gpiod_set_value(struct gpio_desc *desc, int value)
2986{
2987        VALIDATE_DESC_VOID(desc);
2988        /* Should be using gpiod_set_value_cansleep() */
2989        WARN_ON(desc->gdev->chip->can_sleep);
2990        gpiod_set_value_nocheck(desc, value);
2991}
2992EXPORT_SYMBOL_GPL(gpiod_set_value);
2993
2994/**
2995 * gpiod_set_raw_array_value() - assign values to an array of GPIOs
2996 * @array_size: number of elements in the descriptor array / value bitmap
2997 * @desc_array: array of GPIO descriptors whose values will be assigned
2998 * @array_info: information on applicability of fast bitmap processing path
2999 * @value_bitmap: bitmap of values to assign
3000 *
3001 * Set the raw values of the GPIOs, i.e. the values of the physical lines
3002 * without regard for their ACTIVE_LOW status.
3003 *
3004 * This function can be called from contexts where we cannot sleep, and will
3005 * complain if the GPIO chip functions potentially sleep.
3006 */
3007int gpiod_set_raw_array_value(unsigned int array_size,
3008                              struct gpio_desc **desc_array,
3009                              struct gpio_array *array_info,
3010                              unsigned long *value_bitmap)
3011{
3012        if (!desc_array)
3013                return -EINVAL;
3014        return gpiod_set_array_value_complex(true, false, array_size,
3015                                        desc_array, array_info, value_bitmap);
3016}
3017EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value);
3018
3019/**
3020 * gpiod_set_array_value() - assign values to an array of GPIOs
3021 * @array_size: number of elements in the descriptor array / value bitmap
3022 * @desc_array: array of GPIO descriptors whose values will be assigned
3023 * @array_info: information on applicability of fast bitmap processing path
3024 * @value_bitmap: bitmap of values to assign
3025 *
3026 * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3027 * into account.
3028 *
3029 * This function can be called from contexts where we cannot sleep, and will
3030 * complain if the GPIO chip functions potentially sleep.
3031 */
3032int gpiod_set_array_value(unsigned int array_size,
3033                          struct gpio_desc **desc_array,
3034                          struct gpio_array *array_info,
3035                          unsigned long *value_bitmap)
3036{
3037        if (!desc_array)
3038                return -EINVAL;
3039        return gpiod_set_array_value_complex(false, false, array_size,
3040                                             desc_array, array_info,
3041                                             value_bitmap);
3042}
3043EXPORT_SYMBOL_GPL(gpiod_set_array_value);
3044
3045/**
3046 * gpiod_cansleep() - report whether gpio value access may sleep
3047 * @desc: gpio to check
3048 *
3049 */
3050int gpiod_cansleep(const struct gpio_desc *desc)
3051{
3052        VALIDATE_DESC(desc);
3053        return desc->gdev->chip->can_sleep;
3054}
3055EXPORT_SYMBOL_GPL(gpiod_cansleep);
3056
3057/**
3058 * gpiod_set_consumer_name() - set the consumer name for the descriptor
3059 * @desc: gpio to set the consumer name on
3060 * @name: the new consumer name
3061 */
3062int gpiod_set_consumer_name(struct gpio_desc *desc, const char *name)
3063{
3064        VALIDATE_DESC(desc);
3065        if (name) {
3066                name = kstrdup_const(name, GFP_KERNEL);
3067                if (!name)
3068                        return -ENOMEM;
3069        }
3070
3071        kfree_const(desc->label);
3072        desc_set_label(desc, name);
3073
3074        return 0;
3075}
3076EXPORT_SYMBOL_GPL(gpiod_set_consumer_name);
3077
3078/**
3079 * gpiod_to_irq() - return the IRQ corresponding to a GPIO
3080 * @desc: gpio whose IRQ will be returned (already requested)
3081 *
3082 * Return the IRQ corresponding to the passed GPIO, or an error code in case of
3083 * error.
3084 */
3085int gpiod_to_irq(const struct gpio_desc *desc)
3086{
3087        struct gpio_chip *gc;
3088        int offset;
3089
3090        /*
3091         * Cannot VALIDATE_DESC() here as gpiod_to_irq() consumer semantics
3092         * requires this function to not return zero on an invalid descriptor
3093         * but rather a negative error number.
3094         */
3095        if (!desc || IS_ERR(desc) || !desc->gdev || !desc->gdev->chip)
3096                return -EINVAL;
3097
3098        gc = desc->gdev->chip;
3099        offset = gpio_chip_hwgpio(desc);
3100        if (gc->to_irq) {
3101                int retirq = gc->to_irq(gc, offset);
3102
3103                /* Zero means NO_IRQ */
3104                if (!retirq)
3105                        return -ENXIO;
3106
3107                return retirq;
3108        }
3109        return -ENXIO;
3110}
3111EXPORT_SYMBOL_GPL(gpiod_to_irq);
3112
3113/**
3114 * gpiochip_lock_as_irq() - lock a GPIO to be used as IRQ
3115 * @gc: the chip the GPIO to lock belongs to
3116 * @offset: the offset of the GPIO to lock as IRQ
3117 *
3118 * This is used directly by GPIO drivers that want to lock down
3119 * a certain GPIO line to be used for IRQs.
3120 */
3121int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset)
3122{
3123        struct gpio_desc *desc;
3124
3125        desc = gpiochip_get_desc(gc, offset);
3126        if (IS_ERR(desc))
3127                return PTR_ERR(desc);
3128
3129        /*
3130         * If it's fast: flush the direction setting if something changed
3131         * behind our back
3132         */
3133        if (!gc->can_sleep && gc->get_direction) {
3134                int dir = gpiod_get_direction(desc);
3135
3136                if (dir < 0) {
3137                        chip_err(gc, "%s: cannot get GPIO direction\n",
3138                                 __func__);
3139                        return dir;
3140                }
3141        }
3142
3143        /* To be valid for IRQ the line needs to be input or open drain */
3144        if (test_bit(FLAG_IS_OUT, &desc->flags) &&
3145            !test_bit(FLAG_OPEN_DRAIN, &desc->flags)) {
3146                chip_err(gc,
3147                         "%s: tried to flag a GPIO set as output for IRQ\n",
3148                         __func__);
3149                return -EIO;
3150        }
3151
3152        set_bit(FLAG_USED_AS_IRQ, &desc->flags);
3153        set_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3154
3155        /*
3156         * If the consumer has not set up a label (such as when the
3157         * IRQ is referenced from .to_irq()) we set up a label here
3158         * so it is clear this is used as an interrupt.
3159         */
3160        if (!desc->label)
3161                desc_set_label(desc, "interrupt");
3162
3163        return 0;
3164}
3165EXPORT_SYMBOL_GPL(gpiochip_lock_as_irq);
3166
3167/**
3168 * gpiochip_unlock_as_irq() - unlock a GPIO used as IRQ
3169 * @gc: the chip the GPIO to lock belongs to
3170 * @offset: the offset of the GPIO to lock as IRQ
3171 *
3172 * This is used directly by GPIO drivers that want to indicate
3173 * that a certain GPIO is no longer used exclusively for IRQ.
3174 */
3175void gpiochip_unlock_as_irq(struct gpio_chip *gc, unsigned int offset)
3176{
3177        struct gpio_desc *desc;
3178
3179        desc = gpiochip_get_desc(gc, offset);
3180        if (IS_ERR(desc))
3181                return;
3182
3183        clear_bit(FLAG_USED_AS_IRQ, &desc->flags);
3184        clear_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3185
3186        /* If we only had this marking, erase it */
3187        if (desc->label && !strcmp(desc->label, "interrupt"))
3188                desc_set_label(desc, NULL);
3189}
3190EXPORT_SYMBOL_GPL(gpiochip_unlock_as_irq);
3191
3192void gpiochip_disable_irq(struct gpio_chip *gc, unsigned int offset)
3193{
3194        struct gpio_desc *desc = gpiochip_get_desc(gc, offset);
3195
3196        if (!IS_ERR(desc) &&
3197            !WARN_ON(!test_bit(FLAG_USED_AS_IRQ, &desc->flags)))
3198                clear_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3199}
3200EXPORT_SYMBOL_GPL(gpiochip_disable_irq);
3201
3202void gpiochip_enable_irq(struct gpio_chip *gc, unsigned int offset)
3203{
3204        struct gpio_desc *desc = gpiochip_get_desc(gc, offset);
3205
3206        if (!IS_ERR(desc) &&
3207            !WARN_ON(!test_bit(FLAG_USED_AS_IRQ, &desc->flags))) {
3208                /*
3209                 * We must not be output when using IRQ UNLESS we are
3210                 * open drain.
3211                 */
3212                WARN_ON(test_bit(FLAG_IS_OUT, &desc->flags) &&
3213                        !test_bit(FLAG_OPEN_DRAIN, &desc->flags));
3214                set_bit(FLAG_IRQ_IS_ENABLED, &desc->flags);
3215        }
3216}
3217EXPORT_SYMBOL_GPL(gpiochip_enable_irq);
3218
3219bool gpiochip_line_is_irq(struct gpio_chip *gc, unsigned int offset)
3220{
3221        if (offset >= gc->ngpio)
3222                return false;
3223
3224        return test_bit(FLAG_USED_AS_IRQ, &gc->gpiodev->descs[offset].flags);
3225}
3226EXPORT_SYMBOL_GPL(gpiochip_line_is_irq);
3227
3228int gpiochip_reqres_irq(struct gpio_chip *gc, unsigned int offset)
3229{
3230        int ret;
3231
3232        if (!try_module_get(gc->gpiodev->owner))
3233                return -ENODEV;
3234
3235        ret = gpiochip_lock_as_irq(gc, offset);
3236        if (ret) {
3237                chip_err(gc, "unable to lock HW IRQ %u for IRQ\n", offset);
3238                module_put(gc->gpiodev->owner);
3239                return ret;
3240        }
3241        return 0;
3242}
3243EXPORT_SYMBOL_GPL(gpiochip_reqres_irq);
3244
3245void gpiochip_relres_irq(struct gpio_chip *gc, unsigned int offset)
3246{
3247        gpiochip_unlock_as_irq(gc, offset);
3248        module_put(gc->gpiodev->owner);
3249}
3250EXPORT_SYMBOL_GPL(gpiochip_relres_irq);
3251
3252bool gpiochip_line_is_open_drain(struct gpio_chip *gc, unsigned int offset)
3253{
3254        if (offset >= gc->ngpio)
3255                return false;
3256
3257        return test_bit(FLAG_OPEN_DRAIN, &gc->gpiodev->descs[offset].flags);
3258}
3259EXPORT_SYMBOL_GPL(gpiochip_line_is_open_drain);
3260
3261bool gpiochip_line_is_open_source(struct gpio_chip *gc, unsigned int offset)
3262{
3263        if (offset >= gc->ngpio)
3264                return false;
3265
3266        return test_bit(FLAG_OPEN_SOURCE, &gc->gpiodev->descs[offset].flags);
3267}
3268EXPORT_SYMBOL_GPL(gpiochip_line_is_open_source);
3269
3270bool gpiochip_line_is_persistent(struct gpio_chip *gc, unsigned int offset)
3271{
3272        if (offset >= gc->ngpio)
3273                return false;
3274
3275        return !test_bit(FLAG_TRANSITORY, &gc->gpiodev->descs[offset].flags);
3276}
3277EXPORT_SYMBOL_GPL(gpiochip_line_is_persistent);
3278
3279/**
3280 * gpiod_get_raw_value_cansleep() - return a gpio's raw value
3281 * @desc: gpio whose value will be returned
3282 *
3283 * Return the GPIO's raw value, i.e. the value of the physical line disregarding
3284 * its ACTIVE_LOW status, or negative errno on failure.
3285 *
3286 * This function is to be called from contexts that can sleep.
3287 */
3288int gpiod_get_raw_value_cansleep(const struct gpio_desc *desc)
3289{
3290        might_sleep_if(extra_checks);
3291        VALIDATE_DESC(desc);
3292        return gpiod_get_raw_value_commit(desc);
3293}
3294EXPORT_SYMBOL_GPL(gpiod_get_raw_value_cansleep);
3295
3296/**
3297 * gpiod_get_value_cansleep() - return a gpio's value
3298 * @desc: gpio whose value will be returned
3299 *
3300 * Return the GPIO's logical value, i.e. taking the ACTIVE_LOW status into
3301 * account, or negative errno on failure.
3302 *
3303 * This function is to be called from contexts that can sleep.
3304 */
3305int gpiod_get_value_cansleep(const struct gpio_desc *desc)
3306{
3307        int value;
3308
3309        might_sleep_if(extra_checks);
3310        VALIDATE_DESC(desc);
3311        value = gpiod_get_raw_value_commit(desc);
3312        if (value < 0)
3313                return value;
3314
3315        if (test_bit(FLAG_ACTIVE_LOW, &desc->flags))
3316                value = !value;
3317
3318        return value;
3319}
3320EXPORT_SYMBOL_GPL(gpiod_get_value_cansleep);
3321
3322/**
3323 * gpiod_get_raw_array_value_cansleep() - read raw values from an array of GPIOs
3324 * @array_size: number of elements in the descriptor array / value bitmap
3325 * @desc_array: array of GPIO descriptors whose values will be read
3326 * @array_info: information on applicability of fast bitmap processing path
3327 * @value_bitmap: bitmap to store the read values
3328 *
3329 * Read the raw values of the GPIOs, i.e. the values of the physical lines
3330 * without regard for their ACTIVE_LOW status.  Return 0 in case of success,
3331 * else an error code.
3332 *
3333 * This function is to be called from contexts that can sleep.
3334 */
3335int gpiod_get_raw_array_value_cansleep(unsigned int array_size,
3336                                       struct gpio_desc **desc_array,
3337                                       struct gpio_array *array_info,
3338                                       unsigned long *value_bitmap)
3339{
3340        might_sleep_if(extra_checks);
3341        if (!desc_array)
3342                return -EINVAL;
3343        return gpiod_get_array_value_complex(true, true, array_size,
3344                                             desc_array, array_info,
3345                                             value_bitmap);
3346}
3347EXPORT_SYMBOL_GPL(gpiod_get_raw_array_value_cansleep);
3348
3349/**
3350 * gpiod_get_array_value_cansleep() - read values from an array of GPIOs
3351 * @array_size: number of elements in the descriptor array / value bitmap
3352 * @desc_array: array of GPIO descriptors whose values will be read
3353 * @array_info: information on applicability of fast bitmap processing path
3354 * @value_bitmap: bitmap to store the read values
3355 *
3356 * Read the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3357 * into account.  Return 0 in case of success, else an error code.
3358 *
3359 * This function is to be called from contexts that can sleep.
3360 */
3361int gpiod_get_array_value_cansleep(unsigned int array_size,
3362                                   struct gpio_desc **desc_array,
3363                                   struct gpio_array *array_info,
3364                                   unsigned long *value_bitmap)
3365{
3366        might_sleep_if(extra_checks);
3367        if (!desc_array)
3368                return -EINVAL;
3369        return gpiod_get_array_value_complex(false, true, array_size,
3370                                             desc_array, array_info,
3371                                             value_bitmap);
3372}
3373EXPORT_SYMBOL_GPL(gpiod_get_array_value_cansleep);
3374
3375/**
3376 * gpiod_set_raw_value_cansleep() - assign a gpio's raw value
3377 * @desc: gpio whose value will be assigned
3378 * @value: value to assign
3379 *
3380 * Set the raw value of the GPIO, i.e. the value of its physical line without
3381 * regard for its ACTIVE_LOW status.
3382 *
3383 * This function is to be called from contexts that can sleep.
3384 */
3385void gpiod_set_raw_value_cansleep(struct gpio_desc *desc, int value)
3386{
3387        might_sleep_if(extra_checks);
3388        VALIDATE_DESC_VOID(desc);
3389        gpiod_set_raw_value_commit(desc, value);
3390}
3391EXPORT_SYMBOL_GPL(gpiod_set_raw_value_cansleep);
3392
3393/**
3394 * gpiod_set_value_cansleep() - assign a gpio's value
3395 * @desc: gpio whose value will be assigned
3396 * @value: value to assign
3397 *
3398 * Set the logical value of the GPIO, i.e. taking its ACTIVE_LOW status into
3399 * account
3400 *
3401 * This function is to be called from contexts that can sleep.
3402 */
3403void gpiod_set_value_cansleep(struct gpio_desc *desc, int value)
3404{
3405        might_sleep_if(extra_checks);
3406        VALIDATE_DESC_VOID(desc);
3407        gpiod_set_value_nocheck(desc, value);
3408}
3409EXPORT_SYMBOL_GPL(gpiod_set_value_cansleep);
3410
3411/**
3412 * gpiod_set_raw_array_value_cansleep() - assign values to an array of GPIOs
3413 * @array_size: number of elements in the descriptor array / value bitmap
3414 * @desc_array: array of GPIO descriptors whose values will be assigned
3415 * @array_info: information on applicability of fast bitmap processing path
3416 * @value_bitmap: bitmap of values to assign
3417 *
3418 * Set the raw values of the GPIOs, i.e. the values of the physical lines
3419 * without regard for their ACTIVE_LOW status.
3420 *
3421 * This function is to be called from contexts that can sleep.
3422 */
3423int gpiod_set_raw_array_value_cansleep(unsigned int array_size,
3424                                       struct gpio_desc **desc_array,
3425                                       struct gpio_array *array_info,
3426                                       unsigned long *value_bitmap)
3427{
3428        might_sleep_if(extra_checks);
3429        if (!desc_array)
3430                return -EINVAL;
3431        return gpiod_set_array_value_complex(true, true, array_size, desc_array,
3432                                      array_info, value_bitmap);
3433}
3434EXPORT_SYMBOL_GPL(gpiod_set_raw_array_value_cansleep);
3435
3436/**
3437 * gpiod_add_lookup_tables() - register GPIO device consumers
3438 * @tables: list of tables of consumers to register
3439 * @n: number of tables in the list
3440 */
3441void gpiod_add_lookup_tables(struct gpiod_lookup_table **tables, size_t n)
3442{
3443        unsigned int i;
3444
3445        mutex_lock(&gpio_lookup_lock);
3446
3447        for (i = 0; i < n; i++)
3448                list_add_tail(&tables[i]->list, &gpio_lookup_list);
3449
3450        mutex_unlock(&gpio_lookup_lock);
3451}
3452
3453/**
3454 * gpiod_set_array_value_cansleep() - assign values to an array of GPIOs
3455 * @array_size: number of elements in the descriptor array / value bitmap
3456 * @desc_array: array of GPIO descriptors whose values will be assigned
3457 * @array_info: information on applicability of fast bitmap processing path
3458 * @value_bitmap: bitmap of values to assign
3459 *
3460 * Set the logical values of the GPIOs, i.e. taking their ACTIVE_LOW status
3461 * into account.
3462 *
3463 * This function is to be called from contexts that can sleep.
3464 */
3465int gpiod_set_array_value_cansleep(unsigned int array_size,
3466                                   struct gpio_desc **desc_array,
3467                                   struct gpio_array *array_info,
3468                                   unsigned long *value_bitmap)
3469{
3470        might_sleep_if(extra_checks);
3471        if (!desc_array)
3472                return -EINVAL;
3473        return gpiod_set_array_value_complex(false, true, array_size,
3474                                             desc_array, array_info,
3475                                             value_bitmap);
3476}
3477EXPORT_SYMBOL_GPL(gpiod_set_array_value_cansleep);
3478
3479/**
3480 * gpiod_add_lookup_table() - register GPIO device consumers
3481 * @table: table of consumers to register
3482 */
3483void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
3484{
3485        mutex_lock(&gpio_lookup_lock);
3486
3487        list_add_tail(&table->list, &gpio_lookup_list);
3488
3489        mutex_unlock(&gpio_lookup_lock);
3490}
3491EXPORT_SYMBOL_GPL(gpiod_add_lookup_table);
3492
3493/**
3494 * gpiod_remove_lookup_table() - unregister GPIO device consumers
3495 * @table: table of consumers to unregister
3496 */
3497void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
3498{
3499        /* Nothing to remove */
3500        if (!table)
3501                return;
3502
3503        mutex_lock(&gpio_lookup_lock);
3504
3505        list_del(&table->list);
3506
3507        mutex_unlock(&gpio_lookup_lock);
3508}
3509EXPORT_SYMBOL_GPL(gpiod_remove_lookup_table);
3510
3511/**
3512 * gpiod_add_hogs() - register a set of GPIO hogs from machine code
3513 * @hogs: table of gpio hog entries with a zeroed sentinel at the end
3514 */
3515void gpiod_add_hogs(struct gpiod_hog *hogs)
3516{
3517        struct gpio_chip *gc;
3518        struct gpiod_hog *hog;
3519
3520        mutex_lock(&gpio_machine_hogs_mutex);
3521
3522        for (hog = &hogs[0]; hog->chip_label; hog++) {
3523                list_add_tail(&hog->list, &gpio_machine_hogs);
3524
3525                /*
3526                 * The chip may have been registered earlier, so check if it
3527                 * exists and, if so, try to hog the line now.
3528                 */
3529                gc = find_chip_by_name(hog->chip_label);
3530                if (gc)
3531                        gpiochip_machine_hog(gc, hog);
3532        }
3533
3534        mutex_unlock(&gpio_machine_hogs_mutex);
3535}
3536EXPORT_SYMBOL_GPL(gpiod_add_hogs);
3537
3538static struct gpiod_lookup_table *gpiod_find_lookup_table(struct device *dev)
3539{
3540        const char *dev_id = dev ? dev_name(dev) : NULL;
3541        struct gpiod_lookup_table *table;
3542
3543        mutex_lock(&gpio_lookup_lock);
3544
3545        list_for_each_entry(table, &gpio_lookup_list, list) {
3546                if (table->dev_id && dev_id) {
3547                        /*
3548                         * Valid strings on both ends, must be identical to have
3549                         * a match
3550                         */
3551                        if (!strcmp(table->dev_id, dev_id))
3552                                goto found;
3553                } else {
3554                        /*
3555                         * One of the pointers is NULL, so both must be to have
3556                         * a match
3557                         */
3558                        if (dev_id == table->dev_id)
3559                                goto found;
3560                }
3561        }
3562        table = NULL;
3563
3564found:
3565        mutex_unlock(&gpio_lookup_lock);
3566        return table;
3567}
3568
3569static struct gpio_desc *gpiod_find(struct device *dev, const char *con_id,
3570                                    unsigned int idx, unsigned long *flags)
3571{
3572        struct gpio_desc *desc = ERR_PTR(-ENOENT);
3573        struct gpiod_lookup_table *table;
3574        struct gpiod_lookup *p;
3575
3576        table = gpiod_find_lookup_table(dev);
3577        if (!table)
3578                return desc;
3579
3580        for (p = &table->table[0]; p->key; p++) {
3581                struct gpio_chip *gc;
3582
3583                /* idx must always match exactly */
3584                if (p->idx != idx)
3585                        continue;
3586
3587                /* If the lookup entry has a con_id, require exact match */
3588                if (p->con_id && (!con_id || strcmp(p->con_id, con_id)))
3589                        continue;
3590
3591                if (p->chip_hwnum == U16_MAX) {
3592                        desc = gpio_name_to_desc(p->key);
3593                        if (desc) {
3594                                *flags = p->flags;
3595                                return desc;
3596                        }
3597
3598                        dev_warn(dev, "cannot find GPIO line %s, deferring\n",
3599                                 p->key);
3600                        return ERR_PTR(-EPROBE_DEFER);
3601                }
3602
3603                gc = find_chip_by_name(p->key);
3604
3605                if (!gc) {
3606                        /*
3607                         * As the lookup table indicates a chip with
3608                         * p->key should exist, assume it may
3609                         * still appear later and let the interested
3610                         * consumer be probed again or let the Deferred
3611                         * Probe infrastructure handle the error.
3612                         */
3613                        dev_warn(dev, "cannot find GPIO chip %s, deferring\n",
3614                                 p->key);
3615                        return ERR_PTR(-EPROBE_DEFER);
3616                }
3617
3618                if (gc->ngpio <= p->chip_hwnum) {
3619                        dev_err(dev,
3620                                "requested GPIO %u (%u) is out of range [0..%u] for chip %s\n",
3621                                idx, p->chip_hwnum, gc->ngpio - 1,
3622                                gc->label);
3623                        return ERR_PTR(-EINVAL);
3624                }
3625
3626                desc = gpiochip_get_desc(gc, p->chip_hwnum);
3627                *flags = p->flags;
3628
3629                return desc;
3630        }
3631
3632        return desc;
3633}
3634
3635static int platform_gpio_count(struct device *dev, const char *con_id)
3636{
3637        struct gpiod_lookup_table *table;
3638        struct gpiod_lookup *p;
3639        unsigned int count = 0;
3640
3641        table = gpiod_find_lookup_table(dev);
3642        if (!table)
3643                return -ENOENT;
3644
3645        for (p = &table->table[0]; p->key; p++) {
3646                if ((con_id && p->con_id && !strcmp(con_id, p->con_id)) ||
3647                    (!con_id && !p->con_id))
3648                        count++;
3649        }
3650        if (!count)
3651                return -ENOENT;
3652
3653        return count;
3654}
3655
3656/**
3657 * fwnode_gpiod_get_index - obtain a GPIO from firmware node
3658 * @fwnode:     handle of the firmware node
3659 * @con_id:     function within the GPIO consumer
3660 * @index:      index of the GPIO to obtain for the consumer
3661 * @flags:      GPIO initialization flags
3662 * @label:      label to attach to the requested GPIO
3663 *
3664 * This function can be used for drivers that get their configuration
3665 * from opaque firmware.
3666 *
3667 * The function properly finds the corresponding GPIO using whatever is the
3668 * underlying firmware interface and then makes sure that the GPIO
3669 * descriptor is requested before it is returned to the caller.
3670 *
3671 * Returns:
3672 * On successful request the GPIO pin is configured in accordance with
3673 * provided @flags.
3674 *
3675 * In case of error an ERR_PTR() is returned.
3676 */
3677struct gpio_desc *fwnode_gpiod_get_index(struct fwnode_handle *fwnode,
3678                                         const char *con_id, int index,
3679                                         enum gpiod_flags flags,
3680                                         const char *label)
3681{
3682        struct gpio_desc *desc;
3683        char prop_name[32]; /* 32 is max size of property name */
3684        unsigned int i;
3685
3686        for (i = 0; i < ARRAY_SIZE(gpio_suffixes); i++) {
3687                if (con_id)
3688                        snprintf(prop_name, sizeof(prop_name), "%s-%s",
3689                                            con_id, gpio_suffixes[i]);
3690                else
3691                        snprintf(prop_name, sizeof(prop_name), "%s",
3692                                            gpio_suffixes[i]);
3693
3694                desc = fwnode_get_named_gpiod(fwnode, prop_name, index, flags,
3695                                              label);
3696                if (!gpiod_not_found(desc))
3697                        break;
3698        }
3699
3700        return desc;
3701}
3702EXPORT_SYMBOL_GPL(fwnode_gpiod_get_index);
3703
3704/**
3705 * gpiod_count - return the number of GPIOs associated with a device / function
3706 *              or -ENOENT if no GPIO has been assigned to the requested function
3707 * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3708 * @con_id:     function within the GPIO consumer
3709 */
3710int gpiod_count(struct device *dev, const char *con_id)
3711{
3712        const struct fwnode_handle *fwnode = dev ? dev_fwnode(dev) : NULL;
3713        int count = -ENOENT;
3714
3715        if (is_of_node(fwnode))
3716                count = of_gpio_get_count(dev, con_id);
3717        else if (is_acpi_node(fwnode))
3718                count = acpi_gpio_count(dev, con_id);
3719
3720        if (count < 0)
3721                count = platform_gpio_count(dev, con_id);
3722
3723        return count;
3724}
3725EXPORT_SYMBOL_GPL(gpiod_count);
3726
3727/**
3728 * gpiod_get - obtain a GPIO for a given GPIO function
3729 * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3730 * @con_id:     function within the GPIO consumer
3731 * @flags:      optional GPIO initialization flags
3732 *
3733 * Return the GPIO descriptor corresponding to the function con_id of device
3734 * dev, -ENOENT if no GPIO has been assigned to the requested function, or
3735 * another IS_ERR() code if an error occurred while trying to acquire the GPIO.
3736 */
3737struct gpio_desc *__must_check gpiod_get(struct device *dev, const char *con_id,
3738                                         enum gpiod_flags flags)
3739{
3740        return gpiod_get_index(dev, con_id, 0, flags);
3741}
3742EXPORT_SYMBOL_GPL(gpiod_get);
3743
3744/**
3745 * gpiod_get_optional - obtain an optional GPIO for a given GPIO function
3746 * @dev: GPIO consumer, can be NULL for system-global GPIOs
3747 * @con_id: function within the GPIO consumer
3748 * @flags: optional GPIO initialization flags
3749 *
3750 * This is equivalent to gpiod_get(), except that when no GPIO was assigned to
3751 * the requested function it will return NULL. This is convenient for drivers
3752 * that need to handle optional GPIOs.
3753 */
3754struct gpio_desc *__must_check gpiod_get_optional(struct device *dev,
3755                                                  const char *con_id,
3756                                                  enum gpiod_flags flags)
3757{
3758        return gpiod_get_index_optional(dev, con_id, 0, flags);
3759}
3760EXPORT_SYMBOL_GPL(gpiod_get_optional);
3761
3762
3763/**
3764 * gpiod_configure_flags - helper function to configure a given GPIO
3765 * @desc:       gpio whose value will be assigned
3766 * @con_id:     function within the GPIO consumer
3767 * @lflags:     bitmask of gpio_lookup_flags GPIO_* values - returned from
3768 *              of_find_gpio() or of_get_gpio_hog()
3769 * @dflags:     gpiod_flags - optional GPIO initialization flags
3770 *
3771 * Return 0 on success, -ENOENT if no GPIO has been assigned to the
3772 * requested function and/or index, or another IS_ERR() code if an error
3773 * occurred while trying to acquire the GPIO.
3774 */
3775int gpiod_configure_flags(struct gpio_desc *desc, const char *con_id,
3776                unsigned long lflags, enum gpiod_flags dflags)
3777{
3778        int ret;
3779
3780        if (lflags & GPIO_ACTIVE_LOW)
3781                set_bit(FLAG_ACTIVE_LOW, &desc->flags);
3782
3783        if (lflags & GPIO_OPEN_DRAIN)
3784                set_bit(FLAG_OPEN_DRAIN, &desc->flags);
3785        else if (dflags & GPIOD_FLAGS_BIT_OPEN_DRAIN) {
3786                /*
3787                 * This enforces open drain mode from the consumer side.
3788                 * This is necessary for some busses like I2C, but the lookup
3789                 * should *REALLY* have specified them as open drain in the
3790                 * first place, so print a little warning here.
3791                 */
3792                set_bit(FLAG_OPEN_DRAIN, &desc->flags);
3793                gpiod_warn(desc,
3794                           "enforced open drain please flag it properly in DT/ACPI DSDT/board file\n");
3795        }
3796
3797        if (lflags & GPIO_OPEN_SOURCE)
3798                set_bit(FLAG_OPEN_SOURCE, &desc->flags);
3799
3800        if ((lflags & GPIO_PULL_UP) && (lflags & GPIO_PULL_DOWN)) {
3801                gpiod_err(desc,
3802                          "both pull-up and pull-down enabled, invalid configuration\n");
3803                return -EINVAL;
3804        }
3805
3806        if (lflags & GPIO_PULL_UP)
3807                set_bit(FLAG_PULL_UP, &desc->flags);
3808        else if (lflags & GPIO_PULL_DOWN)
3809                set_bit(FLAG_PULL_DOWN, &desc->flags);
3810
3811        ret = gpiod_set_transitory(desc, (lflags & GPIO_TRANSITORY));
3812        if (ret < 0)
3813                return ret;
3814
3815        /* No particular flag request, return here... */
3816        if (!(dflags & GPIOD_FLAGS_BIT_DIR_SET)) {
3817                gpiod_dbg(desc, "no flags found for %s\n", con_id);
3818                return 0;
3819        }
3820
3821        /* Process flags */
3822        if (dflags & GPIOD_FLAGS_BIT_DIR_OUT)
3823                ret = gpiod_direction_output(desc,
3824                                !!(dflags & GPIOD_FLAGS_BIT_DIR_VAL));
3825        else
3826                ret = gpiod_direction_input(desc);
3827
3828        return ret;
3829}
3830
3831/**
3832 * gpiod_get_index - obtain a GPIO from a multi-index GPIO function
3833 * @dev:        GPIO consumer, can be NULL for system-global GPIOs
3834 * @con_id:     function within the GPIO consumer
3835 * @idx:        index of the GPIO to obtain in the consumer
3836 * @flags:      optional GPIO initialization flags
3837 *
3838 * This variant of gpiod_get() allows to access GPIOs other than the first
3839 * defined one for functions that define several GPIOs.
3840 *
3841 * Return a valid GPIO descriptor, -ENOENT if no GPIO has been assigned to the
3842 * requested function and/or index, or another IS_ERR() code if an error
3843 * occurred while trying to acquire the GPIO.
3844 */
3845struct gpio_desc *__must_check gpiod_get_index(struct device *dev,
3846                                               const char *con_id,
3847                                               unsigned int idx,
3848                                               enum gpiod_flags flags)
3849{
3850        unsigned long lookupflags = GPIO_LOOKUP_FLAGS_DEFAULT;
3851        struct gpio_desc *desc = NULL;
3852        int ret;
3853        /* Maybe we have a device name, maybe not */
3854        const char *devname = dev ? dev_name(dev) : "?";
3855        const struct fwnode_handle *fwnode = dev ? dev_fwnode(dev) : NULL;
3856
3857        dev_dbg(dev, "GPIO lookup for consumer %s\n", con_id);
3858
3859        /* Using device tree? */
3860        if (is_of_node(fwnode)) {
3861                dev_dbg(dev, "using device tree for GPIO lookup\n");
3862                desc = of_find_gpio(dev, con_id, idx, &lookupflags);
3863        } else if (is_acpi_node(fwnode)) {
3864                dev_dbg(dev, "using ACPI for GPIO lookup\n");
3865                desc = acpi_find_gpio(dev, con_id, idx, &flags, &lookupflags);
3866        }
3867
3868        /*
3869         * Either we are not using DT or ACPI, or their lookup did not return
3870         * a result. In that case, use platform lookup as a fallback.
3871         */
3872        if (!desc || gpiod_not_found(desc)) {
3873                dev_dbg(dev, "using lookup tables for GPIO lookup\n");
3874                desc = gpiod_find(dev, con_id, idx, &lookupflags);
3875        }
3876
3877        if (IS_ERR(desc)) {
3878                dev_dbg(dev, "No GPIO consumer %s found\n", con_id);
3879                return desc;
3880        }
3881
3882        /*
3883         * If a connection label was passed use that, else attempt to use
3884         * the device name as label
3885         */
3886        ret = gpiod_request(desc, con_id ? con_id : devname);
3887        if (ret) {
3888                if (ret == -EBUSY && flags & GPIOD_FLAGS_BIT_NONEXCLUSIVE) {
3889                        /*
3890                         * This happens when there are several consumers for
3891                         * the same GPIO line: we just return here without
3892                         * further initialization. It is a bit if a hack.
3893                         * This is necessary to support fixed regulators.
3894                         *
3895                         * FIXME: Make this more sane and safe.
3896                         */
3897                        dev_info(dev, "nonexclusive access to GPIO for %s\n",
3898                                 con_id ? con_id : devname);
3899                        return desc;
3900                } else {
3901                        return ERR_PTR(ret);
3902                }
3903        }
3904
3905        ret = gpiod_configure_flags(desc, con_id, lookupflags, flags);
3906        if (ret < 0) {
3907                dev_dbg(dev, "setup of GPIO %s failed\n", con_id);
3908                gpiod_put(desc);
3909                return ERR_PTR(ret);
3910        }
3911
3912        blocking_notifier_call_chain(&desc->gdev->notifier,
3913                                     GPIOLINE_CHANGED_REQUESTED, desc);
3914
3915        return desc;
3916}
3917EXPORT_SYMBOL_GPL(gpiod_get_index);
3918
3919/**
3920 * fwnode_get_named_gpiod - obtain a GPIO from firmware node
3921 * @fwnode:     handle of the firmware node
3922 * @propname:   name of the firmware property representing the GPIO
3923 * @index:      index of the GPIO to obtain for the consumer
3924 * @dflags:     GPIO initialization flags
3925 * @label:      label to attach to the requested GPIO
3926 *
3927 * This function can be used for drivers that get their configuration
3928 * from opaque firmware.
3929 *
3930 * The function properly finds the corresponding GPIO using whatever is the
3931 * underlying firmware interface and then makes sure that the GPIO
3932 * descriptor is requested before it is returned to the caller.
3933 *
3934 * Returns:
3935 * On successful request the GPIO pin is configured in accordance with
3936 * provided @dflags.
3937 *
3938 * In case of error an ERR_PTR() is returned.
3939 */
3940struct gpio_desc *fwnode_get_named_gpiod(struct fwnode_handle *fwnode,
3941                                         const char *propname, int index,
3942                                         enum gpiod_flags dflags,
3943                                         const char *label)
3944{
3945        unsigned long lflags = GPIO_LOOKUP_FLAGS_DEFAULT;
3946        struct gpio_desc *desc = ERR_PTR(-ENODEV);
3947        int ret;
3948
3949        if (is_of_node(fwnode)) {
3950                desc = gpiod_get_from_of_node(to_of_node(fwnode),
3951                                              propname, index,
3952                                              dflags,
3953                                              label);
3954                return desc;
3955        } else if (is_acpi_node(fwnode)) {
3956                struct acpi_gpio_info info;
3957
3958                desc = acpi_node_get_gpiod(fwnode, propname, index, &info);
3959                if (IS_ERR(desc))
3960                        return desc;
3961
3962                acpi_gpio_update_gpiod_flags(&dflags, &info);
3963                acpi_gpio_update_gpiod_lookup_flags(&lflags, &info);
3964        } else
3965                return ERR_PTR(-EINVAL);
3966
3967        /* Currently only ACPI takes this path */
3968        ret = gpiod_request(desc, label);
3969        if (ret)
3970                return ERR_PTR(ret);
3971
3972        ret = gpiod_configure_flags(desc, propname, lflags, dflags);
3973        if (ret < 0) {
3974                gpiod_put(desc);
3975                return ERR_PTR(ret);
3976        }
3977
3978        blocking_notifier_call_chain(&desc->gdev->notifier,
3979                                     GPIOLINE_CHANGED_REQUESTED, desc);
3980
3981        return desc;
3982}
3983EXPORT_SYMBOL_GPL(fwnode_get_named_gpiod);
3984
3985/**
3986 * gpiod_get_index_optional - obtain an optional GPIO from a multi-index GPIO
3987 *                            function
3988 * @dev: GPIO consumer, can be NULL for system-global GPIOs
3989 * @con_id: function within the GPIO consumer
3990 * @index: index of the GPIO to obtain in the consumer
3991 * @flags: optional GPIO initialization flags
3992 *
3993 * This is equivalent to gpiod_get_index(), except that when no GPIO with the
3994 * specified index was assigned to the requested function it will return NULL.
3995 * This is convenient for drivers that need to handle optional GPIOs.
3996 */
3997struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev,
3998                                                        const char *con_id,
3999                                                        unsigned int index,
4000                                                        enum gpiod_flags flags)
4001{
4002        struct gpio_desc *desc;
4003
4004        desc = gpiod_get_index(dev, con_id, index, flags);
4005        if (gpiod_not_found(desc))
4006                return NULL;
4007
4008        return desc;
4009}
4010EXPORT_SYMBOL_GPL(gpiod_get_index_optional);
4011
4012/**
4013 * gpiod_hog - Hog the specified GPIO desc given the provided flags
4014 * @desc:       gpio whose value will be assigned
4015 * @name:       gpio line name
4016 * @lflags:     bitmask of gpio_lookup_flags GPIO_* values - returned from
4017 *              of_find_gpio() or of_get_gpio_hog()
4018 * @dflags:     gpiod_flags - optional GPIO initialization flags
4019 */
4020int gpiod_hog(struct gpio_desc *desc, const char *name,
4021              unsigned long lflags, enum gpiod_flags dflags)
4022{
4023        struct gpio_chip *gc;
4024        struct gpio_desc *local_desc;
4025        int hwnum;
4026        int ret;
4027
4028        gc = gpiod_to_chip(desc);
4029        hwnum = gpio_chip_hwgpio(desc);
4030
4031        local_desc = gpiochip_request_own_desc(gc, hwnum, name,
4032                                               lflags, dflags);
4033        if (IS_ERR(local_desc)) {
4034                ret = PTR_ERR(local_desc);
4035                pr_err("requesting hog GPIO %s (chip %s, offset %d) failed, %d\n",
4036                       name, gc->label, hwnum, ret);
4037                return ret;
4038        }
4039
4040        /* Mark GPIO as hogged so it can be identified and removed later */
4041        set_bit(FLAG_IS_HOGGED, &desc->flags);
4042
4043        gpiod_info(desc, "hogged as %s%s\n",
4044                (dflags & GPIOD_FLAGS_BIT_DIR_OUT) ? "output" : "input",
4045                (dflags & GPIOD_FLAGS_BIT_DIR_OUT) ?
4046                  (dflags & GPIOD_FLAGS_BIT_DIR_VAL) ? "/high" : "/low" : "");
4047
4048        return 0;
4049}
4050
4051/**
4052 * gpiochip_free_hogs - Scan gpio-controller chip and release GPIO hog
4053 * @gc: gpio chip to act on
4054 */
4055static void gpiochip_free_hogs(struct gpio_chip *gc)
4056{
4057        int id;
4058
4059        for (id = 0; id < gc->ngpio; id++) {
4060                if (test_bit(FLAG_IS_HOGGED, &gc->gpiodev->descs[id].flags))
4061                        gpiochip_free_own_desc(&gc->gpiodev->descs[id]);
4062        }
4063}
4064
4065/**
4066 * gpiod_get_array - obtain multiple GPIOs from a multi-index GPIO function
4067 * @dev:        GPIO consumer, can be NULL for system-global GPIOs
4068 * @con_id:     function within the GPIO consumer
4069 * @flags:      optional GPIO initialization flags
4070 *
4071 * This function acquires all the GPIOs defined under a given function.
4072 *
4073 * Return a struct gpio_descs containing an array of descriptors, -ENOENT if
4074 * no GPIO has been assigned to the requested function, or another IS_ERR()
4075 * code if an error occurred while trying to acquire the GPIOs.
4076 */
4077struct gpio_descs *__must_check gpiod_get_array(struct device *dev,
4078                                                const char *con_id,
4079                                                enum gpiod_flags flags)
4080{
4081        struct gpio_desc *desc;
4082        struct gpio_descs *descs;
4083        struct gpio_array *array_info = NULL;
4084        struct gpio_chip *gc;
4085        int count, bitmap_size;
4086
4087        count = gpiod_count(dev, con_id);
4088        if (count < 0)
4089                return ERR_PTR(count);
4090
4091        descs = kzalloc(struct_size(descs, desc, count), GFP_KERNEL);
4092        if (!descs)
4093                return ERR_PTR(-ENOMEM);
4094
4095        for (descs->ndescs = 0; descs->ndescs < count; ) {
4096                desc = gpiod_get_index(dev, con_id, descs->ndescs, flags);
4097                if (IS_ERR(desc)) {
4098                        gpiod_put_array(descs);
4099                        return ERR_CAST(desc);
4100                }
4101
4102                descs->desc[descs->ndescs] = desc;
4103
4104                gc = gpiod_to_chip(desc);
4105                /*
4106                 * If pin hardware number of array member 0 is also 0, select
4107                 * its chip as a candidate for fast bitmap processing path.
4108                 */
4109                if (descs->ndescs == 0 && gpio_chip_hwgpio(desc) == 0) {
4110                        struct gpio_descs *array;
4111
4112                        bitmap_size = BITS_TO_LONGS(gc->ngpio > count ?
4113                                                    gc->ngpio : count);
4114
4115                        array = kzalloc(struct_size(descs, desc, count) +
4116                                        struct_size(array_info, invert_mask,
4117                                        3 * bitmap_size), GFP_KERNEL);
4118                        if (!array) {
4119                                gpiod_put_array(descs);
4120                                return ERR_PTR(-ENOMEM);
4121                        }
4122
4123                        memcpy(array, descs,
4124                               struct_size(descs, desc, descs->ndescs + 1));
4125                        kfree(descs);
4126
4127                        descs = array;
4128                        array_info = (void *)(descs->desc + count);
4129                        array_info->get_mask = array_info->invert_mask +
4130                                                  bitmap_size;
4131                        array_info->set_mask = array_info->get_mask +
4132                                                  bitmap_size;
4133
4134                        array_info->desc = descs->desc;
4135                        array_info->size = count;
4136                        array_info->chip = gc;
4137                        bitmap_set(array_info->get_mask, descs->ndescs,
4138                                   count - descs->ndescs);
4139                        bitmap_set(array_info->set_mask, descs->ndescs,
4140                                   count - descs->ndescs);
4141                        descs->info = array_info;
4142                }
4143                /* Unmark array members which don't belong to the 'fast' chip */
4144                if (array_info && array_info->chip != gc) {
4145                        __clear_bit(descs->ndescs, array_info->get_mask);
4146                        __clear_bit(descs->ndescs, array_info->set_mask);
4147                }
4148                /*
4149                 * Detect array members which belong to the 'fast' chip
4150                 * but their pins are not in hardware order.
4151                 */
4152                else if (array_info &&
4153                           gpio_chip_hwgpio(desc) != descs->ndescs) {
4154                        /*
4155                         * Don't use fast path if all array members processed so
4156                         * far belong to the same chip as this one but its pin
4157                         * hardware number is different from its array index.
4158                         */
4159                        if (bitmap_full(array_info->get_mask, descs->ndescs)) {
4160                                array_info = NULL;
4161                        } else {
4162                                __clear_bit(descs->ndescs,
4163                                            array_info->get_mask);
4164                                __clear_bit(descs->ndescs,
4165                                            array_info->set_mask);
4166                        }
4167                } else if (array_info) {
4168                        /* Exclude open drain or open source from fast output */
4169                        if (gpiochip_line_is_open_drain(gc, descs->ndescs) ||
4170                            gpiochip_line_is_open_source(gc, descs->ndescs))
4171                                __clear_bit(descs->ndescs,
4172                                            array_info->set_mask);
4173                        /* Identify 'fast' pins which require invertion */
4174                        if (gpiod_is_active_low(desc))
4175                                __set_bit(descs->ndescs,
4176                                          array_info->invert_mask);
4177                }
4178
4179                descs->ndescs++;
4180        }
4181        if (array_info)
4182                dev_dbg(dev,
4183                        "GPIO array info: chip=%s, size=%d, get_mask=%lx, set_mask=%lx, invert_mask=%lx\n",
4184                        array_info->chip->label, array_info->size,
4185                        *array_info->get_mask, *array_info->set_mask,
4186                        *array_info->invert_mask);
4187        return descs;
4188}
4189EXPORT_SYMBOL_GPL(gpiod_get_array);
4190
4191/**
4192 * gpiod_get_array_optional - obtain multiple GPIOs from a multi-index GPIO
4193 *                            function
4194 * @dev:        GPIO consumer, can be NULL for system-global GPIOs
4195 * @con_id:     function within the GPIO consumer
4196 * @flags:      optional GPIO initialization flags
4197 *
4198 * This is equivalent to gpiod_get_array(), except that when no GPIO was
4199 * assigned to the requested function it will return NULL.
4200 */
4201struct gpio_descs *__must_check gpiod_get_array_optional(struct device *dev,
4202                                                        const char *con_id,
4203                                                        enum gpiod_flags flags)
4204{
4205        struct gpio_descs *descs;
4206
4207        descs = gpiod_get_array(dev, con_id, flags);
4208        if (gpiod_not_found(descs))
4209                return NULL;
4210
4211        return descs;
4212}
4213EXPORT_SYMBOL_GPL(gpiod_get_array_optional);
4214
4215/**
4216 * gpiod_put - dispose of a GPIO descriptor
4217 * @desc:       GPIO descriptor to dispose of
4218 *
4219 * No descriptor can be used after gpiod_put() has been called on it.
4220 */
4221void gpiod_put(struct gpio_desc *desc)
4222{
4223        if (desc)
4224                gpiod_free(desc);
4225}
4226EXPORT_SYMBOL_GPL(gpiod_put);
4227
4228/**
4229 * gpiod_put_array - dispose of multiple GPIO descriptors
4230 * @descs:      struct gpio_descs containing an array of descriptors
4231 */
4232void gpiod_put_array(struct gpio_descs *descs)
4233{
4234        unsigned int i;
4235
4236        for (i = 0; i < descs->ndescs; i++)
4237                gpiod_put(descs->desc[i]);
4238
4239        kfree(descs);
4240}
4241EXPORT_SYMBOL_GPL(gpiod_put_array);
4242
4243
4244static int gpio_bus_match(struct device *dev, struct device_driver *drv)
4245{
4246        struct fwnode_handle *fwnode = dev_fwnode(dev);
4247
4248        /*
4249         * Only match if the fwnode doesn't already have a proper struct device
4250         * created for it.
4251         */
4252        if (fwnode && fwnode->dev != dev)
4253                return 0;
4254        return 1;
4255}
4256
4257static int gpio_stub_drv_probe(struct device *dev)
4258{
4259        /*
4260         * The DT node of some GPIO chips have a "compatible" property, but
4261         * never have a struct device added and probed by a driver to register
4262         * the GPIO chip with gpiolib. In such cases, fw_devlink=on will cause
4263         * the consumers of the GPIO chip to get probe deferred forever because
4264         * they will be waiting for a device associated with the GPIO chip
4265         * firmware node to get added and bound to a driver.
4266         *
4267         * To allow these consumers to probe, we associate the struct
4268         * gpio_device of the GPIO chip with the firmware node and then simply
4269         * bind it to this stub driver.
4270         */
4271        return 0;
4272}
4273
4274static struct device_driver gpio_stub_drv = {
4275        .name = "gpio_stub_drv",
4276        .bus = &gpio_bus_type,
4277        .probe = gpio_stub_drv_probe,
4278};
4279
4280static int __init gpiolib_dev_init(void)
4281{
4282        int ret;
4283
4284        /* Register GPIO sysfs bus */
4285        ret = bus_register(&gpio_bus_type);
4286        if (ret < 0) {
4287                pr_err("gpiolib: could not register GPIO bus type\n");
4288                return ret;
4289        }
4290
4291        ret = driver_register(&gpio_stub_drv);
4292        if (ret < 0) {
4293                pr_err("gpiolib: could not register GPIO stub driver\n");
4294                bus_unregister(&gpio_bus_type);
4295                return ret;
4296        }
4297
4298        ret = alloc_chrdev_region(&gpio_devt, 0, GPIO_DEV_MAX, GPIOCHIP_NAME);
4299        if (ret < 0) {
4300                pr_err("gpiolib: failed to allocate char dev region\n");
4301                driver_unregister(&gpio_stub_drv);
4302                bus_unregister(&gpio_bus_type);
4303                return ret;
4304        }
4305
4306        gpiolib_initialized = true;
4307        gpiochip_setup_devs();
4308
4309#if IS_ENABLED(CONFIG_OF_DYNAMIC) && IS_ENABLED(CONFIG_OF_GPIO)
4310        WARN_ON(of_reconfig_notifier_register(&gpio_of_notifier));
4311#endif /* CONFIG_OF_DYNAMIC && CONFIG_OF_GPIO */
4312
4313        return ret;
4314}
4315core_initcall(gpiolib_dev_init);
4316
4317#ifdef CONFIG_DEBUG_FS
4318
4319static void gpiolib_dbg_show(struct seq_file *s, struct gpio_device *gdev)
4320{
4321        unsigned                i;
4322        struct gpio_chip        *gc = gdev->chip;
4323        unsigned                gpio = gdev->base;
4324        struct gpio_desc        *gdesc = &gdev->descs[0];
4325        bool                    is_out;
4326        bool                    is_irq;
4327        bool                    active_low;
4328
4329        for (i = 0; i < gdev->ngpio; i++, gpio++, gdesc++) {
4330                if (!test_bit(FLAG_REQUESTED, &gdesc->flags)) {
4331                        if (gdesc->name) {
4332                                seq_printf(s, " gpio-%-3d (%-20.20s)\n",
4333                                           gpio, gdesc->name);
4334                        }
4335                        continue;
4336                }
4337
4338                gpiod_get_direction(gdesc);
4339                is_out = test_bit(FLAG_IS_OUT, &gdesc->flags);
4340                is_irq = test_bit(FLAG_USED_AS_IRQ, &gdesc->flags);
4341                active_low = test_bit(FLAG_ACTIVE_LOW, &gdesc->flags);
4342                seq_printf(s, " gpio-%-3d (%-20.20s|%-20.20s) %s %s %s%s",
4343                        gpio, gdesc->name ? gdesc->name : "", gdesc->label,
4344                        is_out ? "out" : "in ",
4345                        gc->get ? (gc->get(gc, i) ? "hi" : "lo") : "?  ",
4346                        is_irq ? "IRQ " : "",
4347                        active_low ? "ACTIVE LOW" : "");
4348                seq_printf(s, "\n");
4349        }
4350}
4351
4352static void *gpiolib_seq_start(struct seq_file *s, loff_t *pos)
4353{
4354        unsigned long flags;
4355        struct gpio_device *gdev = NULL;
4356        loff_t index = *pos;
4357
4358        s->private = "";
4359
4360        spin_lock_irqsave(&gpio_lock, flags);
4361        list_for_each_entry(gdev, &gpio_devices, list)
4362                if (index-- == 0) {
4363                        spin_unlock_irqrestore(&gpio_lock, flags);
4364                        return gdev;
4365                }
4366        spin_unlock_irqrestore(&gpio_lock, flags);
4367
4368        return NULL;
4369}
4370
4371static void *gpiolib_seq_next(struct seq_file *s, void *v, loff_t *pos)
4372{
4373        unsigned long flags;
4374        struct gpio_device *gdev = v;
4375        void *ret = NULL;
4376
4377        spin_lock_irqsave(&gpio_lock, flags);
4378        if (list_is_last(&gdev->list, &gpio_devices))
4379                ret = NULL;
4380        else
4381                ret = list_entry(gdev->list.next, struct gpio_device, list);
4382        spin_unlock_irqrestore(&gpio_lock, flags);
4383
4384        s->private = "\n";
4385        ++*pos;
4386
4387        return ret;
4388}
4389
4390static void gpiolib_seq_stop(struct seq_file *s, void *v)
4391{
4392}
4393
4394static int gpiolib_seq_show(struct seq_file *s, void *v)
4395{
4396        struct gpio_device *gdev = v;
4397        struct gpio_chip *gc = gdev->chip;
4398        struct device *parent;
4399
4400        if (!gc) {
4401                seq_printf(s, "%s%s: (dangling chip)", (char *)s->private,
4402                           dev_name(&gdev->dev));
4403                return 0;
4404        }
4405
4406        seq_printf(s, "%s%s: GPIOs %d-%d", (char *)s->private,
4407                   dev_name(&gdev->dev),
4408                   gdev->base, gdev->base + gdev->ngpio - 1);
4409        parent = gc->parent;
4410        if (parent)
4411                seq_printf(s, ", parent: %s/%s",
4412                           parent->bus ? parent->bus->name : "no-bus",
4413                           dev_name(parent));
4414        if (gc->label)
4415                seq_printf(s, ", %s", gc->label);
4416        if (gc->can_sleep)
4417                seq_printf(s, ", can sleep");
4418        seq_printf(s, ":\n");
4419
4420        if (gc->dbg_show)
4421                gc->dbg_show(s, gc);
4422        else
4423                gpiolib_dbg_show(s, gdev);
4424
4425        return 0;
4426}
4427
4428static const struct seq_operations gpiolib_sops = {
4429        .start = gpiolib_seq_start,
4430        .next = gpiolib_seq_next,
4431        .stop = gpiolib_seq_stop,
4432        .show = gpiolib_seq_show,
4433};
4434DEFINE_SEQ_ATTRIBUTE(gpiolib);
4435
4436static int __init gpiolib_debugfs_init(void)
4437{
4438        /* /sys/kernel/debug/gpio */
4439        debugfs_create_file("gpio", 0444, NULL, NULL, &gpiolib_fops);
4440        return 0;
4441}
4442subsys_initcall(gpiolib_debugfs_init);
4443
4444#endif  /* DEBUG_FS */
4445