• Linus Torvalds's avatar
    Merge tag 'gpio-v4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio · 1a46712a
    Linus Torvalds authored
    Pull GPIO updates from Linus Walleij:
     "This is the bulk of GPIO changes for kernel v4.6.  There is quite a
      lot of interesting stuff going on.
    
      The patches to other subsystems and arch-wide are ACKed as far as
      possible, though I consider things like per-arch <asm/gpio.h> as
      essentially a part of the GPIO subsystem so it should not be needed.
    
      Core changes:
    
       - The gpio_chip is now a *real device*.  Until now the gpio chips
         were just piggybacking the parent device or (gasp) floating in
         space outside of the device model.
    
         We now finally make GPIO chips devices.  The gpio_chip will create
         a gpio_device which contains a struct device, and this gpio_device
         struct is kept private.  Anything that needs to be kept private
         from the rest of the kernel will gradually be moved over to the
         gpio_device.
    
       - As a result of making the gpio_device a real device, we have added
         resource management, so devm_gpiochip_add_data() will cut down on
         overhead and reduce code lines.  A huge slew of patches convert
         almost all drivers in the subsystem to use this.
    
       - Building on making the GPIO a real device, we add the first step of
         a new userspace ABI: the GPIO character device.  We take small
         steps here, so we first add a pure *information* ABI and the tool
         "lsgpio" that will list all GPIO devices on the system and all
         lines on these devices.
    
         We can now discover GPIOs properly from userspace.  We still have
         not come up with a way to actually *use* GPIOs from userspace.
    
       - To encourage people to use the character device for the future, we
         have it always-enabled when using GPIO.  The old sysfs ABI is still
         opt-in (and can be used in parallel), but is marked as deprecated.
    
         We will keep it around for the foreseeable future, but it will not
         be extended to cover ever more use cases.
    
      Cleanup:
    
       - Bjorn Helgaas removed a whole slew of per-architecture <asm/gpio.h>
         includes.
    
         This dates back to when GPIO was an opt-in feature and no shared
         library even existed: just a header file with proper prototypes was
         provided and all semantics were up to the arch to implement.  These
         patches make the GPIO chip even more a proper device and cleans out
         leftovers of the old in-kernel API here and there.
    
         Still some cruft is left but it's very little now.
    
       - There is still some clamping of return values for .get() going on,
         but we now return sane values in the vast majority of drivers and
         the errorpath is sanitized.  Some patches for powerpc, blackfin and
         unicore still drop in.
    
       - We continue to switch the ARM, MIPS, blackfin, m68k local GPIO
         implementations to use gpiochip_add_data() and cut down on code
         lines.
    
       - MPC8xxx is converted to use the generic GPIO helpers.
    
       - ATH79 is converted to use the generic GPIO helpers.
    
      New drivers:
    
       - WinSystems WS16C48
    
       - Acces 104-DIO-48E
    
       - F81866 (a F7188x variant)
    
       - Qoric (a MPC8xxx variant)
    
       - TS-4800
    
       - SPI serializers (pisosr): simple 74xx shift registers connected to
         SPI to obtain a dirt-cheap output-only GPIO expander.
    
       - Texas Instruments TPIC2810
    
       - Texas Instruments TPS65218
    
       - Texas Instruments TPS65912
    
       - X-Gene (ARM64) standby GPIO controller"
    
    * tag 'gpio-v4.6-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (194 commits)
      Revert "Share upstreaming patches"
      gpio: mcp23s08: Fix clearing of interrupt.
      gpiolib: Fix comment referring to gpio_*() in gpiod_*()
      gpio: pca953x: Fix pca953x_gpio_set_multiple() on 64-bit
      gpio: xgene: Fix kconfig for standby GIPO contoller
      gpio: Add generic serializer DT binding
      gpio: uapi: use 0xB4 as ioctl() major
      gpio: tps65912: fix bad merge
      Revert "gpio: lp3943: Drop pin_used and lp3943_gpio_request/lp3943_gpio_free"
      gpio: omap: drop dev field from gpio_bank structure
      gpio: mpc8xxx: Slightly update the code for better readability
      gpio: mpc8xxx: Remove *read_reg and *write_reg from struct mpc8xxx_gpio_chip
      gpio: mpc8xxx: Fixup setting gpio direction output
      gpio: mcp23s08: Add support for mcp23s18
      dt-bindings: gpio: altera: Fix altr,interrupt-type property
      gpio: add driver for MEN 16Z127 GPIO controller
      gpio: lp3943: Drop pin_used and lp3943_gpio_request/lp3943_gpio_free
      gpio: timberdale: Switch to devm_ioremap_resource()
      gpio: ts4800: Add IMX51 dependency
      gpiolib: rewrite gpiodev_add_to_list
      ...
    1a46712a
MAINTAINERS 340 KB