This is the bulk of GPIO changes for kernel cycle v4.7:

Core infrastructural changes:

- Support for natively single-ended GPIO driver stages. This
  means that if the hardware has registers to configure open
  drain or open source configuration, we use that rather than
  (as we did before) try to emulate it by switching the line
  to an input to get high impedance. This is also documented
  throughly in Documentation/gpio/driver.txt for those of you
  who did not understand one word of what I just wrote.

- Start to do away with the unnecessarily complex and
  unitelligible ARCH_REQUIRE_GPIOLIB and
  ARCH_WANT_OPTIONAL_GPIOLIB, another evolutional artifact from
  the time when the GPIO subsystem was unmaintained. Archs can
  now just select GPIOLIB and be done with it, cleanups to
  arches will trickle in for the next kernel. Some minor archs
  ACKed the changes immediately so these are included in this
  pull request.

- Advancing the use of the data pointer inside the GPIO device
  for storing driver data by switching the PowerPC, Super-H
  Unicore and a few other subarches or subsystem drivers in
  ALSA SoC, Input, serial, SSB, staging etc to use it.

- The initialization now reads the input/output state of the
  GPIO lines, so that each GPIO descriptor knows - if this
  callback is implemented - whether the line is input or
  output. This also reflects nicely in userspace "lsgpio".

- It is now possible to name GPIO producer names, line names,
  from the device tree. (Platform data has been supported for
  a while.) I bet we will get a similar mechanism for ACPI
  one of those days. This makes is possible to get sensible
  producer names for e.g. GPIO rails in "lsgpio" in userspace.

New drivers:

- New driver for the Loongson1.

- The XLP driver now supports Broadcom Vulcan ARM64.

- The IT87 driver now supports IT8620 and IT8628.

- The PCA953X driver now supports Galileo Gen2.

Driver improvements:

- MCP23S08 was switched to use the gpiolib irqchip helpers and
  now also suppors level-triggered interrupts.

- 74x164 and RCAR now supports the .set_multiple() callback

- AMDPT was converted to use generic GPIO.

- TC3589x, TPS65218, SX150X, F7188X, MENZ127, VX855, WM831X, WM8994
  support the new single ended callback for open drain
  and in some cases open source.

- Implement the .get_direction() callback for a few more drivers
  like PL061, Xgene.


- Paul Gortmaker combed through the drivers and de-modularized
  those who are not really modules.

- Move the GPIO poweroff DT bindings to the power subdir where
  they belong.

- Rename gpio-generic.c to gpio-mmio.c, which is much more to the
  point. That's what it is handling, nothing more, nothing less.
Version: GnuPG v1


This replaces:

- "select ARCH_REQUIRE_GPIOLIB" with "select GPIOLIB" as this can
  now be selected directly.

- "select ARCH_WANT_OPTIONAL_GPIOLIB" with no dependency: GPIOLIB
  is now selectable by everyone, so we need not declare our
  intent to select it.

When ordering the symbols the following rationale was used:
if the selects were in alphabetical order, I moved select GPIOLIB
to be in alphabetical order, but if the selects were not
maintained in alphabetical order, I just replaced
"select ARCH_REQUIRE_GPIOLIB" with "select GPIOLIB".

Cc: Michael B├╝sch <>
Acked-by: Ralf Baechle <>
Signed-off-by: Linus Walleij <>
3 files changed