On 09.04.2021 11:25, Tudor Ambarus wrote: > The slew rate was enabled by default for each configuration of the > pin. In case the pin had more than one configuration, even if > we set the slew rate as disabled in the device tree, the next pin > configuration would set again the slew rate enabled by default, > overwriting the slew rate disablement. > Instead of enabling the slew rate by default for each pin configuration, > enable the slew rate by default just once per pin, regardless of the > number of configurations. This way the slew rate disablement will also > work for cases where pins have multiple configurations. > > Fixes: 440b144978ba ("pinctrl: at91-pio4: add support for slew-rate") > Signed-off-by: Tudor Ambarus <tudor.ambarus@xxxxxxxxxxxxx> Reviewed-by: Claudiu Beznea <claudiu.beznea@xxxxxxxxxxxxx> > --- > drivers/pinctrl/pinctrl-at91-pio4.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c > index a5d328808e4c..4c01d8471ffa 100644 > --- a/drivers/pinctrl/pinctrl-at91-pio4.c > +++ b/drivers/pinctrl/pinctrl-at91-pio4.c > @@ -801,6 +801,10 @@ static int atmel_conf_pin_config_group_set(struct pinctrl_dev *pctldev, > > conf = atmel_pin_config_read(pctldev, pin_id); > > + /* Keep slew rate enabled by default. */ > + if (atmel_pioctrl->slew_rate_support) > + conf |= ATMEL_PIO_SR_MASK; > + > for (i = 0; i < num_configs; i++) { > unsigned int param = pinconf_to_config_param(configs[i]); > unsigned int arg = pinconf_to_config_argument(configs[i]); > @@ -808,10 +812,6 @@ static int atmel_conf_pin_config_group_set(struct pinctrl_dev *pctldev, > dev_dbg(pctldev->dev, "%s: pin=%u, config=0x%lx\n", > __func__, pin_id, configs[i]); > > - /* Keep slew rate enabled by default. */ > - if (atmel_pioctrl->slew_rate_support) > - conf |= ATMEL_PIO_SR_MASK; > - > switch (param) { > case PIN_CONFIG_BIAS_DISABLE: > conf &= (~ATMEL_PIO_PUEN_MASK); >