Skip to content
This is the bulk of GPIO changes for the v4.3 kernel cycle:

Core changes:

- Root out the wrapper devm_gpiod_get() and gpiod_get() etc
  versions of the descriptor calls that did not use the flags
  argument on the end. This was around for too long and eventually
  Uwe Kleine-König took the time to clean it out and the last
  users are removed along with the macros in this tag. In several
  cases the use of flags simplifies the code. For this reason we
  have (ACKed) patches hitting in DRM, IIO, media, NFC, USB+PHY
  up until we hammer in the nail with removing the macros.

- Add a fat document describing how much ready-made GPIO stuff
  we have i the kernel to discourage people from reinventing
  a square wheel in userspace, as so often happens.

- Create a separate lockdep class for each instance of a GPIO
  IRQ chip instead of using one class for all chips, as the current
  code will not work with systems with several GPIO chips doing
  lockdep debugging.

- Protect against driver unloading also when a GPIO line is only
  used as IRQ for the GPIOLIB_IRQCHIP helpers.

- If the GPIO chip has no designated owner, assign the parent
  device driver owner as owner.

- Consolidation of chained IRQ handler install/remove replacing
  all call sites where irq_set_handler_data() and
  irq_set_chained_handler() were done in succession with a
  combined call to irq_set_chained_handler_and_data(). This
  series was created by Thomas Gleixner after the problem was
  observed by Russell King.

- Tglx also made another series of patches switching
  __irq_set_handler_locked() for irq_set_handler_locked() which
  is way cleaner.

- Tglx and Jiang Liu wrote a good bunch of patches to make use of
  irq_desc_get_xxx() accessors and avoid looking up irq_descs
  from IRQ numbers. The goal is to get rid of the irq number
  from the handlers in the IRQ flow which is nice.

- Rob Herring killed off the set_irq_flags() for all GPIO
  drivers. This was an ARM specific function that is replaced
  with the generic irq_modify_status() where special flags
  are actually needed.

- When an OF node has a pin range for its GPIOs, return
  -EPROBE_DEFER if the pin controller isn't available.
  Pretty logical, yet needed to be fixed.

- If a driver using GPIOLIB_IRQCHIP has its own
  irq_*_resources call back, then call these instead of the
  defaults provided by the GPIOLIB.

- Fix an undocumented ABI hole: named GPIOs were not
  properly documented.

Driver improvements:

- Add get_direction() support to the generic GPIO driver, it's
  strange that we didn't have that before.

- Make it possible to have input-only GPIO chips using the
  generic GPIO driver.

- Clean out platform data support from the Emma Mobile (EM)
  driver

- Finegrained runtime PM support for the RCAR driver.

- Support r8a7795 (R-car H3) in the RCAR driver.

- Support interrupts on GPIOs 16 thru 31 in the DaVinci driver.

- Some consolidation and new support in the MPC8xxx driver,
  we now support MPC5125.

- Preempt-RT-friendly patches: the OMAP, MPC8xxx, drivers uses raw
  spinlocks making it work better with the realime patches.

- Interrupt support for the EXTRAXFS GPIO driver.

- Make the ETRAXFS GPIO driver support also ARTPEC-3.

- Interrupt and wakeup support for the BRCMSTB driver, also for
  wakeup from S5 cold boot.

- Mask MXC IRQs during suspend.

- Improve OMAP2 GPIO set_debounce() to work according to spec.

- The VF610 driver handles IRQs properly.

New drivers:

- ZTE ZX GPIO driver.