linux/drivers/gpio
Bartosz Golaszewski 1979a28075 gpiolib: replace the GPIO device mutex with a read-write semaphore
There are only two spots where we modify (add to or remove objects from)
the GPIO device list. Readers should be able to access it concurrently.
Replace the mutex with a read-write semaphore and adjust the locking
operations accordingly.

Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
2024-01-04 10:29:16 +01:00
..
gpio-74x164.c spi: make remove callback a void function 2022-02-09 13:00:45 +00: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-aggregator.c gpio: aggregator: Set up a parser of delay line parameters 2023-06-16 11:02:07 +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: altera: Convert to platform remove callback returning void 2023-10-02 08:53:57 +02:00
gpio-amd8111.c gpio: amd8111: Fix PCI device reference count leak 2022-11-30 17:18:35 +01:00
gpio-amd-fch.c
gpio-amdpt.c gpio: amdpt: Convert to platform remove callback returning void 2023-10-02 08:54:09 +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 treewide: rename pinctrl_gpio_set_config_new() 2023-11-04 10:23:22 +01:00
gpio-ath79.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +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: brcmstb: Convert to platform remove callback returning void 2023-10-02 08:54:20 +02:00
gpio-bt8xx.c
gpio-cadence.c gpio: cadence: Convert to platform remove callback returning void 2023-10-02 08:54:26 +02: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-crystalcove.c gpio: crystalcove: Join function declarations and long lines 2022-06-06 14:09:16 +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: Use device_get_match_data() 2023-10-09 09:08:08 +02:00
gpio-dln2.c gpio: dln2: Convert to platform remove callback returning void 2023-10-02 08:54:31 +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: Use generic request, free and set_config 2024-01-02 14:16:17 +01:00
gpio-eic-sprd.c gpio: eic-sprd: use a helper variable for &pdev->dev 2023-09-13 14:13:32 +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: Add support for Airoha EN7523 GPIO controller 2022-02-02 10:16:19 +01:00
gpio-ep93xx.c gpio: ep93xx: remove unused variable 2023-01-27 14:05:38 +01: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: Convert to platform remove callback returning void 2023-10-02 08:54:36 +02:00
gpio-fxl6408.c gpio: fx6408: Convert to use maple tree register cache 2023-10-02 08:58:01 +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-grgpio.c gpio: grgpio: Convert to platform remove callback returning void 2023-10-02 08:54:41 +02:00
gpio-gw-pld.c gpio: Switch i2c drivers back to use .probe() 2023-05-23 10:09:11 +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: Handle clock output on pin 14 and 15 2023-12-01 10:48:32 +01: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: update Intel LJCA USB GPIO driver 2023-10-11 11:33:38 +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: lpc18xx: Convert to platform remove callback returning void 2023-10-02 08:54:50 +02:00
gpio-lpc32xx.c gpio: lpc32xx: remove redundant CONFIG_OF and of_match_ptr() 2023-08-03 15:58:49 +02:00
gpio-madera.c
gpio-max730x.c gpio: max730x: don't use kernel-doc marker for regular comment 2023-12-07 09:24:08 +01: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: Switch i2c drivers back to use .probe() 2023-05-23 10:09:11 +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: mb86s7x: Convert to platform remove callback returning void 2023-10-02 08:54:55 +02:00
gpio-mc33880.c spi: make remove callback a void function 2022-02-09 13:00:45 +00:00
gpio-menz127.c gpio: use raw spinlock for gpio chip shadowed data 2022-04-25 12:10:02 +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: use capital "OR" for multiple licenses in SPDX 2023-08-24 10:04:04 +02:00
gpio-mlxbf.c
gpio-mm-lantiq.c gpio: mm-lantiq: Convert to platform remove callback returning void 2023-10-02 08:55:00 +02:00
gpio-mmio.c gpio: mmio: Clean up headers 2023-12-18 13:43:06 +01:00
gpio-mockup.c gpio: mockup: initialize a managed pointer in place 2023-11-20 14:24:50 +01:00
gpio-moxtet.c
gpio-mpc8xxx.c gpio: mpc8xxx: Convert to platform remove callback returning void 2023-10-02 08:55:09 +02:00
gpio-mpc5200.c gpio: mpc5200: Convert to platform remove callback returning void 2023-10-02 08:55:04 +02:00
gpio-msc313.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-mt7621.c gpio updates for v6.1-rc1 2022-10-08 09:46:29 -07:00
gpio-mvebu.c pwm: Changes for v6.7-rc1 2023-11-09 13:47:52 -08: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-npcm-sgpio.c gpio: nuvoton: Add Nuvoton NPCM sgpio driver 2024-01-03 11:25:41 +01:00
gpio-octeon.c
gpio-omap.c OMAP/gpio: drop MPUIO static base 2023-10-04 11:37:25 +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: Convert to use maple tree register cache 2023-10-02 08:57:48 +02:00
gpio-pca9570.c gpio: pca9570: fix kerneldoc 2023-08-21 10:39:58 +02:00
gpio-pcf857x.c gpio: pcf857x: Extend match data support for OF tables 2023-08-22 11:41:17 +02:00
gpio-pch.c gpio: pch: Change PCI device macros 2022-06-21 18:01:11 +03: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: Migrate to the regmap API 2023-08-11 14:23:33 +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: pl061: Add missing header(s) 2022-10-24 12:29:26 +03: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 treewide: rename pinctrl_gpio_free_new() 2023-11-04 10:23:21 +01:00
gpio-rda.c gpio: rda: Convert to immutable irq_chip 2023-03-23 14:31:18 +01:00
gpio-rdc321x.c
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: Add missing header(s) 2023-03-06 12:33:02 +02:00
gpio-rockchip.c treewide: rename pinctrl_gpio_direction_output_new() 2023-11-04 10:23:22 +01:00
gpio-rtd.c gpio: rtd: Add support for Realtek DHC(Digital Home Center) RTD SoCs 2024-01-03 10:46:21 +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: remove unneeded call to platform_set_drvdata() 2023-08-01 21:27:38 +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: remove unneeded call to platform_set_drvdata() 2023-08-03 15:44:46 +02: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: implement the dbg_show() callback 2023-12-08 09:37:30 +01: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-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: use gpiochip_dup_line_label() 2023-12-08 09:26:28 +01:00
gpio-stp-xway.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-syscon.c gpio: syscon: remove unneeded call to platform_set_drvdata() 2023-08-03 15:44:49 +02:00
gpio-tangier.c gpio: tangier: simplify locking using cleanup helpers 2023-11-20 13:33:31 +02:00
gpio-tangier.h gpio: tangier: unexport suspend/resume handles 2023-11-13 17:59:48 +02:00
gpio-tb10x.c gpio updates for v6.7-rc1 2023-10-31 17:21:54 -10:00
gpio-tc3589x.c gpio: tc3589x: Make irqchip immutable 2022-10-03 20:56:46 +02:00
gpio-tegra186.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-tegra.c pinctrl: tegra: drop the wrapper around pinctrl_gpio_request() 2023-11-04 10:23:23 +01:00
gpio-thunderx.c gpio: thunderx: Convert to immutable irq_chip 2023-03-23 14:31:18 +01: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: remove unneeded call to platform_set_drvdata() 2023-08-03 15:47:58 +02:00
gpio-ts4800.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-ts4900.c gpio: Explicitly include correct DT includes 2023-07-19 13:24:01 +02:00
gpio-ts5500.c gpio: ts5500: Convert to platform remove callback returning void 2023-10-02 08:55:27 +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: uniphier: Convert to platform remove callback returning void 2023-10-02 08:55:32 +02:00
gpio-vf610.c treewide: rename pinctrl_gpio_direction_output_new() 2023-11-04 10:23:22 +01:00
gpio-viperboard.c
gpio-virtio.c virtio: wrap config->reset calls 2022-01-14 18:50:52 -05:00
gpio-visconti.c gpio: visconti: Convert to immutable irq_chip 2023-03-23 14:31:18 +01: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: make irq_chip immutable 2022-06-06 14:09:16 +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: xgene-sb: Convert to platform remove callback returning void 2023-10-02 08:55:38 +02:00
gpio-xgene.c
gpio-xgs-iproc.c gpio: xgs-iproc: Convert to platform remove callback returning void 2023-10-02 08:55:42 +02:00
gpio-xilinx.c gpio: xilinx: remove excess kernel doc 2023-12-18 09:56:21 +01: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: zynq: Convert to platform remove callback returning void 2023-10-02 08:55:50 +02:00
gpio-zynqmp-modepin.c
gpiolib-acpi.c gpio updates for v6.7-rc1 2023-10-31 17:21:54 -10:00
gpiolib-acpi.h gpiolib: Clean up headers 2023-03-06 12:33:02 +02:00
gpiolib-cdev.c gpiolib: cdev: replace locking wrappers for gpio_device with guards 2023-12-27 15:45:45 +01:00
gpiolib-cdev.h
gpiolib-devres.c gpiolib: of: remove [devm_]gpiod_get_from_of_node() APIs 2023-01-30 15:55:28 +01:00
gpiolib-legacy.c gpiolib: Kill unused GPIOF_OPEN_* 2023-06-01 09:52:39 +02:00
gpiolib-of.c sound updates for 6.7 2023-11-02 14:34:14 -10:00
gpiolib-of.h gpiolib: Clean up headers 2023-03-06 12:33:02 +02:00
gpiolib-swnode.c gpio: swnode: replace gpiochip_find() with gpio_device_find_by_label() 2023-10-04 13:36:23 +02:00
gpiolib-swnode.h gpiolib: add support for software nodes 2022-11-15 11:21:43 +01:00
gpiolib-sysfs.c gpiolib: replace the GPIO device mutex with a read-write semaphore 2024-01-04 10:29:16 +01:00
gpiolib-sysfs.h gpiolib: use a mutex to protect the list of GPIO devices 2023-12-18 10:00:43 +01:00
gpiolib.c gpiolib: replace the GPIO device mutex with a read-write semaphore 2024-01-04 10:29:16 +01:00
gpiolib.h gpiolib: replace the GPIO device mutex with a read-write semaphore 2024-01-04 10:29:16 +01:00
Kconfig gpio: nuvoton: Add Nuvoton NPCM sgpio driver 2024-01-03 11:25:41 +01:00
Makefile gpio: nuvoton: Add Nuvoton NPCM sgpio driver 2024-01-03 11:25:41 +01:00
TODO gpiolib: split of_mm_gpio_chip out of linux/of_gpio.h 2023-03-06 12:33:01 +02:00