Message ID | 20221007151647.98222-2-Ryan.Wanner@microchip.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | pinctrl:at91-pio4:add support for pullup/down | expand |
On 07/10/2022 at 17:16, Ryan.Wanner@microchip.com wrote: > From: Ryan Wanner <Ryan.Wanner@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@microchip.com> Tested-by: Nicolas Ferre <nicolas.ferre@microchip.com> # on sama5d27 som1 ek Acked-by: Nicolas Ferre <nicolas.ferre@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,
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,