From: Felipe Balbi <balbi@ti.com>
To: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
Felipe Balbi <balbi@ti.com>,
linux-omap@vger.kernel.org, Paul Walmsley <paul@pwsan.com>,
linux-arm-kernel@lists.infradead.org,
Igor Grinberg <grinberg@compulab.co.il>
Subject: Re: [PATCH] gpio/omap: fix off-mode bug: clear debounce clock enable mask on disable
Date: Tue, 23 Oct 2012 22:09:14 +0300 [thread overview]
Message-ID: <20121023190914.GA853@arwen.pp.htv.fi> (raw)
In-Reply-To: <1351015771-6308-1-git-send-email-khilman@deeprootsystems.com>
[-- Attachment #1: Type: text/plain, Size: 2354 bytes --]
Hi,
On Tue, Oct 23, 2012 at 11:09:31AM -0700, Kevin Hilman wrote:
> From: Kevin Hilman <khilman@ti.com>
>
> When debounce clocks are disabled, ensure that the banks
> dbck_enable_mask is cleared also. Otherwise, context restore on
> subsequent off-mode transition will restore previous value from the
> shadow copies (bank->context.debounce*) leading to mismatch state
> between driver state and hardware state.
>
> This was discovered when board code was doing
>
> gpio_request_one()
> gpio_set_debounce()
> gpio_free()
>
> which was leaving the GPIO debounce settings in a confused state.
> Then, enabling off mode causing bogus state to be restored, leaving
> GPIO debounce enabled which then prevented the CORE powerdomain from
> transitioning.
>
> Reported-by: Paul Walmsley <paul@pwsan.com>
> Cc: Igor Grinberg <grinberg@compulab.co.il>
> Signed-off-by: Kevin Hilman <khilman@ti.com>
looks like this deserves a Cc: stable@vger.kernel.org tag.
> ---
> Applies on v3.7-rc2, targetted for v3.7.
>
> drivers/gpio/gpio-omap.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> index 94cbc84..dee2856 100644
> --- a/drivers/gpio/gpio-omap.c
> +++ b/drivers/gpio/gpio-omap.c
> @@ -187,6 +187,7 @@ static inline void _gpio_dbck_disable(struct gpio_bank *bank)
> * to detect events and generate interrupts at least on OMAP3.
> */
> __raw_writel(0, bank->base + bank->regs->debounce_en);
> + bank->dbck_enable_mask = 0;
shouldn't omap_gpio_restore_context() check for dbck_enabled instead of
the mask ? I mean:
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index 94cbc84..b3a39a7 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -1371,7 +1371,7 @@ static void omap_gpio_restore_context(struct gpio_bank *bank)
bank->base + bank->regs->dataout);
__raw_writel(bank->context.oe, bank->base + bank->regs->direction);
- if (bank->dbck_enable_mask) {
+ if (bank->dbck_enabled) {
__raw_writel(bank->context.debounce, bank->base +
bank->regs->debounce);
__raw_writel(bank->context.debounce_en,
the outcome would be the same, so it doesn't really matter. Just that,
at least to me, it would look better.
No strong feelings though.
--
balbi
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: balbi@ti.com (Felipe Balbi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] gpio/omap: fix off-mode bug: clear debounce clock enable mask on disable
Date: Tue, 23 Oct 2012 22:09:14 +0300 [thread overview]
Message-ID: <20121023190914.GA853@arwen.pp.htv.fi> (raw)
In-Reply-To: <1351015771-6308-1-git-send-email-khilman@deeprootsystems.com>
Hi,
On Tue, Oct 23, 2012 at 11:09:31AM -0700, Kevin Hilman wrote:
> From: Kevin Hilman <khilman@ti.com>
>
> When debounce clocks are disabled, ensure that the banks
> dbck_enable_mask is cleared also. Otherwise, context restore on
> subsequent off-mode transition will restore previous value from the
> shadow copies (bank->context.debounce*) leading to mismatch state
> between driver state and hardware state.
>
> This was discovered when board code was doing
>
> gpio_request_one()
> gpio_set_debounce()
> gpio_free()
>
> which was leaving the GPIO debounce settings in a confused state.
> Then, enabling off mode causing bogus state to be restored, leaving
> GPIO debounce enabled which then prevented the CORE powerdomain from
> transitioning.
>
> Reported-by: Paul Walmsley <paul@pwsan.com>
> Cc: Igor Grinberg <grinberg@compulab.co.il>
> Signed-off-by: Kevin Hilman <khilman@ti.com>
looks like this deserves a Cc: stable at vger.kernel.org tag.
> ---
> Applies on v3.7-rc2, targetted for v3.7.
>
> drivers/gpio/gpio-omap.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
> index 94cbc84..dee2856 100644
> --- a/drivers/gpio/gpio-omap.c
> +++ b/drivers/gpio/gpio-omap.c
> @@ -187,6 +187,7 @@ static inline void _gpio_dbck_disable(struct gpio_bank *bank)
> * to detect events and generate interrupts at least on OMAP3.
> */
> __raw_writel(0, bank->base + bank->regs->debounce_en);
> + bank->dbck_enable_mask = 0;
shouldn't omap_gpio_restore_context() check for dbck_enabled instead of
the mask ? I mean:
diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index 94cbc84..b3a39a7 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -1371,7 +1371,7 @@ static void omap_gpio_restore_context(struct gpio_bank *bank)
bank->base + bank->regs->dataout);
__raw_writel(bank->context.oe, bank->base + bank->regs->direction);
- if (bank->dbck_enable_mask) {
+ if (bank->dbck_enabled) {
__raw_writel(bank->context.debounce, bank->base +
bank->regs->debounce);
__raw_writel(bank->context.debounce_en,
the outcome would be the same, so it doesn't really matter. Just that,
at least to me, it would look better.
No strong feelings though.
--
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121023/607d8ee1/attachment.sig>
next prev parent reply other threads:[~2012-10-23 19:15 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-23 18:09 [PATCH] gpio/omap: fix off-mode bug: clear debounce clock enable mask on disable Kevin Hilman
2012-10-23 18:09 ` Kevin Hilman
2012-10-23 19:09 ` Felipe Balbi [this message]
2012-10-23 19:09 ` Felipe Balbi
2012-10-23 22:00 ` Kevin Hilman
2012-10-23 22:00 ` Kevin Hilman
2012-10-24 7:39 ` Felipe Balbi
2012-10-24 7:39 ` Felipe Balbi
2012-10-24 7:33 ` Santosh Shilimkar
2012-10-24 7:33 ` Santosh Shilimkar
2012-10-24 8:16 ` Linus Walleij
2012-10-24 8:16 ` Linus Walleij
2012-10-24 8:56 ` Igor Grinberg
2012-10-24 8:56 ` Igor Grinberg
2012-10-24 12:02 ` Grazvydas Ignotas
2012-10-24 12:02 ` Grazvydas Ignotas
2012-10-24 12:49 ` Santosh Shilimkar
2012-10-24 12:49 ` Santosh Shilimkar
2012-10-24 13:40 ` Grazvydas Ignotas
2012-10-24 13:40 ` Grazvydas Ignotas
2012-10-24 14:19 ` Kevin Hilman
2012-10-24 14:19 ` Kevin Hilman
2012-10-24 14:38 ` Santosh Shilimkar
2012-10-24 14:38 ` Santosh Shilimkar
2012-10-26 7:21 ` Linus Walleij
2012-10-26 7:21 ` 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=20121023190914.GA853@arwen.pp.htv.fi \
--to=balbi@ti.com \
--cc=grinberg@compulab.co.il \
--cc=khilman@deeprootsystems.com \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.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.