[GIT PULL] bulk GPIO changes for the v4.3 kernel cycle

From: Linus Walleij
Date: Wed Sep 02 2015 - 17:56:56 EST

Hi Linus,

there is quite a lot going on in the GPIO subsystem this merge
window, so the main matter is decribed in the signed tag.

The hits in other subsystems when making the GPIO flags
optional are all ACKed by their respective subsystem

The development cycle was a bit rough, I had to merge in
-rc4 to get rid of some conflicts and revert a patch that was
messing up a later patch. Watch out if you get merge
conflicts (tested on your HEAD earlier and it worked fine,
but you never know).

Please pull this in!

Linus Walleij

The following changes since commit cbfe8fa6cd672011c755c3cd85c9ffd4e2d10a6f:

Linux 4.2-rc4 (2015-07-26 12:26:21 -0700)

are available in the git repository at:


for you to fetch changes up to 01e2dae991771adb1257eb5cd3cecfda1aa09ba9:

Revert "gpio: extraxfs: fix returnvar.cocci warnings" (2015-08-31
08:56:04 +0200)

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)

- 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.

Alexander Stein (1):
gpio: mpc8xxx: Convert mpc8xxx_gpio_chip.lock to raw_spinlock

Alexandre Courbot (1):
gpio/grgpio: fix deadlock in grgpio_irq_unmap()

Axel Lin (1):
gpio: omap: Fix missing raw locks conversion

Dirk Behme (2):
gpio: mxc: fix section mismatch warning
Documentation: gpio: consumer: describe active low property

Geert Uytterhoeven (2):
gpio: em: Remove obsolete platform data support
gpio: rcar: Fine-grained Runtime PM support

Gregory Fong (3):
dt-bindings: brcmstb-gpio: document properties for wakeup
gpio: brcmstb: Add interrupt and wakeup source support
gpio: brcmstb: support wakeup from S5 cold boot

Grygorii Strashko (10):
gpio: pcf857x: get rid of slock spinlock
gpiolib: irqchip: prevent driver unloading if gpio is used as irq only
gpiolib: assign chip owner to dev->driver->owner if not set
gpiolib: irqchip: use different lockdep class for each gpio irqchip
gpiolib: add description for gpio irqchip fields in struct gpio_chip
gpio: omap: remove wrong irq_domain_remove usage in probe
gpio: omap: switch to use platform_get_irq
gpio: omap: fix omap2_set_gpio_debounce
gpio: omap: protect regs access in omap_gpio_irq_handler
gpio: omap: fix clk_prepare/unprepare usage

Jiang Liu (2):
gpio/davinci: Use accessor function irq_data_get_irq_handler_data()
gpio: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc

Julia Lawall (2):
gpio: extraxfs: fix returnvar.cocci warnings
gpio: xlp: fix error return code

Jun Nie (2):
gpio: Document ZTE zx296702 GPIO DT binding
gpio: zx: Add ZTE zx296702 GPIO support

Krzysztof Kozlowski (1):
gpio: etraxfs: Fix devm_ioremap_resource return value check

Laurent Navet (1):
gpiolib: remove unneeded assignation

Linus Walleij (7):
Merge tag 'gpiod-flags-for-4.3' of
git://git.pengutronix.de/git/ukl/linux into devel
Merge branch 'queue/irq/gpio' of
git://git.kernel.org/.../tip/tip into devel
gpio: document interaction with other subsystems
gpio/ABI: document what is already the case
Merge tag 'v4.2-rc4' into devel
gpio: tc3589x: use static container helper
Revert "gpio: extraxfs: fix returnvar.cocci warnings"

Masahiro Yamada (7):
gpio: zynq: add missing module_exit function
gpio: altera: kill bogus dependency on GPIO_GENERIC
gpio: altera: fix return value of altera_gpio_remove()
gpio: altera: use of_mm_gpiochip_remove() to fix memory leak
gpio: mvebu: kill bogus dependency on GPIO_GENERIC
gpio: of: remove unnecessary variable in of_get_gpio_hog()
gpio: remove unneeded initializer in gpiochip_add_to_list()

