From: Drew Fustini <drew@beagleboard.org>
To: "Gustavo A. R. Silva" <gustavo@embeddedor.com>,
Linus Walleij <linus.walleij@linaro.org>
Cc: Tony Lindgren <tony@atomide.com>,
Haojian Zhuang <haojian.zhuang@linaro.org>,
Grygorii Strashko <grygorii.strashko@ti.com>,
linux-omap@vger.kernel.org, linux-gpio@vger.kernel.org,
Jason Kridner <jkridner@beagleboard.org>,
Robert Nelson <robertcnelson@gmail.com>
Subject: Re: [PATCH v3] gpio: omap: handle pin config bias flags
Date: Tue, 21 Jul 2020 12:02:21 +0200 [thread overview]
Message-ID: <20200721100221.GA1982085@x1> (raw)
In-Reply-To: <f27995fd-5885-9dbf-c42e-73dbe69fcfab@embeddedor.com>
On Mon, Jul 20, 2020 at 05:38:51PM -0500, Gustavo A. R. Silva wrote:
> Hi Drew,
>
> Somehow I ran into this patch in Linus' tree:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git/commit/?h=for-next&id=75dec56710dfafd37daa95e756c5d1840932ba90
>
> Please, see some comments below...
>
> On 7/17/20 14:40, 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>
> > Acked-by: Grygorii Strashko <grygorii.strashko@ti.com>
> > Acked-by: Tony Lindgren <tony@atomide.com>
> > Link: https://lore.kernel.org/r/20200715213738.1640030-1-drew@beagleboard.org
> > Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
> > ---
> > drivers/gpio/gpio-omap.c | 16 +++++++++++-----
> > 1 file changed, 11 insertions(+), 5 deletions(-)
> >
> > v3 changes:
> > - adjust the braces to match the correct coding style
> > - note: I originally re-submitted this as v2 by accident when it should
> > have been v3. Sorry for the noise.
> >
> > v2 changes:
> > - simplify handling of -ENOTSUPP return value per Grygorii's suggestion
> >
> > diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> > index b8e2ecc3eade..0ccb31de0b67 100644
> > --- a/drivers/gpio/gpio-omap.c
> > +++ b/drivers/gpio/gpio-omap.c
> > @@ -896,12 +896,18 @@ static int omap_gpio_set_config(struct gpio_chip *chip, unsigned offset,
> > unsigned long config)
> > {
> > u32 debounce;
> > + int ret = -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);
> > + }
> >
> > - if (pinconf_to_config_param(config) != PIN_CONFIG_INPUT_DEBOUNCE)
> > - return -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)
> >
>
> Maybe next time you could consider coding something like this, instead:
>
> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> index 8dd86b9fae53..7fbe0c9e1fc1 100644
> --- a/drivers/gpio/gpio-omap.c
> +++ b/drivers/gpio/gpio-omap.c
> @@ -899,16 +899,18 @@ static int omap_gpio_set_config(struct gpio_chip *chip, unsigned offset,
> u32 debounce;
> int ret = -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))
> - {
> + switch (pinconf_to_config_param(config)) {
> + case PIN_CONFIG_BIAS_DISABLE:
> + case PIN_CONFIG_BIAS_PULL_UP:
> + case PIN_CONFIG_BIAS_PULL_DOWN:
> ret = gpiochip_generic_config(chip, offset, config);
> - }
> - else if (pinconf_to_config_param(config) == PIN_CONFIG_INPUT_DEBOUNCE)
> - {
> + break;
> + case PIN_CONFIG_INPUT_DEBOUNCE:
> debounce = pinconf_to_config_argument(config);
> ret = omap_gpio_debounce(chip, offset, debounce);
> + break;
> + default:
> + break;
> }
>
> return ret;
>
> It looks a bit more readable and cleaner. :)
>
> Thanks
> --
> Gustavo
Gustavo - thanks very much for the feedback. I appreciate getting these
insights into best practices.
Linus - should I submit a patch?
I'm not sure if it is better to limit churn, or make sure the code is
structured as best is possible.
Thanks,
Drew
next prev parent reply other threads:[~2020-07-21 10:02 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-17 19:40 [PATCH v3] gpio: omap: handle pin config bias flags Drew Fustini
2020-07-20 22:38 ` Gustavo A. R. Silva
2020-07-21 10:02 ` Drew Fustini [this message]
2020-07-21 22:07 ` Linus Walleij
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200721100221.GA1982085@x1 \
--to=drew@beagleboard.org \
--cc=grygorii.strashko@ti.com \
--cc=gustavo@embeddedor.com \
--cc=haojian.zhuang@linaro.org \
--cc=jkridner@beagleboard.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=robertcnelson@gmail.com \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.