linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Grazvydas Ignotas <notasas@gmail.com>
To: Felipe Balbi <felipe.balbi@nokia.com>
Cc: David Brownell <david-b@pacbell.net>,
	Tony Lindgren <tony@atomide.com>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Linux OMAP Mailing List <linux-omap@vger.kernel.org>
Subject: Re: [RFC/PATCHv2 2/4] arm: omap: gpio: implement set_debounce method
Date: Thu, 1 Apr 2010 12:29:16 +0300	[thread overview]
Message-ID: <y2o6ed0b2681004010229r367aa72fv33746375541cd9da@mail.gmail.com> (raw)
In-Reply-To: <1270049712-28272-3-git-send-email-felipe.balbi@nokia.com>

On Wed, Mar 31, 2010 at 6:35 PM, Felipe Balbi <felipe.balbi@nokia.com> wrote:
> OMAP support debouncing of gpio lines, implement
> the method using gpiolib.
>
> Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
> ---
>  arch/arm/plat-omap/gpio.c |   68 +++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 68 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
> index 76a347b..345ed2c 100644
> --- a/arch/arm/plat-omap/gpio.c
> +++ b/arch/arm/plat-omap/gpio.c
> @@ -612,6 +612,59 @@ do {       \
>        __raw_writel(l, base + reg); \
>  } while(0)
>
> +/**
> + * _set_gpio_debounce - low level gpio debounce time
> + * @bank: the gpio bank we're acting upon
> + * @gpio: the gpio number on this @gpio
> + * @debounce: debounce time to use
> + *
> + * OMAP's debounce time is in 31us steps so we need
> + * to convert and round up to the closest unit.
> + */
> +static void _set_gpio_debounce(struct gpio_bank *bank, unsigned gpio,
> +               unsigned debounce)
> +{
> +       void __iomem            *reg = bank->base;
> +       u32                     val;
> +       u32                     l;
> +
> +       if (debounce < 32)
> +               debounce = 0x01;
> +       else if (debounce > 7936)
> +               debounce = 0xff;
> +       else
> +               debounce = (debounce / 0x1f) - 1;
> +
> +       l = 1 << get_gpio_index(gpio);
> +
> +       if (cpu_is_omap44xx())
> +               reg += OMAP4_GPIO_DEBOUNCINGTIME;
> +       else
> +               reg += OMAP24XX_GPIO_DEBOUNCE_VAL;
> +
> +       __raw_writel(debounce, reg);
> +
> +       reg = bank->base;
> +       if (cpu_is_omap44xx())
> +               reg += OMAP4_GPIO_DEBOUNCENABLE;
> +       else
> +               reg += OMAP24XX_GPIO_DEBOUNCE_EN;
> +
> +       val = __raw_readl(reg);
> +
> +       if (debounce) {
> +               val |= l;
> +               if (cpu_is_omap34xx() || cpu_is_omap44xx())
> +                       clk_enable(bank->dbck);
> +       } else {
> +               val &= ~l;
> +               if (cpu_is_omap34xx() || cpu_is_omap44xx())
> +                       clk_disable(bank->dbck);
> +       }

Hmh, dbck is shared by the whole GPIO bank, so what happens if someone
calls _set_gpio_debounce(bank, 1, 310) and then
_set_gpio_debounce(bank, 2, 0)? This should leave debounce enabled for
GPIO1, but you'll disable dbck on second call. GPIOs 0-31 share the
same bank.

There is also an issue if somebody calls _set_gpio_debounce(bank, 1,
310) and _set_gpio_debounce(bank, 2, 620), the second call will
override debounce setting of GPIO1 (as it's shared by the whole bank).
This might be not what the user intended, would be useful to detect
this and warn the user.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2010-04-01  9:37 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-31 12:27 [RFC/PATCH 0/4] teach gpiolib about gpio debouncing Felipe Balbi
2010-03-31 12:27 ` [RFC/PATCH 1/4] gpiolib: introduce set_debounce method Felipe Balbi
2010-03-31 13:46   ` Mark Brown
2010-03-31 14:50     ` Felipe Balbi
2010-03-31 14:59       ` Felipe Balbi
2010-03-31 15:04         ` Mark Brown
2010-03-31 15:06           ` Felipe Balbi
2010-03-31 15:11             ` Mark Brown
2010-03-31 15:11               ` Felipe Balbi
2010-03-31 12:27 ` [RFC/PATCH 2/4] arm: omap: gpio: implement " Felipe Balbi
2010-03-31 12:56   ` Felipe Balbi
2010-03-31 12:27 ` [RFC/PATCH 3/4] arm: omap: switch over to gpio_set_debounce Felipe Balbi
2010-03-31 12:27 ` [RFC/PATCH 4/4] arm: omap: remove the unused omap_gpio_set_debounce methods Felipe Balbi
2010-03-31 15:35 ` [RFC/PATCHv2 0/4] teach gpiolib about debouncing Felipe Balbi
2010-03-31 15:35 ` [RFC/PATCHv2 1/4] gpiolib: introduce set_debounce method Felipe Balbi
2010-04-02 12:34   ` Mark Brown
2010-05-04 22:40     ` Tony Lindgren
2010-05-05 18:37       ` Felipe Balbi
2010-03-31 15:35 ` [RFC/PATCHv2 2/4] arm: omap: gpio: implement " Felipe Balbi
2010-03-31 16:21   ` Mark Brown
2010-03-31 16:29     ` Felipe Balbi
2010-04-01  5:39       ` Felipe Balbi
2010-04-01  9:29   ` Grazvydas Ignotas [this message]
2010-04-01  9:32     ` Felipe Balbi
2010-04-01  9:37       ` Grazvydas Ignotas
2010-04-01 10:10         ` Felipe Balbi
2010-04-01 11:20           ` Grazvydas Ignotas
2010-04-01 13:11       ` Jani Nikula
2010-04-01 16:42         ` Felipe Balbi
2010-04-01 18:15           ` Mark Brown
2010-04-01 18:19             ` Felipe Balbi
2010-03-31 15:35 ` [RFC/PATCHv2 3/4] arm: omap: switch over to gpio_set_debounce Felipe Balbi
2010-03-31 15:35 ` [RFC/PATCHv2 4/4] arm: omap: remove the unused omap_gpio_set_debounce methods Felipe Balbi

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=y2o6ed0b2681004010229r367aa72fv33746375541cd9da@mail.gmail.com \
    --to=notasas@gmail.com \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=david-b@pacbell.net \
    --cc=felipe.balbi@nokia.com \
    --cc=linux-omap@vger.kernel.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).