linux/drivers/gpio
Bartosz Golaszewski 07c61d4da4 gpiolib: notify user-space about in-kernel line state changes
We currently only notify user-space about line config changes that are
made from user-space. Any kernel config changes are not signalled.

Let's improve the situation by emitting the events closer to the source.
To that end let's call the relevant notifier chain from the functions
setting direction, gpiod_set_config(), gpiod_set_consumer_name() and
gpiod_toggle_active_low(). This covers all the options that we can
inform the user-space about. We ignore events which don't have
corresponding flags exported to user-space on purpose - otherwise the
user would see a config-changed event but the associated line-info would
remain unchanged.

gpiod_direction_output/input() can be called from any context.
Fortunately, we now emit line state events using an atomic notifier
chain, so it's no longer an issue.

Let's also add non-notifying wrappers around the direction setters in
order to not emit superfluous reconfigure events when requesting the
lines as the initial config should be part of the request notification.

Use gpio_do_set_config() instead of gpiod_set_debounce() for configuring
debouncing via hardware from the character device code to avoid multiple
reconfigure events.

Reviewed-by: Kent Gibson <warthog618@gmail.com>
Link: https://lore.kernel.org/r/20241018-gpio-notify-in-kernel-events-v5-8-c79135e58a1c@linaro.org
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
2024-10-22 08:59:09 +02:00
..
gpio-74x164.c gpio: 74x164: shrink code 2024-10-21 09:23:20 +02:00
gpio-74xx-mmio.c gpio: 74xx-mmio: remove unneeded platform_set_drvdata() call 2023-07-29 16:03:17 +02:00
gpio-104-dio-48e.c gpio: 104-dio-48e: Add Counter/Timer support 2023-07-27 09:37:33 +02:00
gpio-104-idi-48.c gpio: 104-idi-48: Enable use_raw_spinlock for idi48_regmap_config 2023-04-11 21:08:31 +02:00
gpio-104-idio-16.c gpio: 104-idio-16: Migrate to the regmap API 2023-08-11 14:23:29 +02:00
gpio-adnp.c gpio: Switch i2c drivers back to use .probe() 2023-05-23 10:09:11 +02:00
gpio-adp5520.c
gpio-adp5585.c gpio: adp5585: Add Analog Devices ADP5585 support 2024-08-01 14:09:28 +01:00
gpio-aggregator.c gpio: aggregator: simplify aggr_parse() with scoped bitmap 2024-10-02 16:32:46 +02:00
gpio-altera-a10sr.c gpio: altera-a10sr: remove redundant of_match_ptr 2023-08-03 15:58:45 +02:00
gpio-altera.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-amd8111.c gpio: amd8111: Convert PCIBIOS_* return codes to errnos 2024-05-30 11:20:53 +02:00
gpio-amd-fch.c
gpio-amdpt.c gpio: amdpt: remove remove() 2024-10-17 08:53:34 +02:00
gpio-arizona.c gpio: arizona: Remove unused header(s) 2022-10-19 17:03:55 +03:00
gpio-aspeed-sgpio.c gpio: aspeed-sgpio: Convert to immutable irq_chip 2023-03-10 16:17:20 +01:00
gpio-aspeed.c gpio: aspeed: Support G7 Aspeed gpio controller 2024-10-14 09:04:02 +02:00
gpio-ath79.c gpio: ath79: remove support for platform data 2024-09-02 09:45:18 +02:00
gpio-bcm-kona.c gpio: bcm-kona: Drop unused pdev member in private data structure 2023-07-19 13:26:22 +02:00
gpio-bd9571mwv.c
gpio-bd71815.c
gpio-bd71828.c
gpio-brcmstb.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-bt8xx.c
gpio-cadence.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-cgbc.c gpio: Congatec Board Controller gpio driver 2024-10-09 16:32:04 +01:00
gpio-clps711x.c gpio: clps711x: remove redundant of_match_ptr() 2023-08-03 15:58:46 +02:00
gpio-creg-snps.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-cros-ec.c gpio: cros-ec: provide ID table for avoiding fallback match 2024-04-02 10:58:21 +02:00
gpio-crystalcove.c gpio: crystalcove: Use -ENOTSUPP consistently 2024-04-05 20:12:39 +03:00
gpio-cs5535.c
gpio-da9052.c gpio: da9052: Remove unused header(s) 2022-10-19 17:03:55 +03:00
gpio-da9055.c
gpio-davinci.c gpio: davinci: use generic device properties 2024-10-14 10:28:40 +02:00
gpio-dln2.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-ds4520.c gpio: ds4520: Add ADI DS4520 GPIO Expander Support 2023-07-29 15:56:33 +02:00
gpio-dwapb.c gpio: dwapb: switch to device_for_each_child_node_scoped() 2024-10-01 20:53:48 +02:00
gpio-eic-sprd.c gpio: eic-sprd: use generic device_get_match_data() 2024-10-14 10:28:56 +02:00
gpio-elkhartlake.c gpio: elkhartlake: reuse pm_ops from Intel Tangier driver 2023-11-13 17:59:48 +02:00
gpio-em.c pinctrl: em: drop the wrapper around pinctrl_gpio_request() 2023-11-04 10:23:23 +01:00
gpio-en7523.c gpio: EN7523: fix kernel-doc warnings 2024-01-15 23:15:35 +01:00
gpio-ep93xx.c gpio: ep93xx: add DT support for gpio-ep93xx 2024-09-12 14:33:11 +00:00
gpio-exar.c gpio: exar: remove unneeded platform_set_drvdata() call 2023-07-29 16:04:38 +02:00
gpio-f7188x.c gpio-f7188x: fix base values conflicts with other gpio pins 2023-09-11 09:03:44 +02:00
gpio-ftgpio010.c gpio: ftgpio010: shrink code 2024-10-21 09:23:34 +02:00
gpio-fxl6408.c gpio: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-07-29 10:50:51 +02:00
gpio-ge.c gpio: ge: Replace GPLv2 boilerplate with SPDX 2023-07-27 09:33:07 +02:00
gpio-gpio-mm.c gpio: gpio-mm: Migrate to regmap API 2023-01-30 15:55:28 +01:00
gpio-graniterapids.c gpio: graniterapids: Add missing raw_spinlock_init() 2024-06-26 10:18:19 +02:00
gpio-grgpio.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-gw-pld.c gpio: add missing MODULE_DESCRIPTION() macros 2024-06-07 10:05:21 +02:00
gpio-hisi.c gpio: hisi: Fix format specifier 2023-10-13 08:39:30 +02:00
gpio-hlwd.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-htc-egpio.c
gpio-i8255.c gpio: i8255: Remove unused legacy interface 2023-01-30 15:55:28 +01:00
gpio-i8255.h gpio: i8255: Remove unused legacy interface 2023-01-30 15:55:28 +01:00
gpio-ich.c gpio: ich: Use devm_gpiochip_add_data() to simplify remove path 2023-03-09 16:08:39 +02:00
gpio-idio-16.c gpio: idio-16: Remove unused legacy interface 2023-08-11 14:23:32 +02:00
gpio-idio-16.h gpio: idio-16: Remove unused legacy interface 2023-08-11 14:23:32 +02:00
gpio-idt3243x.c gpio: idt3243x: Convert to immutable irq_chip 2023-03-10 16:17:30 +01:00
gpio-imx-scu.c gpio: imx-scu: Use ARRAY_SIZE for array length 2023-08-11 16:20:02 +02:00
gpio-it87.c
gpio-ixp4xx.c gpio: ixp4xx: Replace of_node_to_fwnode() with more suitable API 2024-09-02 12:27:36 +02:00
gpio-janz-ttl.c
gpio-kempld.c
gpio-latch.c gpio: Add gpio latch driver 2022-10-26 14:52:01 +02:00
gpio-ljca.c gpio: ljca: use devm_mutex_init() to simplify the error path and remove() 2024-10-14 10:30:36 +02:00
gpio-logicvc.c gpio: logicvc: remove unneeded platform_set_drvdata() call 2023-07-29 16:05:50 +02:00
gpio-loongson1.c gpio: loongson1: Add DT support 2023-03-23 14:31:18 +01:00
gpio-loongson-64bit.c gpio: loongson: add more gpio chip support 2023-09-27 09:06:50 +02:00
gpio-loongson.c
gpio-lp873x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_319.RULE 2022-06-10 14:51:36 +02:00
gpio-lp3943.c gpio: lp3943: remove unneeded platform_set_drvdata() call 2023-08-01 21:14:48 +02:00
gpio-lp87565.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_319.RULE 2022-06-10 14:51:36 +02:00
gpio-lpc18xx.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-lpc32xx.c gpio: lpc32xx: fix module autoloading 2024-04-12 21:30:58 +02:00
gpio-madera.c
gpio-max730x.c gpio: max730x: use devres to shrink and simplify code 2024-10-21 09:23:47 +02:00
gpio-max732x.c gpio: max732x: remove redundant CONFIG_OF and of_match_ptr() 2023-08-03 15:56:30 +02:00
gpio-max3191x.c gpio: max3191x: remove redundant of_match_ptr() 2023-08-03 15:58:50 +02:00
gpio-max7300.c gpio: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-07-29 10:50:51 +02:00
gpio-max7301.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
gpio-max77620.c gpio: max77620: remove unneeded platform_set_drvdata() call 2023-08-01 21:15:23 +02:00
gpio-max77650.c
gpio-mb86s7x.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-mc33880.c gpio updates for v6.11-rc1 2024-07-15 17:53:24 -07:00
gpio-menz127.c gpio: menz127: simplify error path and remove remove() 2024-10-17 08:53:49 +02:00
gpio-merrifield.c gpio: merrifield: Utilise temporary variable for struct device 2023-03-06 17:10:46 +02:00
gpio-ml-ioh.c gpio: ml-ioh: Convert to use managed functions pcim* and devm_* 2022-05-20 19:20:35 +02:00
gpio-mlxbf2.c gpio: mlxbf2: Convert to immutable irq_chip 2023-03-10 16:17:32 +01:00
gpio-mlxbf3.c gpio: mlxbf3: Support shutdown() function 2024-08-10 21:35:16 +02:00
gpio-mlxbf.c
gpio-mm-lantiq.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-mmio.c gpio: mmio: do not calculate bgpio_bits via "ngpios" 2024-07-03 15:27:59 +02:00
gpio-mockup.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
gpio-moxtet.c
gpio-mpc8xxx.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-mpc5200.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-mpsse.c gpio: add support for FTDI's MPSSE as GPIO 2024-10-14 09:07:32 +02:00
gpio-msc313.c gpio: msc313: Replace of_node_to_fwnode() with more suitable API 2024-09-02 12:27:36 +02:00
gpio-mt7621.c gpio updates for v6.1-rc1 2022-10-08 09:46:29 -07:00
gpio-mvebu.c gpio: mvebu: use generic device properties 2024-10-08 10:08:51 +02:00
gpio-mxc.c gpio: mxc: Use helper function devm_clk_get_optional_enabled() 2023-08-21 14:11:16 +02:00
gpio-mxs.c gpio: mxs: fix Wvoid-pointer-to-enum-cast warning 2023-08-11 16:21:46 +02:00
gpio-nomadik.c drivers/gpio/nomadik: move dummy nmk_gpio_dbg_show_one() to header 2024-03-12 12:53:35 +01:00
gpio-npcm-sgpio.c gpio: nuvoton: Fix sgpio irq handle error 2024-05-07 09:44:33 +02:00
gpio-octeon.c
gpio-omap.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-palmas.c gpio: palmas: remove unnecessary call to platform_set_drvdata() 2023-08-01 21:22:38 +02:00
gpio-pca953x.c gpio: pca953x: Print the error code on read/write failures 2024-08-21 14:28:55 +02:00
gpio-pca9570.c gpio: pca9570: fix kerneldoc 2023-08-21 10:39:58 +02:00
gpio-pcf857x.c gpio: add missing MODULE_DESCRIPTION() macros 2024-06-07 10:05:21 +02:00
gpio-pch.c gpio: pch: kerneldoc fixes for excess members 2024-09-02 14:35:32 +02:00
gpio-pci-idio-16.c gpio: pci-idio-16: Migrate to the regmap API 2023-08-11 14:23:31 +02:00
gpio-pcie-idio-24.c gpio: pcie-idio-24: Use -ENOTSUPP consistently 2024-04-12 21:36:18 +02:00
gpio-pisosr.c gpio: pisosr: Use devm_gpiochip_add_data() to simplify remove path 2023-07-20 17:22:10 +02:00
gpio-pl061.c gpio: add missing MODULE_DESCRIPTION() macros 2024-06-07 10:05:21 +02:00
gpio-pmic-eic-sprd.c gpio: pmic-eic-sprd: Configure the bit corresponding to the EIC through offset 2024-01-03 09:50:47 +01:00
gpio-pxa.c treewide: rename pinctrl_gpio_direction_output_new() 2023-11-04 10:23:22 +01:00
gpio-raspberrypi-exp.c gpio: raspberrypi-exp: remove redundant of_match_ptr() 2023-08-03 15:58:52 +02:00
gpio-rc5t583.c gpio: rc5t583: remove unneeded call to platform_set_drvdata() 2023-08-01 21:26:48 +02:00
gpio-rcar.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-rda.c gpio: rda: Convert to immutable irq_chip 2023-03-23 14:31:18 +01:00
gpio-rdc321x.c gpio: rdc321x: Convert PCIBIOS_* return codes to errnos 2024-05-30 11:21:05 +02:00
gpio-realtek-otto.c gpio: realtek-otto: switch to 32-bit I/O 2022-08-31 17:46:30 +02:00
gpio-reg.c gpio: reg: Add missing header(s) 2023-03-06 12:33:02 +02:00
gpio-regmap.c gpio: regmap: Use -ENOTSUPP consistently 2024-04-12 21:36:40 +02:00
gpio-rockchip.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-rtd.c gpio: rtd: Fix signedness bug in probe 2024-01-15 11:07:46 +01:00
gpio-sa1100.c gpio: sa1100: include <mach/generic.h> 2023-05-17 11:56:24 +02:00
gpio-sama5d2-piobu.c gpio: sama5d2-piobu: convert comma to semicolon 2024-09-05 09:34:51 +02:00
gpio-sch311x.c gpio: sch311x: Use devm_gpiochip_add_data() to simplify remove path 2023-05-17 11:52:14 +02:00
gpio-sch.c gpio: sch: Utilise temporary variable for struct device 2024-04-15 16:12:18 +03:00
gpio-sifive.c gpio: sifive: remove unneeded call to platform_set_drvdata() 2023-11-15 15:39:40 +01:00
gpio-sim.c gpio: sim: switch to device_for_each_child_node_scoped() 2024-10-01 20:53:48 +02:00
gpio-siox.c gpio: siox: Convert to immutable irq_chip 2023-03-23 14:31:18 +01:00
gpio-sl28cpld.c gpio: sl28cpld: Replace irqchip mask_invert with unmask_base 2022-11-15 15:41:45 +01:00
gpio-sloppy-logic-analyzer.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-sodaville.c
gpio-spear-spics.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_56.RULE (part 2) 2022-06-10 14:51:35 +02:00
gpio-sprd.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-stmpe.c gpio: stmpe: Sort headers 2024-09-04 09:02:44 +02:00
gpio-stp-xway.c gpio: stp-xway: Simplify using devm_clk_get_enabled() 2024-09-02 12:31:48 +02:00
gpio-syscon.c gpio: syscon: fix excess struct member build warning 2024-09-02 12:35:59 +02:00
gpio-tangier.c gpio: tangier: Use correct type for the IRQ chip data 2024-04-12 23:41:05 +03:00
gpio-tangier.h gpio: tangier: unexport suspend/resume handles 2023-11-13 17:59:48 +02:00
gpio-tb10x.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-tc3589x.c gpio: tc3589x: Make irqchip immutable 2022-10-03 20:56:46 +02:00
gpio-tegra186.c gpio: tegra186: Replace of_node_to_fwnode() with more suitable API 2024-09-02 12:27:36 +02:00
gpio-tegra.c gpio: tegra: Replace of_node_to_fwnode() with more suitable API 2024-09-02 12:27:36 +02:00
gpio-thunderx.c gpio: thunderx: Replace of_node_to_fwnode() with more suitable API 2024-09-02 12:27:36 +02:00
gpio-timberdale.c gpio: timberdale: Fix potential deadlock on &tgpio->lock 2023-09-27 08:51:28 +02:00
gpio-tn48m.c gpio: Add Delta TN48M CPLD GPIO driver 2022-02-25 09:59:35 +01:00
gpio-tpic2810.c gpio: Switch i2c drivers back to use .probe() 2023-05-23 10:09:11 +02:00
gpio-tps6586x.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-tps65086.c gpio: tps65086: Use devm_gpiochip_add_data() to simplify remove path 2023-05-17 11:40:40 +02:00
gpio-tps65218.c gpio: tps65218: remove redundant of_match_ptr() 2023-08-03 15:55:34 +02:00
gpio-tps65219.c gpio: tps65219: don't use CONFIG_DEBUG_GPIO 2023-12-27 15:56:48 +01:00
gpio-tps65910.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-tps65912.c
gpio-tps68470.c gpio: tps68470: Make tps68470_gpio_output() always set the initial value 2023-07-19 13:22:13 +02:00
gpio-tqmx86.c gpio: tqmx86: fix broken IRQ_TYPE_EDGE_BOTH interrupt type 2024-06-03 14:13:13 +02:00
gpio-ts4800.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-ts4900.c gpio: ts4900: use generic device properties 2024-10-14 10:28:21 +02:00
gpio-ts5500.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-twl4030.c This removes all usage of global GPIO numbers from 2023-05-31 17:01:34 +02:00
gpio-twl6040.c
gpio-uniphier.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-vf610.c gpio: vf610: use generic device_get_match_data() 2024-10-14 10:29:11 +02:00
gpio-viperboard.c
gpio-virtio.c virtio: rename virtio_find_vqs_info() to virtio_find_vqs() 2024-07-17 05:20:58 -04:00
gpio-virtuser.c gpio: virtuser: Use GPIO_LOOKUP_IDX() macro 2024-08-21 12:18:21 +02:00
gpio-visconti.c gpio: visconti: Replace of_node_to_fwnode() with more suitable API 2024-09-02 12:27:36 +02:00
gpio-vx855.c gpio: vx855: remove unneeded call to platform_set_drvdata() 2023-08-03 15:48:15 +02:00
gpio-wcd934x.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-wcove.c gpio: wcove: Use -ENOTSUPP consistently 2024-04-05 20:12:03 +03:00
gpio-winbond.c gpio: winbond: Fix error code in winbond_gpio_get() 2022-06-23 16:29:55 +02:00
gpio-wm831x.c gpio: wm831x: use gpiochip_dup_line_label() 2023-12-08 09:26:20 +01:00
gpio-wm8350.c gpio: wm8350: Remove unused header(s) 2022-10-24 12:29:41 +03:00
gpio-wm8994.c gpio: wm8994: use gpiochip_dup_line_label() 2023-12-08 09:26:25 +01:00
gpio-ws16c48.c gpio updates for v6.6 2023-08-29 10:21:56 -07:00
gpio-xgene-sb.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-xgene.c
gpio-xgs-iproc.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-xilinx.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-xlp.c gpio: xlp: Convert to immutable irq_chip 2023-03-23 14:31:19 +01:00
gpio-xra1403.c gpio: xra1403: remove redundant of_match_ptr() 2023-08-03 15:58:54 +02:00
gpio-xtensa.c
gpio-zevio.c gpio: zevio: remove unneeded call to platform_set_drvdata() 2023-08-03 15:48:27 +02:00
gpio-zynq.c gpio: Switch back to struct platform_driver::remove() 2024-10-17 09:00:48 +02:00
gpio-zynqmp-modepin.c gpio: modepin: Enable module autoloading 2024-09-02 15:00:53 +02:00
gpiolib-acpi.c gpiolib: Update the kernel documentation - add Return sections 2024-09-02 12:27:36 +02:00
gpiolib-acpi.h gpio: acpi: Make acpi_gpio_count() take firmware node as a parameter 2024-03-01 09:08:34 +01:00
gpiolib-cdev.c gpiolib: notify user-space about in-kernel line state changes 2024-10-22 08:59:09 +02:00
gpiolib-cdev.h
gpiolib-devres.c gpiolib: legacy: Consolidate devm_gpio_*() with other legacy APIs 2024-09-02 12:27:36 +02:00
gpiolib-legacy.c gpiolib: legacy: Consolidate devm_gpio_*() with other legacy APIs 2024-09-02 12:27:36 +02:00
gpiolib-of.c gpiolib: Update the kernel documentation - add Return sections 2024-09-02 12:27:36 +02:00
gpiolib-of.h gpio: of: Make of_gpio_get_count() take firmware node as a parameter 2024-03-01 09:07:21 +01:00
gpiolib-swnode.c gpiolib: Update the kernel documentation - add Return sections 2024-09-02 12:27:36 +02:00
gpiolib-swnode.h gpiolib: add support for software nodes 2022-11-15 11:21:43 +01:00
gpiolib-sysfs.c gpio: sysfs: constify gpio class 2024-10-17 08:53:02 +02:00
gpiolib-sysfs.h gpiolib: revert the attempt to protect the GPIO device list with an rwsem 2024-01-17 09:52:37 +01:00
gpiolib.c gpiolib: notify user-space about in-kernel line state changes 2024-10-22 08:59:09 +02:00
gpiolib.h gpiolib: notify user-space about in-kernel line state changes 2024-10-22 08:59:09 +02:00
Kconfig gpio: fold the Kconfig prompt into the option type for GPIO CDEV 2024-10-17 08:53:19 +02:00
Makefile gpio: add support for FTDI's MPSSE as GPIO 2024-10-14 09:07:32 +02:00
TODO Fix typos in GPIO TODO document 2024-09-30 10:16:26 +02:00