Nicholas Krause (2):
gpio: 74xx: Fix build warning about void to integer cast
gpio: max732x: Fix error handling in probe()

Philipp Zabel (1):
gpio: generic: add get_direction support

Rabin Vincent (5):
gpio: etraxfs: fix set register flag
gpio: generic: support input-only chips
gpio: etraxfs: add support for ARTPEC-3
gpio: don't override irq_*_resources() callbacks
gpio: etraxfs: add interrupt support

Rob Herring (1):
gpio: kill off set_irq_flags usage

Sebastian Andrzej Siewior (1):
gpio: omap: use raw locks for locking

Stefan Agner (1):
gpio: vf610: handle level IRQ's properly

Thomas Gleixner (18):
gpio/mpc8xxx: Consolidate chained IRQ handler install/remove
gpio/mvebu: Consolidate chained IRQ handler install/remove
gpio/timberdale: Consolidate chained IRQ handler install/remove
gpio/tz1090: Consolidate chained IRQ handler install/remove
gpiolib: Consolidate chained IRQ handler install/remove
gpio/zynq: Use irq_set_chip_handler_name_locked()
gpio/ep93xx: Use irq_set_handler_locked()
gpio/msm-v2: Use irq_set_handler_locked()
gpio/omap: Use irq_set_handler_locked()
gpio/pch: Use irq_set_handler_locked()
gpio/gpio-tegra: Use irq_set_handler_locked()
gpio/davinci: Prepare gpio_irq_handler for irq argument removal
gpio/ep93xx: Prepare ep93xx_gpio_f_irq_handler for irq argument removal
gpio/mvebu: Prepare mvebu_gpio_irq_handler for irq argument removal
gpio/sa1100: Prepare sa1100_gpio_handler for irq argument removal
gpio/msm-v2: Avoid redundant lookup of irq_data
gpio/davinci: Avoid redundant lookup of irq_data
gpio/davinci: Fix race in installing chained irq handler

Tomeu Vizoso (2):
gpiolib: Fix docs for gpiochip_add_pingroup_range
gpio: defer probe if pinctrl cannot be found

Ulises Brindis (1):
gpio/mxc: mask gpio interrupts in suspend

Ulrich Hecht (1):
gpio: rcar: Add r8a7795 (R-Car H3) support

Uwe Kleine-KÃnig (14):
drm/msm/dp: use flags argument of devm_gpiod_get to set direction
drm/tilcdc: panel: make better use of gpiod API
iio: light: stk3310: use flags argument of devm_gpiod_get
iio: magn: bmc150: use flags argument of devm_gpiod_get
media: i2c/adp1653: set enable gpio to output
NFC: nxp-nci_i2c: use flags argument of devm_gpiod_get_index
phy: tusb1210: make better use of gpiod API
usb: dwc3: pci: make better use of gpiod API
usb: pass flags parameter to gpiod_get functions
gpio: make flags mandatory for gpiod_get functions
gpio: mpc8xxx: constify of_device_id
gpio: mpc8xxx: handle differences between incarnations at a single place
gpio: mpc8xxx: add support for MPC5125
dt-bindings: gpio: document bindings supported by gpio-mpc8xxx.c

Vitaly Andrianov (1):
gpio/davinci: add interrupt support for GPIOs 16-31

