diff mbox series

gpio: regmap: Use generic request/free ops

Message ID 20250107201621.12467-1-sander@svanheule.net
State New
Headers show
Series gpio: regmap: Use generic request/free ops | expand

Commit Message

Sander Vanheule Jan. 7, 2025, 8:16 p.m. UTC
Set the gpiochip request and free ops to the generic implementations.
This way a user can provide a gpio-ranges property defined for a pinmux,
easing muxing of gpio functions. Provided that the pin controller
implementents the pinmux op .gpio_request_enable(), pins will
automatically be muxed to their GPIO function when requested.

Signed-off-by: Sander Vanheule <sander@svanheule.net>
---
Álvaro has submitted a similar patch today. My implementation's impact
is more limited, but I hadn't gotten around to submitting it yet.

For the original (short) discussion, see:
https://lore.kernel.org/linux-gpio/20250107102735.317446-1-noltari@gmail.com/T/#t

 drivers/gpio/gpio-regmap.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Michael Walle Jan. 8, 2025, 8:28 a.m. UTC | #1
Hi,

On Tue Jan 7, 2025 at 9:16 PM CET, Sander Vanheule wrote:
> Set the gpiochip request and free ops to the generic implementations.
> This way a user can provide a gpio-ranges property defined for a pinmux,
> easing muxing of gpio functions. Provided that the pin controller
> implementents the pinmux op .gpio_request_enable(), pins will
> automatically be muxed to their GPIO function when requested.
>
> Signed-off-by: Sander Vanheule <sander@svanheule.net>

Sounds fine, although I don't have time to test it right now. I'd
appreciate if Linus could give a short comment, too.

Acked-by: Michael Walle <mwalle@kernel.org>

-michael

> ---
> Álvaro has submitted a similar patch today. My implementation's impact
> is more limited, but I hadn't gotten around to submitting it yet.
>
> For the original (short) discussion, see:
> https://lore.kernel.org/linux-gpio/20250107102735.317446-1-noltari@gmail.com/T/#t
>
>  drivers/gpio/gpio-regmap.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c
> index f716eb069b25..82da0f1d78c3 100644
> --- a/drivers/gpio/gpio-regmap.c
> +++ b/drivers/gpio/gpio-regmap.c
> @@ -270,6 +270,8 @@ struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config
>  	chip->label = config->label ?: dev_name(config->parent);
>  	chip->can_sleep = regmap_might_sleep(config->regmap);
>  
> +	chip->request = gpiochip_generic_request;
> +	chip->free = gpiochip_generic_free;
>  	chip->get = gpio_regmap_get;
>  	if (gpio->reg_set_base && gpio->reg_clr_base)
>  		chip->set = gpio_regmap_set_with_clear;
Bartosz Golaszewski Jan. 10, 2025, 1:19 p.m. UTC | #2
From: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>


On Tue, 07 Jan 2025 21:16:20 +0100, Sander Vanheule wrote:
> Set the gpiochip request and free ops to the generic implementations.
> This way a user can provide a gpio-ranges property defined for a pinmux,
> easing muxing of gpio functions. Provided that the pin controller
> implementents the pinmux op .gpio_request_enable(), pins will
> automatically be muxed to their GPIO function when requested.
> 
> 
> [...]

Applied, thanks!

[1/1] gpio: regmap: Use generic request/free ops
      commit: 5ab3b97ef9d4bff2513994ef9efc6d95722cb902

Best regards,
Linus Walleij Jan. 14, 2025, 12:35 p.m. UTC | #3
On Tue, Jan 7, 2025 at 9:17 PM Sander Vanheule <sander@svanheule.net> wrote:

> Set the gpiochip request and free ops to the generic implementations.
> This way a user can provide a gpio-ranges property defined for a pinmux,
> easing muxing of gpio functions. Provided that the pin controller
> implementents the pinmux op .gpio_request_enable(), pins will
> automatically be muxed to their GPIO function when requested.
>
> Signed-off-by: Sander Vanheule <sander@svanheule.net>
> ---
> Álvaro has submitted a similar patch today. My implementation's impact
> is more limited, but I hadn't gotten around to submitting it yet.

This is fine, I'll check Álvaros two patches, if his patch is equivalent
I can apply just the pinctrl patch.

Yours,
Linus Walleij
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-regmap.c b/drivers/gpio/gpio-regmap.c
index f716eb069b25..82da0f1d78c3 100644
--- a/drivers/gpio/gpio-regmap.c
+++ b/drivers/gpio/gpio-regmap.c
@@ -270,6 +270,8 @@  struct gpio_regmap *gpio_regmap_register(const struct gpio_regmap_config *config
 	chip->label = config->label ?: dev_name(config->parent);
 	chip->can_sleep = regmap_might_sleep(config->regmap);
 
+	chip->request = gpiochip_generic_request;
+	chip->free = gpiochip_generic_free;
 	chip->get = gpio_regmap_get;
 	if (gpio->reg_set_base && gpio->reg_clr_base)
 		chip->set = gpio_regmap_set_with_clear;