linux/drivers/gpio
Linus Walleij ff2b135922 gpio: make the gpiochip a real device
GPIO chips have been around for years, but were never real devices,
instead they were piggy-backing on a parent device (such as a
platform_device or amba_device) but this was always optional.
GPIO chips could also exist without any device at all, with its
struct device *parent (ex *dev) pointer being set to null.

When sysfs was in use, a mock device would be created, with the
optional parent assigned, or just floating orphaned with NULL
as parent.

If sysfs is active, it will use this device as parent.

We now create a gpio_device struct containing a real
struct device and move the subsystem over to using that. The
list of struct gpio_chip:s is augmented to hold struct
gpio_device:s and we find gpio_chips:s by first looking up
the struct gpio_device.

The struct gpio_device is designed to stay around even if the
gpio_chip is removed, so as to satisfy users in userspace
that need a backing data structure to hold the state of the
session initiated with e.g. a character device even if there is
no physical chip anymore.

From this point on, gpiochips are devices.

Cc: Johan Hovold <johan@kernel.org>
Cc: Michael Welling <mwelling@ieee.org>
Cc: Markus Pargmann <mpa@pengutronix.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2016-02-09 11:03:53 +01:00
..
devres.c gpio: make flags mandatory for gpiod_get functions 2015-07-06 10:39:24 +02:00
gpio-74x164.c gpio: 74x164: use gpiochip data pointer 2016-01-05 11:21:01 +01:00
gpio-74xx-mmio.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-104-idi-48.c gpio: 104-idi-48: use gpiochip data pointer 2016-01-05 11:21:01 +01:00
gpio-104-idio-16.c gpio: 104-idio-16: use gpiochip data pointer 2016-01-05 11:21:01 +01:00
gpio-adnp.c gpio: adnp: use gpiochip data pointer 2016-01-05 11:21:01 +01:00
gpio-adp5520.c gpio: adp5520: use gpiochip data pointer 2016-01-05 11:21:02 +01:00
gpio-adp5588.c gpio: adp5588: use gpiochip data pointer 2016-01-05 11:21:02 +01:00
gpio-altera.c gpio: altera: use gpiochip data pointer 2016-01-05 11:21:02 +01:00
gpio-amd8111.c gpio: amd8111: use gpiochip data pointer 2016-01-05 11:21:02 +01:00
gpio-amdpt.c gpio: amdpt: use gpiochip data pointer 2016-01-05 11:21:02 +01:00
gpio-arizona.c GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
gpio-ath79.c gpio: ath79: use gpiochip data pointer 2016-01-05 11:21:03 +01:00
gpio-bcm-kona.c gpio: bcm-kona: use gpiochip data pointer 2016-01-05 11:21:03 +01:00
gpio-brcmstb.c gpio: brcmstb: Set endian flags for big-endian MIPS 2016-01-07 16:25:09 +01:00
gpio-bt8xx.c gpio: bt8xx: use gpiochip data pointer 2016-01-05 11:21:03 +01:00
gpio-clps711x.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-crystalcove.c gpio: crystalcove: use gpiochip data pointer 2016-01-05 11:21:04 +01:00
gpio-cs5535.c gpio: cs5535: use gpiochip data pointer 2016-01-05 11:21:04 +01:00
gpio-da9052.c gpio: da9052: use gpiochip data pointer 2016-01-05 11:21:04 +01:00
gpio-da9055.c gpio: da9055: use gpiochip data pointer 2016-01-05 11:21:04 +01:00
gpio-davinci.c gpio: davinci: use gpiochip data pointer 2016-01-05 11:21:04 +01:00
gpio-dln2.c gpio: dln2: use gpiochip data pointer 2016-01-05 11:21:05 +01:00
gpio-dwapb.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-em.c gpio: em: use gpiochip data pointer 2016-01-05 11:21:05 +01:00
gpio-ep93xx.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-etraxfs.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-f7188x.c gpio: f7188: use gpiochip data pointer 2016-01-05 11:21:05 +01:00
gpio-ge.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-generic.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-grgpio.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-ich.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-intel-mid.c gpio: intel-mid: use gpiochip data pointer 2016-01-05 11:21:05 +01:00
gpio-iop.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-it87.c gpio: it87: use gpiochip data pointer 2016-01-05 11:21:06 +01:00
gpio-janz-ttl.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-kempld.c gpio: kempld: use gpiochip data pointer 2016-01-05 11:21:06 +01:00
gpio-ks8695.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-loongson.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-lp3943.c gpio: lp3943: use gpiochip data pointer 2016-01-05 11:21:06 +01:00
gpio-lpc18xx.c gpio: lpc18xx: use gpiochip data pointer 2016-01-05 11:21:06 +01:00
gpio-lpc32xx.c gpio: lpc32xx: use gpiochip data pointer 2016-01-05 11:21:06 +01:00
gpio-lynxpoint.c gpio: lynxpoint: use gpiochip data pointer 2016-01-05 11:21:07 +01:00
gpio-max730x.c gpio: max730x: use gpiochip data pointer 2016-01-05 11:21:07 +01:00
gpio-max732x.c gpio: max732x: use gpiochip data pointer 2016-01-05 11:21:07 +01:00
gpio-max7300.c gpio: Drop owner assignment from i2c_driver 2015-11-30 09:31:00 +01:00
gpio-max7301.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
gpio-mb86s7x.c gpio: mb86s7x: use gpiochip data pointer 2016-01-05 11:21:07 +01:00
gpio-mc9s08dz60.c gpio: mc9s08dz60: use gpiochip data pointer 2016-01-05 11:21:08 +01:00
gpio-mc33880.c gpio: mc33880: use gpiochip data pointer 2016-01-05 11:21:07 +01:00
gpio-mcp23s08.c gpio: mcp: use gpiochip data pointer 2016-01-05 11:21:08 +01:00
gpio-ml-ioh.c gpio: ml-ioh: use gpiochip data pointer 2016-01-05 11:21:08 +01:00
gpio-mm-lantiq.c gpio: mm-lantiq: Do not use gpiochip_get_data() in ltq_mm_save_regs() 2016-01-13 10:21:06 +01:00
gpio-moxart.c gpio: moxart: fix build regression 2016-01-07 16:16:38 +01:00
gpio-mpc8xxx.c gpio: mpc8xxx: Do not use gpiochip_get_data() in mpc8xxx_gpio_save_regs() 2016-01-13 10:22:23 +01:00
gpio-mpc5200.c gpio: mpc5200: use gpiochip data pointer 2016-01-05 11:21:08 +01:00
gpio-msic.c gpio: msic: use gpiochip data pointer 2016-01-05 11:21:09 +01:00
gpio-mvebu.c gpio: mvebu: use gpiochip data pointer 2016-01-05 11:21:09 +01:00
gpio-mxc.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-mxs.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-octeon.c gpio: octeon: use gpiochip data pointer 2016-01-05 11:21:10 +01:00
gpio-omap.c gpio: omap: use gpiochip data pointer 2016-01-05 11:21:10 +01:00
gpio-palmas.c gpio: palmas: use gpiochip data pointer 2016-01-05 11:21:10 +01:00
gpio-pca953x.c gpio: pca953x: use gpiochip data pointer 2016-01-05 11:21:11 +01:00
gpio-pcf857x.c gpio: pcf857x: use gpiochip data pointer 2016-01-05 11:21:11 +01:00
gpio-pch.c gpio: pch: Optimize pch_gpio_get() 2016-01-05 15:46:34 +01:00
gpio-pl061.c gpio: pl061: use gpiochip data pointer 2016-01-05 11:21:11 +01:00
gpio-pxa.c gpio: pxa: use gpiochip data pointer 2016-01-05 11:21:12 +01:00
gpio-rc5t583.c gpio: rc5t583: use gpiochip data pointer 2016-01-05 11:21:12 +01:00
gpio-rcar.c gpio: rcar: use gpiochip data pointer 2016-01-05 11:21:12 +01:00
gpio-rdc321x.c gpio: rdc321x: use gpiochip data pointer 2016-01-05 11:21:12 +01:00
gpio-sa1100.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-sch311x.c gpio: sch311x: use gpiochip data pointer 2016-01-05 11:21:13 +01:00
gpio-sch.c gpio: sch: use gpiochip data pointer 2016-01-05 11:21:13 +01:00
gpio-sodaville.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-spear-spics.c gpio: spear-spics: use gpiochip data pointer 2016-01-05 11:21:13 +01:00
gpio-sta2x11.c gpio: sta2x11: use gpiochip data pointer 2016-01-05 11:21:13 +01:00
gpio-stmpe.c gpio: stmpe: use gpiochip data pointer 2016-01-05 11:21:14 +01:00
gpio-stp-xway.c gpio: stp-xway: use gpiochip data pointer 2016-01-05 11:21:14 +01:00
gpio-sx150x.c gpio: sx150x: use gpiochip data pointer 2016-01-05 11:21:14 +01:00
gpio-syscon.c gpio: syscon: use gpiochip data pointer 2016-01-05 11:21:14 +01:00
gpio-tb10x.c gpio: tb10x: use gpiochip data pointer 2016-01-05 11:21:15 +01:00
gpio-tc3589x.c gpio: tc3589x: use gpiochip data pointer 2016-01-05 11:21:15 +01:00
gpio-tegra.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-timberdale.c gpio: timberdale: use gpiochip data pointer 2016-01-05 11:21:15 +01:00
gpio-tps6586x.c gpio: tps6586x: use gpiochip data pointer 2016-01-05 11:21:15 +01:00
gpio-tps65910.c gpio: tps65910: use gpiochip data pointer 2016-01-05 11:21:15 +01:00
gpio-tps65912.c gpio: tps65912: use gpiochip data pointer 2016-01-05 11:21:16 +01:00
gpio-ts5500.c gpio: ts5500: use gpiochip data pointer 2016-01-05 11:21:16 +01:00
gpio-twl4030.c gpio: twl4030: use gpiochip data pointer 2016-01-05 11:21:16 +01:00
gpio-twl6040.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-tz1090-pdc.c gpio: tz1090-pdc: use gpiochip data pointer 2016-01-05 11:21:16 +01:00
gpio-tz1090.c gpio: tz1090: use gpiochip data pointer 2016-01-05 11:21:16 +01:00
gpio-ucb1400.c gpio: ucb1400: use gpiochip data pointer 2016-01-05 11:21:17 +01:00
gpio-vf610.c gpio: vf610: use gpiochip data pointer 2016-01-05 11:21:17 +01:00
gpio-viperboard.c gpio: viperboard: use gpiochip data pointer 2016-01-05 11:21:17 +01:00
gpio-vr41xx.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-vx855.c gpio: vx855: use gpiochip data pointer 2016-01-05 11:21:18 +01:00
gpio-wm831x.c gpio: wm831x: use gpiochip data pointer 2016-01-05 11:21:18 +01:00
gpio-wm8350.c gpio: wm8350: use gpiochip data pointer 2016-01-05 11:21:18 +01:00
gpio-wm8994.c gpio: wm8994: use gpiochip data pointer 2016-01-05 11:21:18 +01:00
gpio-xgene-sb.c gpio: generic: factor into gpio_chip struct 2016-01-05 11:21:00 +01:00
gpio-xgene.c gpio: xgene: use gpiochip data pointer 2016-01-05 11:21:19 +01:00
gpio-xilinx.c gpio: xilinx: Do not use gpiochip_get_data() in xgpio_save_regs() 2016-01-07 10:06:56 +01:00
gpio-xlp.c gpio: xlp: use gpiochip data pointer 2016-01-05 11:21:19 +01:00
gpio-xtensa.c gpio: convert remaining users to gpiochip_add_data() 2016-01-05 11:21:20 +01:00
gpio-zevio.c gpio: zevio: use gpiochip data pointer 2016-01-05 11:21:19 +01:00
gpio-zx.c gpio: zx: use gpiochip data pointer 2016-01-05 11:21:19 +01:00
gpio-zynq.c gpio: zynq: use gpiochip data pointer 2016-01-05 11:21:20 +01:00
gpiolib-acpi.c GPIO bulk updates for the v4.5 kernel cycle: 2016-01-17 12:32:01 -08:00
gpiolib-legacy.c gpiolib: Split GPIO flags parsing and GPIO configuration 2015-10-16 22:46:46 +02:00
gpiolib-of.c gpio: of: provide optional of_mm_gpiochip_add_data() function 2016-01-05 11:20:12 +01:00
gpiolib-sysfs.c gpio: make the gpiochip a real device 2016-02-09 11:03:53 +01:00
gpiolib.c gpio: make the gpiochip a real device 2016-02-09 11:03:53 +01:00
gpiolib.h gpio: make the gpiochip a real device 2016-02-09 11:03:53 +01:00
Kconfig ARM: SoC multiplatform code changes for v4.5 2016-01-20 18:03:56 -08:00
Makefile ARM: SoC multiplatform code changes for v4.5 2016-01-20 18:03:56 -08:00