Documentation/ABI/testing/sysfs-gpio | 3 +-
.../devicetree/bindings/gpio/brcm,brcmstb-gpio.txt | 35 ++-
.../devicetree/bindings/gpio/gpio-etraxfs.txt | 3 +-
.../devicetree/bindings/gpio/gpio-mpc8xxx.txt | 22 ++
.../devicetree/bindings/gpio/renesas,gpio-rcar.txt | 1 +
.../devicetree/bindings/gpio/zx296702-gpio.txt | 24 ++
Documentation/gpio/00-INDEX | 3 +
Documentation/gpio/consumer.txt | 33 +++
Documentation/gpio/drivers-on-gpio.txt | 95 ++++++
Documentation/gpio/sysfs.txt | 9 +-
drivers/gpio/Kconfig | 10 +-
drivers/gpio/Makefile | 1 +
drivers/gpio/devres.c | 18 +-
drivers/gpio/gpio-74xx-mmio.c | 2 +-
drivers/gpio/gpio-adp5588.c | 10 +-
drivers/gpio/gpio-altera.c | 4 +-
drivers/gpio/gpio-bcm-kona.c | 17 +-
drivers/gpio/gpio-brcmstb.c | 306 ++++++++++++++++++-
drivers/gpio/gpio-davinci.c | 16 +-
drivers/gpio/gpio-dwapb.c | 2 +-
drivers/gpio/gpio-em.c | 35 +--
drivers/gpio/gpio-ep93xx.c | 8 +-
drivers/gpio/gpio-etraxfs.c | 329 ++++++++++++++++++++-
drivers/gpio/gpio-generic.c | 41 ++-
drivers/gpio/gpio-grgpio.c | 23 +-
drivers/gpio/gpio-max732x.c | 11 +-
drivers/gpio/gpio-mcp23s08.c | 4 -
drivers/gpio/gpio-mpc8xxx.c | 121 +++++---
drivers/gpio/gpio-msm-v2.c | 23 +-
drivers/gpio/gpio-mvebu.c | 8 +-
drivers/gpio/gpio-mxc.c | 9 +-
drivers/gpio/gpio-mxs.c | 2 +-
drivers/gpio/gpio-omap.c | 156 +++++-----
drivers/gpio/gpio-pcf857x.c | 14 +-
drivers/gpio/gpio-pch.c | 4 +-
drivers/gpio/gpio-pxa.c | 8 +-
drivers/gpio/gpio-rcar.c | 24 +-
drivers/gpio/gpio-sa1100.c | 6 +-
drivers/gpio/gpio-sta2x11.c | 2 +-
drivers/gpio/gpio-tc3589x.c | 10 +-
drivers/gpio/gpio-tegra.c | 9 +-
drivers/gpio/gpio-timberdale.c | 12 +-
drivers/gpio/gpio-tz1090.c | 4 +-
drivers/gpio/gpio-vf610.c | 11 +-
drivers/gpio/gpio-xlp.c | 2 +-
drivers/gpio/gpio-zx.c | 324 ++++++++++++++++++++
drivers/gpio/gpio-zynq.c | 12 +-
drivers/gpio/gpiolib-of.c | 34 ++-
drivers/gpio/gpiolib.c | 84 +++---
drivers/gpu/drm/msm/edp/edp_ctrl.c | 17 +-
drivers/gpu/drm/tilcdc/tilcdc_panel.c | 22 +-
drivers/iio/light/stk3310.c | 6 +-
drivers/iio/magnetometer/bmc150_magn.c | 6 +-
drivers/media/i2c/adp1653.c | 2 +-
drivers/nfc/nxp-nci/i2c.c | 10 +-
drivers/phy/phy-tusb1210.c | 30 +-
drivers/usb/dwc3/dwc3-pci.c | 26 +-
drivers/usb/gadget/udc/pxa27x_udc.c | 2 +-
drivers/usb/phy/phy-generic.c | 6 +-
include/linux/basic_mmio_gpio.h | 1 +
include/linux/gpio/consumer.h | 82 ++---
include/linux/gpio/driver.h | 37 ++-
include/linux/of_gpio.h | 4 +-
include/linux/platform_data/gpio-em.h | 11 -
64 files changed, 1683 insertions(+), 523 deletions(-)
create mode 100644 Documentation/devicetree/bindings/gpio/gpio-mpc8xxx.txt
create mode 100644 Documentation/devicetree/bindings/gpio/zx296702-gpio.txt
create mode 100644 Documentation/gpio/drivers-on-gpio.txt
create mode 100644 drivers/gpio/gpio-zx.c
delete mode 100644 include/linux/platform_data/gpio-em.h
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/