diff mbox series

gpio: omap: handle pin config bias flags

Message ID 20200709223401.780051-1-drew@beagleboard.org (mailing list archive)
State New, archived
Headers show
Series gpio: omap: handle pin config bias flags | expand

Commit Message

Drew Fustini July 9, 2020, 10:34 p.m. UTC
Modify omap_gpio_set_config() to handle pin config bias flags by calling
gpiochip_generic_config().

The pin group for the gpio line must have the corresponding pinconf
properties:

PIN_CONFIG_BIAS_PULL_UP requires "pinctrl-single,bias-pullup"
PIN_CONFIG_BIAS_PULL_DOWN requires "pinctrl-single,bias-pulldown"

This is necessary for pcs_pinconf_set() to find the requested bias
parameter in the PIN_MAP_TYPE_CONFIGS_GROUP pinctrl map.

Signed-off-by: Drew Fustini <drew@beagleboard.org>
---
 drivers/gpio/gpio-omap.c | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

Comments

Tony Lindgren July 13, 2020, 6:07 p.m. UTC | #1
* Drew Fustini <drew@beagleboard.org> [200709 22:35]:
> Modify omap_gpio_set_config() to handle pin config bias flags by calling
> gpiochip_generic_config().
> 
> The pin group for the gpio line must have the corresponding pinconf
> properties:
> 
> PIN_CONFIG_BIAS_PULL_UP requires "pinctrl-single,bias-pullup"
> PIN_CONFIG_BIAS_PULL_DOWN requires "pinctrl-single,bias-pulldown"
> 
> This is necessary for pcs_pinconf_set() to find the requested bias
> parameter in the PIN_MAP_TYPE_CONFIGS_GROUP pinctrl map.

Looks good to me:

Acked-by: Tony Lindgren <tony@atomide.com>
Grygorii Strashko July 15, 2020, 10:09 a.m. UTC | #2
On 10/07/2020 01:34, Drew Fustini wrote:
> Modify omap_gpio_set_config() to handle pin config bias flags by calling
> gpiochip_generic_config().
> 
> The pin group for the gpio line must have the corresponding pinconf
> properties:
> 
> PIN_CONFIG_BIAS_PULL_UP requires "pinctrl-single,bias-pullup"
> PIN_CONFIG_BIAS_PULL_DOWN requires "pinctrl-single,bias-pulldown"
> 
> This is necessary for pcs_pinconf_set() to find the requested bias
> parameter in the PIN_MAP_TYPE_CONFIGS_GROUP pinctrl map.
> 
> Signed-off-by: Drew Fustini <drew@beagleboard.org>
> ---
>   drivers/gpio/gpio-omap.c | 21 +++++++++++++++++----
>   1 file changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> index b8e2ecc3eade..a471a152f318 100644
> --- a/drivers/gpio/gpio-omap.c
> +++ b/drivers/gpio/gpio-omap.c
> @@ -896,12 +896,25 @@ static int omap_gpio_set_config(struct gpio_chip *chip, unsigned offset,
>   				unsigned long config)
>   {
>   	u32 debounce;
> +	int ret;

ret =  -ENOTSUPP;

>   
> -	if (pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE)
> -		return -ENOTSUPP;
> +	if ((pinconf_to_config_param(config) == PIN_CONFIG_BIAS_DISABLE) ||
> +	    (pinconf_to_config_param(config) == PIN_CONFIG_BIAS_PULL_UP) ||
> +	    (pinconf_to_config_param(config) == PIN_CONFIG_BIAS_PULL_DOWN))
> +	{
> +		ret = gpiochip_generic_config(chip, offset, config);
> +	}
> +	else if (pinconf_to_config_param(config) == PIN_CONFIG_INPUT_DEBOUNCE)
> +	{
> +		debounce = pinconf_to_config_argument(config);
> +		ret = omap_gpio_debounce(chip, offset, debounce);
> +	}
> +	else
> +	{
> +		ret = -ENOTSUPP;
> +	}

drop above "else"?

>   
> -	debounce = pinconf_to_config_argument(config);
> -	return omap_gpio_debounce(chip, offset, debounce);
> +	return ret;
>   }
>   
>   static void omap_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
> 

