This is the bulk of GPIO changes for the v4.20 series:

Core changes:

- A patch series from Hans Verkuil to make it possible to
  enable/disable IRQs on a GPIO line at runtime and drive GPIO
  lines as output without having to put/get them from scratch.
  The irqchip callbacks have been improved so that they can
  use only the fastpatch callbacks to enable/disable irqs
  like any normal irqchip, especially the gpiod_lock_as_irq()
  has been improved to be callable in fastpath context.
  A bunch of rework had to be done to achieve this but it is
  a big win since I never liked to restrict this to slowpath.
  The only call requireing slowpath was try_module_get() and
  this is kept at the .request_resources() slowpath callback.
  In the GPIO CEC driver this is a big win sine a single
  line is used for both outgoing and incoming traffic, and
  this needs to use IRQs for incoming traffic while actively
  driving the line for outgoing traffic.

- Janusz Krzysztofik improved the GPIO array API to pass a
  "cookie" (struct gpio_array) and a bitmap for setting or
  getting multiple GPIO lines at once. This improvement
  orginated in a specific need to speed up an OMAP1 driver and
  has led to a much better API and real performance gains
  when the state of the array can be used to bypass a lot
  of checks and code when we want things to go really fast.
  The previous code would minimize the number of calls
  down to the driver callbacks assuming the CPU speed was
  orders of magnitude faster than the I/O latency, but this
  assumption was wrong on several platforms: what we needed
  to do was to profile and improve the speed on the hot
  path of the array functions and this change is now
  completed.

- Clean out the painful and hard to grasp BNF experiments
  from the device tree bindings. Future approaches are looking
  into using JSON schema for this purpose. (Rob Herring
  is floating a patch series.)

New drivers:

- The RCAR driver now supports r8a774a1 (RZ/G2M).

- Synopsys GPIO via CREGs driver.

Major improvements:

- Modernization of the EP93xx driver to use irqdomain and
  other contemporary concepts.

- The ingenic driver has been merged into the Ingenic pin
  control driver and removed from the GPIO subsystem.

- Debounce support in the ftgpio010 driver.
-----BEGIN PGP SIGNATURE-----

iQIcBAABAgAGBQJbzdyOAAoJEEEQszewGV1zfYcP/0HBEAOPhHD/i5OQxfKs1msh
mFT/t/IbTmRpCgbEv4CDx4Kc/InE0sUnQr1TL/1WvU6uObM6Ncxq5Z90MvyrgzYu
BqQHq2k2tORvkVSNRxcfD/BAAoo1EerXts1kDhutvdKfepfS6DxpENwzvsFgkVlq
2jj1cdZztjv8A+9cspHDpQP+jDvl1VSc10nR5fRu1TttSpUwzRJaB30NBNXJmMJc
5KUr67lEbsQRPsBvFErU11bydPqhfT+pXmODcfIwS0EtATQ8WC5mkSb/Ooei0fvT
oZ7uR3Os8tMf7isOKssEyFabKwhnfOEt6TBt9em0TfUtInOo0Dc7r8TfBcn57fyZ
xg2R9DQEVRfac8bjhF/BI5KHuN9IMGDDvj6XApumQVliZbISRjMnh3jte6RpcV0A
Ejqz8FeDY13qvEdOnW1EPpwmXdDVWiEAq0ebGLStKNls+/4gB2HmyxGUOzJf+og5
hujsxcJzGQqjCe0moeY/1d7vsy0ZjbHoS+p5fy79U212y2O7onEzFU92AX89bxKC
rx2eCNmiZxCUy1nqu8edO62VnH6QdnqG3o+a4DJfCSHPvFM/E/NX9zHemZubQQ4I
rYXNy4bL4tEG9cqWMfBxWrpiDZw7H6l8kXwdZG8IMyRU9BcKu96amgZ+jBXwzoaB
JZelAAUWB9APghJYFr7o
=YosT
-----END PGP SIGNATURE-----
gpio: Clarify kerneldoc on gpiochip_set_chained_irqchip()

This doesn't support nested anymore, so drivers shouldn't call it with
the handler set to NULL.

Cc: Evan Green <evgreen@chromium.org>
Cc: Thierry Reding <treding@nvidia.com>
Cc: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
1 file changed