Skip to content
This is the bulk of the GPIO changes for the v5.2 kernel cycle:

Core changes:
- The gpiolib MMIO driver has been enhanced to handle two direction
  registers, i.e. one register to set lines as input and one register
  to set lines as output. It turns out some silicon engineer thinks
  the ability to configure a line as input and output at the same
  time makes sense, this can be debated but includes a lot of analog
  electronics reasoning, and the registers are there and need to
  be handled consistently. Unsurprisingly, we enforce the lines to
  be either inputs or outputs in such schemes.
- Send in the proper argument value to .set_config() dispatched to
  the pin control subsystem. Nobody used it before, now someone
  does, so fix it to work as expected.
- The ACPI gpiolib portions can now handle pin bias setting (pull up
  or pull down). This has been in the ACPI spec for years and we
  finally have it properly integrated with Linux GPIOs. It was based
  on an observation from Andy Schevchenko that Thomas Petazzoni's
  changes to the core for biasing the PCA950x GPIO expander actually
  happen to fit hand-in-glove with what the ACPI core needed.
  Such nice synergies happen sometimes.

New drivers:
- A new driver for the Mellanox BlueField GPIO controller. This is
  using 64bit MMIO registers and can configure lines as inputs
  and outputs at the same time and after improving the MMIO library
  we handle it just fine. Interesting.
- A new IXP4xx proper gpiochip driver with hierarchical interrupts
  should be coming in from the ARM SoC tree as well.

Driver enhancements:
- The PCA053x driver handles the CAT9554 GPIO expander.
- The PCA053x driver handles the NXP PCAL6416 GPIO expander.
- Wake-up support on PCA053x GPIO lines.
- OMAP now does a nice asynchronous IRQ handling on wake-ups by
  letting everything wake up on edges, and this makes runtime PM
  work as expected too.

Misc:
- Several cleanups such as devres fixes.
- Get rid of some languager comstructs that cause problems when
  compiling with LLVMs clang.
- Documentation review and update.