[PATCH 1/2] pinctrl: at91-pio4: Add configuration to userspace

Nicolas Ferre nicolas.ferre at microchip.com
Mon Oct 10 02:13:26 PDT 2022


On 07/10/2022 at 17:16, Ryan.Wanner at microchip.com wrote:
> From: Ryan Wanner <Ryan.Wanner at microchip.com>
> 
> Adding support for line bias flags that have been implented in gpio API.

Typo: implemented

> There are functions in the gpiod library that can control line bias from
> userspace this adds that functionality to this driver.
> 
> Adding .pin_config_set allows the driver's pin configuration to be
> accessed from userspace. The general idea for this as been taken from
> stm32, intel, and rockchip drivers that have userspace access for bias
> flags.
> 
> Signed-off-by: Ryan Wanner <Ryan.Wanner at microchip.com>

Tested-by: Nicolas Ferre <nicolas.ferre at microchip.com> # on sama5d27 som1 ek
Acked-by: Nicolas Ferre <nicolas.ferre at microchip.com>

Thanks, best regards,
   Nicolas

> ---
>   drivers/pinctrl/pinctrl-at91-pio4.c | 22 ++++++++++++++++++++++
>   1 file changed, 22 insertions(+)
> 
> diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c
> index 517f2a6330ad..13b77f1eb6e2 100644
> --- a/drivers/pinctrl/pinctrl-at91-pio4.c
> +++ b/drivers/pinctrl/pinctrl-at91-pio4.c
> @@ -902,6 +902,25 @@ static int atmel_conf_pin_config_group_set(struct pinctrl_dev *pctldev,
>   	return 0;
>   }
>   
> +static int atmel_conf_pin_config_set(struct pinctrl_dev *pctldev,
> +				     unsigned pin,
> +				     unsigned long *configs,
> +				     unsigned num_configs)
> +{
> +	struct atmel_group *grp = atmel_pctl_find_group_by_pin(pctldev, pin);
> +
> +	return atmel_conf_pin_config_group_set(pctldev, grp->pin, configs, num_configs);
> +}
> +
> +static int atmel_conf_pin_config_get(struct pinctrl_dev *pctldev,
> +				     unsigned pin,
> +				     unsigned long *configs)
> +{
> +	struct atmel_group *grp = atmel_pctl_find_group_by_pin(pctldev, pin);
> +
> +	return atmel_conf_pin_config_group_get(pctldev, grp->pin, configs);
> +}
> +
>   static void atmel_conf_pin_config_dbg_show(struct pinctrl_dev *pctldev,
>   					   struct seq_file *s,
>   					   unsigned int pin_id)
> @@ -949,6 +968,8 @@ static const struct pinconf_ops atmel_confops = {
>   	.pin_config_group_get	= atmel_conf_pin_config_group_get,
>   	.pin_config_group_set	= atmel_conf_pin_config_group_set,
>   	.pin_config_dbg_show	= atmel_conf_pin_config_dbg_show,
> +	.pin_config_set	        = atmel_conf_pin_config_set,
> +	.pin_config_get	        = atmel_conf_pin_config_get,
>   };
>   
>   static struct pinctrl_desc atmel_pinctrl_desc = {
> @@ -1139,6 +1160,7 @@ static int atmel_pinctrl_probe(struct platform_device *pdev)
>   	atmel_pioctrl->gpio_chip->label = dev_name(dev);
>   	atmel_pioctrl->gpio_chip->parent = dev;
>   	atmel_pioctrl->gpio_chip->names = atmel_pioctrl->group_names;
> +	atmel_pioctrl->gpio_chip->set_config = gpiochip_generic_config;
>   
>   	atmel_pioctrl->pm_wakeup_sources = devm_kcalloc(dev,
>   			atmel_pioctrl->nbanks,


-- 
Nicolas Ferre



More information about the linux-arm-kernel mailing list