• Linus Torvalds's avatar
    Merge tag 'gpio-v3.16-1' of... · 80fb9747
    Linus Torvalds authored
    Merge tag 'gpio-v3.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio into next
    
    Pull GPIO updates from Linus Walleij:
     "This is the bulk of GPIO changes for the v3.16 series.
    
      There is a lot of action in the GPIO subsystem doing refactorings and
      cleanups, almost as many deletions as insertions and minor feature
      growth and no new drivers this time.  Which is actually pretty nice.
      Some GPIO-related stuff will come in through the pin control tree as
      well.
    
      Details:
    
       - We are finalizing and fixing up the gpiochip irqchip helpers
         bringing a helpful irqchip implementation into the gpiolib core and
         avoiding duplicate code and, more importantly, duplicate bug fixes:
    
         * Support for using the helpers with threaded interrupt handlers as
           used on sleeping GPIO-irqchips
    
         * Do not set up hardware triggers for edges or levels if the
           default IRQ type is IRQ_TYPE_NONE - some drivers would exploit
           the fact that you could get default initialization of the IRQ
           type from the core at probe() but if no default type is set up
           from the helper, we should not call the driver to configure
           anything.  Wait until a consumer requests the interrupt instead.
    
         * Make the irqchip helpers put the GPIO irqs into their own lock
           class.  The GPIO irqchips can often emit (harmless, but annoying)
           lockdep warnings about recursions when they are in fact just
           cascaded IRQs.  By putting them into their own lock class we help
           the lockdep core to keep track of things.
    
         * Switch the tc3589x GPIO expanders to use the irqchip helpers
    
         * Switch the OMAP GPIO driver to use the irqchip helpers
    
         * Add some documentation for the irqchip helpers
    
         * select IRQ_DOMAIN when using the helpers since some platforms may
           not be using this by default and it's a strict dependency.
    
       - Continued GPIO descriptor refactoring:
    
         * Remove the one instance of gpio_to_desc() from the device tree
           code, making the OF GPIO code use GPIO descriptors only.
    
         * Introduce gpiod_get_optional() and gpiod_get_optional_index()
           akin to the similar regulator functions for cases where the use
           of GPIO is optional and not strictly required.
    
         * Make of_get_named_gpiod_flags() private - we do not want to
           unnecessarily expose APIs to drivers that make the gpiolib harder
           than necessary to maintain and refactor.  Privatize this
           function.
    
       - Support "-gpio" suffix for the OF GPIO retrieveal path.  We used to
         look for "foo-gpios" or just "gpios" in device tree nodes, but it
         turns out that some drivers with a single GPIO line will just state
         "foo-gpio" (singularis).  Sigh.  Support this with a fallback
         looking for it, as this simplifies driver code and handles it in
         core code.
    
       - Switch the ACPI GPIO core to fetch GPIOs with the *_cansleep
         function variants as the GPIO operation region handler can sleep,
         and shall be able to handle gpiochips that sleep.
    
       - Tons of cleanups and janitorial work from Jingoo Han, Axel Lin,
         Javier Martinez Canillas and Abdoulaye Berthe.  Notably Jingoo cut
         off a ton of pointless OOM messages.
    
       - Incremental development and fixes for various drivers, nothing
         really special here"
    
    * tag 'gpio-v3.16-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (85 commits)
      gpio: select IRQ_DOMAIN for gpiolib irqchip helpers
      gpio: pca953x: use gpiolib irqchip helpers
      gpio: pcf857x: Add IRQF_SHARED when request irq
      gpio: pcf857x: Avoid calling irq_domain_cleanup twice
      gpio: mcp23s08: switch chip count to int
      gpio: dwapb: use a second irq chip
      gpio: ep93xx: Use devm_ioremap_resource()
      gpio: mcp23s08: fixed count variable for devicetree probing
      gpio: Add run-time dependencies to R-Car driver
      gpio: pch: add slab include
      Documentation / ACPI: Fix location of GPIO documentation
      gpio / ACPI: use *_cansleep version of gpiod_get/set APIs
      gpio: generic: add request function pointer
      gpio-pch: Fix Kconfig dependencies
      gpio: make of_get_named_gpiod_flags() private
      gpio: gpioep93xx: use devm functions
      gpio: janzttl: use devm function
      gpio: timberdale: use devm functions
      gpio: bt8xx: use devm function for memory allocation
      gpio: include linux/bug.h in interface header
      ...
    80fb9747
gpio-mcp23s08.c 24.3 KB