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

Core changes:

- The gpio_chip is now a *real device*. Until now the gpio chips
  were just piggybacking the parent device or (gasp) floating in
  space outside of the device model. We now finally make GPIO chips
  devices. The gpio_chip will create a gpio_device which contains
  a struct device, and this gpio_device struct is kept private.
  Anything that needs to be kept private from the rest of the kernel
  will gradually be moved over to the gpio_device.

- As a result of making the gpio_device a real device, we have added
  resource management, so devm_gpiochip_add_data() will cut down on
  overhead and reduce code lines. A huge slew of patches convert
  almost all drivers in the subsystem to use this.

- Building on making the GPIO a real device, we add the first step
  of a new userspace ABI: the GPIO character device. We take small
  steps here, so we first add a pure *information* ABI and the tool
  "lsgpio" that will list all GPIO devices on the system and all
  lines on these devices. We can now discover GPIOs properly from
  userspace. We still have not come up with a way to actually *use*
  GPIOs from userspace.

- To encourage people to use the character device for the future,
  we have it always-enabled when using GPIO. The old sysfs ABI is
  still opt-in (and can be used in parallel), but is marked as
  deprecated. We will keep it around for the foreseeable future,
  but it will not be extended to cover ever more use cases.

Cleanup:

- Bjorn Helgaas removed a whole slew of per-architecture <asm/gpio.h>
  includes. This dates back to when GPIO was an opt-in feature and
  no shared library even existed: just a header file with proper
  prototypes was provided and all semantics were up to the arch to
  implement. These patches make the GPIO chip even more a proper
  device and cleans out leftovers of the old in-kernel API here
  and there. Still some cruft is left but it's very little now.

- There is still some clamping of return values for .get() going
  on, but we now return sane values in the vast majority of drivers
  and the errorpath is sanitized. Some patches for powerpc, blackfin
  and unicore still drop in.

- We continue to switch the ARM, MIPS, blackfin, m68k local GPIO
  implementations to use gpiochip_add_data() and cut down on code
  lines.

- MPC8xxx is converted to use the generic GPIO helpers.

- ATH79 is converted to use the generic GPIO helpers.

New drivers:

- WinSystems WS16C48

- Acces 104-DIO-48E

- F81866 (a F7188x variant)

- Qoric (a MPC8xxx variant)

- TS-4800

- SPI serializers (pisosr): simple 74xx shift registers connected
  to SPI to obtain a dirt-cheap output-only GPIO expander.

- Texas Instruments TPIC2810

- Texas Instruments TPS65218

- Texas Instruments TPS65912

- X-Gene (ARM64) standby GPIO controller
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1

iQIcBAABAgAGBQJW6m24AAoJEEEQszewGV1zUasP/RpTrjRcNI5QFHjudd2oioDx
R/IljC06Q072ZqVy/MR7QxwhoU8jUnCgKgv4rgMa1OcfHblxC2R1+YBKOUSij831
E+SYmYDYmoMhN7j5Aslr66MXg1rLdFSdCZWemuyNruAK8bx6cTE1AWS8AELQzzTn
Re/CPpCDbujLy0ZK2wJHgr9ZkdcBGICtDRCrOR3Kyjpwk/DSZcruK1PDN+VQMI3k
bJlwgtGenOHINgCq/16edpwj/hzmoJXhTOZXJHI5XVR6czTwb3SvCYACvCkauI/a
/N7b3quG88b5y0OPQPVxp5+VVl9GyVcv5oGzIfTNat/g5QinShZIT4kVV9r0xu6/
TQHh1HlXleh+QI3yX0oRv9ztHreMf+vdpw1dhIwLqHqfJ7AWdOGk7BbKjwCrsOoq
t/qUVFnyvooLpyr53Z5JY8+LqyynHF68G+jUQyHLgTZ0GCE+z+1jqNl1T501n3kv
3CSlNYxSN/YUBN3cnroAIU/ZWcV4YRdxmOtEWP+7xgcdzTE6s/JHb2fuEfVHzWPf
mHWtJGy8U0IR4VSSEln5RtjhRr0PAjTHeTOGAmivUnaIGDziTowyUVF+X5hwC77E
DGTuLVx/Kniv173DK7xNAsUZNAETBa3fQZTgu+RfOpMiM1FZc7tI1rd7K7PjbyCc
d2M0gcq+d11ITJTxC7OM
=9AJ4
-----END PGP SIGNATURE-----
Revert "Share upstreaming patches"

This reverts commit a101ad945113be3d7f283a181810d76897f0a0d6.
1 file changed