linux/drivers/gpio
Linus Walleij 521a2ad6f8 gpio: add userspace ABI for GPIO line information
This adds a GPIO line ABI for getting name, label and a few select
flags from the kernel.

This hides the kernel internals and only tells userspace what it
may need to know: the different in-kernel consumers are masked
behind the flag "kernel" and that is all userspace needs to know.

However electric characteristics like active low, open drain etc
are reflected to userspace, as this is important information.

We provide information on all lines on all chips, later on we will
likely add a flag for the chardev consumer so we can filter and
display only the lines userspace actually uses in e.g. lsgpio,
but then we first need an ABI for userspace to grab and use
(get/set/select direction) a GPIO line.

Sample output from "lsgpio" on ux500:

GPIO chip: gpiochip7, "8011e000.gpio", 32 GPIO lines
        line 0: unnamed unlabeled
        line 1: unnamed unlabeled
(...)
        line 25: unnamed "SFH7741 Proximity Sensor" [kernel output open-drain]
        line 26: unnamed unlabeled
(...)

Tested-by: Michael Welling <mwelling@ieee.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2016-02-19 09:48:46 +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-dio-48e.c gpio: 104-dio-48e: Use devm_request_region 2016-02-16 00:19:51 +01:00
gpio-104-idi-48.c gpio: 104-idi-48: Use devm_request_region 2016-02-16 00:19:51 +01:00
gpio-104-idio-16.c gpio: 104-idio-16: Use devm_request_region 2016-02-16 00:19:52 +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 devm_request_region 2016-02-16 00:19:52 +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: Update the copyright notice 2016-02-10 11:38:21 +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: Fix possible NULL pointer deference 2016-02-16 00:20: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-f7188x: Add F81866 GPIO supports 2016-01-28 10:06:12 +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: ich: Use devm_request_region 2016-02-16 00:19:53 +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: ks8695: remove irq_to_gpio function 2016-02-19 00:20:30 +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-mcp23s08: correctly handling failed allocation 2016-02-16 16:36:22 +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 drivers/gpio: Switch gpio-mpc8xxx to use gpio-generic 2016-02-08 18:32:58 +01:00
gpio-mpc5200.c gpio: Include linux/gpio.h instead of asm/gpio.h 2016-02-16 00:20:03 +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-pisosr.c gpio: Add driver for SPI serializers 2016-02-10 15:15:51 +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 devm_request_region 2016-02-16 00:19:53 +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-tpic2810.c gpio: tpic2810: Make tpic2810_direction_output set proper output level 2016-02-16 15:56:51 +01:00
gpio-tps6586x.c gpio: tps6586x: use gpiochip data pointer 2016-01-05 11:21:15 +01:00
gpio-tps65218.c gpio: tps65218: remove unused #include 2016-02-19 09:22:41 +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-ts4800.c gpio: TS-4800: remove useless bgpio_init flags 2016-02-16 00:20:03 +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-ws16c48.c gpio: ws16c48: Use devm_request_region 2016-02-16 00:19:54 +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: move the pin ranges into gpio_device 2016-02-16 00:20:02 +01: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: reflect base and ngpio into gpio_device 2016-02-11 20:29:46 +01:00
gpiolib.c gpio: add userspace ABI for GPIO line information 2016-02-19 09:48:46 +01:00
gpiolib.h gpio: store reflect the label to userspace 2016-02-19 09:48:41 +01:00
Kconfig gpio: add tps65218 gpio 2016-02-11 12:25:16 +01:00
Makefile gpio: add tps65218 gpio 2016-02-11 12:25:16 +01:00