linux/drivers/pinctrl
Stefan Wahren 8ff05989b4 pinctrl: bcm2835: Make pin freeing behavior configurable
Until now after a bcm2835 pin was freed its pinmux was set to GPIO_IN.
So in case it was configured as GPIO_OUT before the configured output
level also get lost. As long as GPIO sysfs was used this wasn't
actually a problem because the pins and their possible output level
were kept by sysfs.

Since more and more Raspberry Pi users start using libgpiod they are
confused about this behavior. So make the pin freeing behavior of
GPIO_OUT configurable via module parameter. In case
pinctrl-bcm2835.persist_gpio_outputs is set to 1, the output level is
kept.

This patch based on the downstream work of Phil Elwell.

Link: https://github.com/raspberrypi/linux/pull/6117
Signed-off-by: Stefan Wahren <wahrenst@gmx.net>
Message-ID: <20240503062745.11298-1-wahrenst@gmx.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2024-05-06 08:14:01 +02:00
..
actions pinctrl: actions: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:50 -07:00
aspeed pinctrl: aspeed: Allow changing SPI mode from hardware strap defaults 2023-10-10 14:01:30 +02:00
bcm pinctrl: bcm2835: Make pin freeing behavior configurable 2024-05-06 08:14:01 +02:00
berlin pinctrl: Use device_get_match_data() 2023-10-30 14:50:42 +01:00
cirrus pinctrl: cs42l43: Use str_high_low() 2024-01-31 09:11:14 +01:00
freescale pinctrl: freescale: imx8ulp: fix module autoloading 2024-04-17 10:43:50 +02:00
intel pwm: lpss-*: Make use of devm_pwmchip_alloc() function 2024-02-19 11:04:11 +01:00
mediatek pinctrl: mediatek: fix module autoloading 2024-04-17 10:43:50 +02:00
meson pinctrl: Add driver support for Amlogic T7 SoCs 2023-09-25 15:49:18 +02:00
mvebu pinctrl: armada-37xx: remove an unused variable 2024-04-02 14:27:13 +02:00
nomadik pinctrl: nomadik: fix dereference of error pointer 2024-03-06 20:47:14 +01:00
nuvoton pinctrl: nuvoton: Constify wpcm450_groups 2024-02-07 11:46:02 +01:00
nxp pinctrl: s32cc: Avoid possible string truncation 2023-11-14 14:43:37 +01:00
pxa pinctrl: pxa2xx: Make use of struct pingroup 2024-03-28 09:44:20 +01:00
qcom pinctrl: qcom: pinctrl-sm7150: Fix sdc1 and ufs special pins regs 2024-05-03 09:55:04 +02:00
realtek pinctrl: realtek: fix module autoloading 2024-04-17 10:43:50 +02:00
renesas pinctrl: renesas: rzg2l: Limit 2.5V power supply to Ethernet interfaces 2024-04-25 10:35:05 +02:00
samsung pinctrl: samsung: constify iomem pointers 2023-12-28 22:13:17 +01:00
spear treewide: rename pinctrl_gpio_free_new() 2023-11-04 10:23:21 +01:00
sprd pinctrl: sprd-sc9860: Convert to platform remove callback returning void 2023-10-10 15:47:50 +02:00
starfive This is the main pin control pull request for the v6.8 kernel series. 2024-01-17 15:55:33 -08:00
stm32 pinctrl: stm32: fix PM support for stm32mp257 2024-02-13 09:42:22 +01:00
sunplus pinctrl: sppctl: use gpiochip_dup_line_label() 2023-12-08 09:26:37 +01:00
sunxi pinctrl: sunxi: sun9i-a80-r: drop driver owner assignment 2024-04-04 13:39:47 +02:00
tegra phy: constify of_phandle_args in xlate 2024-02-23 17:43:14 +05:30
ti pinctrl: Use device_get_match_data() 2023-10-30 14:50:42 +01:00
uniphier pinctrl: uniphier: Annotate struct uniphier_pinctrl_reg_region with __counted_by 2023-09-27 10:59:06 +02:00
visconti
vt8500 pinctrl: vt8500: drop the wrapper around pinctrl_gpio_direction_input() 2023-11-04 10:23:22 +01:00
core.c Pin control changes for the v6.9 kernel cycle: 2024-03-14 10:22:26 -07:00
core.h pinctrl: core: Remove unused members from struct group_desc 2023-12-12 00:47:52 +01:00
devicetree.c pinctrl: Convert unsigned to unsigned int 2023-12-04 15:32:42 +01:00
devicetree.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00
Kconfig pinctrl: aw9523: Make the driver tristate 2024-03-07 23:09:01 +01:00
Makefile pinctrl: Add driver for Awinic AW9523/B I2C GPIO Expander 2024-03-05 23:26:31 +01:00
pinconf-generic.c pinctrl: pinconf-generic: print hex value 2024-04-17 10:53:44 +02:00
pinconf.c pinctrl: Convert unsigned to unsigned int 2023-12-04 15:32:42 +01:00
pinconf.h pinctrl: Convert unsigned to unsigned int 2023-12-04 15:32:42 +01:00
pinctrl-amd.c pinctrl: amd: Add IRQF_ONESHOT to the interrupt request 2024-01-31 10:06:07 +01:00
pinctrl-amd.h pinctrl: amd: Mask non-wake source pins with interrupt enabled at suspend 2023-12-04 15:46:02 +01:00
pinctrl-apple-gpio.c
pinctrl-artpec6.c pinctrl: artpec6: Convert to platform remove callback returning void 2023-10-10 15:39:10 +02:00
pinctrl-as3722.c pinctrl: as3722: Use devm_gpiochip_add_data() to simplify remove path 2023-11-24 11:22:12 +01:00
pinctrl-at91-pio4.c pinctrl: at91-pio4: use dedicated lock class for IRQ 2023-12-21 09:05:02 +01:00
pinctrl-at91.c pinctrl: Use device_get_match_data() 2023-10-30 14:50:42 +01:00
pinctrl-at91.h
pinctrl-aw9523.c pinctrl: aw9523: Fix indentation in a few places 2024-04-04 13:16:46 +02:00
pinctrl-axp209.c pinctrl: axp209: drop the wrapper around pinctrl_gpio_direction_input() 2023-11-04 10:23:22 +01:00
pinctrl-bm1880.c pinctrl: bm1880: Add missing header(s) 2022-10-24 12:53:33 +03:00
pinctrl-cy8c95x0.c This is the main pin control pull request for the v6.8 kernel series. 2024-01-17 15:55:33 -08:00
pinctrl-da850-pupd.c pinctrl: da850-pupd: Drop empty platform remove function 2022-12-29 02:02:46 +01:00
pinctrl-da9062.c pinctrl: da9062: Add OF table 2024-02-29 14:44:08 +01:00
pinctrl-digicolor.c pinctrl: digicolor: Use proper headers and drop OF dependency 2023-01-16 15:14:03 +01:00
pinctrl-equilibrium.c pinctrl: equilibrium: Convert to use grp member 2023-12-12 00:47:52 +01:00
pinctrl-equilibrium.h pinctrl: equilibrium: Convert to immutable irq_chip 2023-04-14 11:08:17 +02:00
pinctrl-falcon.c pinctrl: lantiq: Remove unused of_gpio.h inclusion 2023-06-16 15:04:34 +02:00
pinctrl-gemini.c pinctrl: gemini: Add missing header(s) 2022-10-24 17:06:45 +03:00
pinctrl-ingenic.c pinctrl: ingenic: Convert to use grp member 2023-12-12 00:47:52 +01:00
pinctrl-k210.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-keembay.c pinctrl: keembay: Convert to use grp member 2023-12-12 00:47:52 +01:00
pinctrl-lantiq.c pinctrl: lantiq: Add missing header(s) 2022-10-24 17:06:46 +03:00
pinctrl-lantiq.h pinctrl: lantiq: Remove unsued declaration ltq_pinctrl_unregister() 2023-09-11 15:42:12 +02:00
pinctrl-loongson2.c pinctrl: loongson2: fix module autoloading 2024-04-17 10:43:50 +02:00
pinctrl-lpc18xx.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-max77620.c pinctrl: max77620: Remove an unused fields in struct max77620_pin_info and max77620_pctrl_info 2024-04-04 21:03:25 +02:00
pinctrl-mcp23s08_i2c.c pinctrl: mcp23s08: Simplify probe()/mcp23s08_spi_regmap_init() 2023-10-10 13:39:38 +02:00
pinctrl-mcp23s08_spi.c pinctrl: mcp23s08: Simplify probe()/mcp23s08_spi_regmap_init() 2023-10-10 13:39:38 +02:00
pinctrl-mcp23s08.c pinctrl: mcp23s08: Check only GPIOs which have interrupts enabled 2024-02-09 14:32:47 +01:00
pinctrl-mcp23s08.h pinctrl: mcp23s08: Simplify probe()/mcp23s08_spi_regmap_init() 2023-10-10 13:39:38 +02:00
pinctrl-microchip-sgpio.c pinctrl: microchip-sgpio: check return value of devm_kasprintf() 2023-06-16 15:01:45 +02:00
pinctrl-mlxbf3.c pinctrl: mlxbf3: Remove gpio_disable_free() 2023-08-25 15:44:15 +02:00
pinctrl-ocelot.c pinctrl: ocelot: remove redundant assignment to variable ret 2024-02-29 14:38:09 +01:00
pinctrl-palmas.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-pef2256.c pinctrl: Add support for the Lantic PEF2256 pinmux 2023-12-12 23:05:24 +01:00
pinctrl-pic32.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-pic32.h
pinctrl-pistachio.c pinctrl: pistachio: Convert to immutable irq_chip 2023-04-20 16:07:40 +02:00
pinctrl-rk805.c pinctrl: rk805: drop the wrapper around pinctrl_gpio_direction_input() 2023-11-04 10:23:23 +01:00
pinctrl-rockchip.c pinctrl: rockchip: Convert to platform remove callback returning void 2023-10-10 15:40:22 +02:00
pinctrl-rockchip.h
pinctrl-single.c pinctrl: single: Fix PIN_CONFIG_BIAS_DISABLE handling 2024-04-04 21:03:25 +02:00
pinctrl-st.c pinctrl: st: Return pinctrl_gpio_direction_output to transfer the error 2024-01-27 23:45:22 +01:00
pinctrl-stmfx.c pinctrl: stmfx: Convert to platform remove callback returning void 2023-10-10 15:41:35 +02:00
pinctrl-sx150x.c pinctrl: sx150x: Simplify probe() 2023-09-12 10:12:36 +02:00
pinctrl-tb10x.c pinctrl: tb10x: Convert to platform remove callback returning void 2023-10-10 15:42:07 +02:00
pinctrl-tps6594.c pinctrl: tps6594: Add driver for TPS6594 pinctrl and GPIOs 2023-11-14 14:45:35 +01:00
pinctrl-utils.c pinctrl: Convert unsigned to unsigned int 2023-12-04 15:32:42 +01:00
pinctrl-utils.h pinctrl: Convert unsigned to unsigned int 2023-12-04 15:32:42 +01:00
pinctrl-xway.c pinctrl: Use device_get_match_data() 2023-10-30 14:50:42 +01:00
pinctrl-zynq.c
pinctrl-zynqmp.c pinctrl: pinctrl-zynqmp: Use devm_kcalloc() instead of devm_kzalloc() 2024-01-28 01:17:26 +01:00
pinmux.c pinctrl: Use DEFINE_SHOW_STORE_ATTRIBUTE() helper for debugfs 2024-04-08 11:01:18 +02:00
pinmux.h pinctrl: Convert unsigned to unsigned int 2023-12-04 15:32:42 +01:00