Minor comment, Otherwise:
Acked-by: Grygorii Strashko <grygorii.strashko@ti.com>
Drew Fustini July 15, 2020, 9:32 p.m. UTC | #3
On Wed, Jul 15, 2020 at 01:09:12PM +0300, Grygorii Strashko wrote:
> 
> 
> On 10/07/2020 01:34, Drew Fustini wrote:
> > Modify omap_gpio_set_config() to handle pin config bias flags by calling
> > gpiochip_generic_config().
> > 
> > The pin group for the gpio line must have the corresponding pinconf
> > properties:
> > 
> > PIN_CONFIG_BIAS_PULL_UP requires "pinctrl-single,bias-pullup"
> > PIN_CONFIG_BIAS_PULL_DOWN requires "pinctrl-single,bias-pulldown"
> > 
> > This is necessary for pcs_pinconf_set() to find the requested bias
> > parameter in the PIN_MAP_TYPE_CONFIGS_GROUP pinctrl map.
> > 
> > Signed-off-by: Drew Fustini <drew@beagleboard.org>
> > ---
> >   drivers/gpio/gpio-omap.c | 21 +++++++++++++++++----
> >   1 file changed, 17 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> > index b8e2ecc3eade..a471a152f318 100644
> > --- a/drivers/gpio/gpio-omap.c
> > +++ b/drivers/gpio/gpio-omap.c
> > @@ -896,12 +896,25 @@ static int omap_gpio_set_config(struct gpio_chip *chip, unsigned offset,
> >   				unsigned long config)
> >   {
> >   	u32 debounce;
> > +	int ret;
> 
> ret =  -ENOTSUPP;
> 
> > -	if (pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE)
> > -		return -ENOTSUPP;
> > +	if ((pinconf_to_config_param(config) == PIN_CONFIG_BIAS_DISABLE) ||
> > +	    (pinconf_to_config_param(config) == PIN_CONFIG_BIAS_PULL_UP) ||
> > +	    (pinconf_to_config_param(config) == PIN_CONFIG_BIAS_PULL_DOWN))
> > +	{
> > +		ret = gpiochip_generic_config(chip, offset, config);
> > +	}
> > +	else if (pinconf_to_config_param(config) == PIN_CONFIG_INPUT_DEBOUNCE)
> > +	{
> > +		debounce = pinconf_to_config_argument(config);
> > +		ret = omap_gpio_debounce(chip, offset, debounce);
> > +	}
> > +	else
> > +	{
> > +		ret = -ENOTSUPP;
> > +	}
> 
> drop above "else"?
> 
> > -	debounce = pinconf_to_config_argument(config);
> > -	return omap_gpio_debounce(chip, offset, debounce);
> > +	return ret;
> >   }
> >   static void omap_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
> > 
> 
> Minor comment, Otherwise:
> Acked-by: Grygorii Strashko <grygorii.strashko@ti.com>
> 
> -- 
> Best regards,
> grygorii

Thanks for reviewing.  I'll post a new version with the return value
improvement per your suggestion.

-Drew
diff mbox series

Patch

diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index b8e2ecc3eade..a471a152f318 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -896,12 +896,25 @@  static int omap_gpio_set_config(struct gpio_chip *chip, unsigned offset,
 				unsigned long config)
 {
 	u32 debounce;
+	int ret;
 
-	if (pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE)
-		return -ENOTSUPP;
+	if ((pinconf_to_config_param(config) == PIN_CONFIG_BIAS_DISABLE) ||
+	    (pinconf_to_config_param(config) == PIN_CONFIG_BIAS_PULL_UP) ||
+	    (pinconf_to_config_param(config) == PIN_CONFIG_BIAS_PULL_DOWN))
+	{
+		ret = gpiochip_generic_config(chip, offset, config);
+	}
+	else if (pinconf_to_config_param(config) == PIN_CONFIG_INPUT_DEBOUNCE)
+	{
+		debounce = pinconf_to_config_argument(config);
+		ret = omap_gpio_debounce(chip, offset, debounce);
+	}
+	else
+	{
+		ret = -ENOTSUPP;
+	}
 
-	debounce = pinconf_to_config_argument(config);
-	return omap_gpio_debounce(chip, offset, debounce);
+	return ret;
 }
 
 static void omap_gpio_set(struct gpio_chip *chip, unsigned offset, int value)