From: Santosh Shilimkar <santosh.shilimkar@ti.com>
To: Grazvydas Ignotas <notasas@gmail.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>,
Paul Walmsley <paul@pwsan.com>,
Linus Walleij <linus.walleij@linaro.org>,
Felipe Balbi <balbi@ti.com>,
Igor Grinberg <grinberg@compulab.co.il>,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] gpio/omap: fix off-mode bug: clear debounce clock enable mask on disable
Date: Wed, 24 Oct 2012 18:19:29 +0530 [thread overview]
Message-ID: <5087E3D9.6040007@ti.com> (raw)
In-Reply-To: <CANOLnOOUHJg5W9VbHhnK8ta+Bys_oMpSz9M5jQ0xCeOB1gxtdg@mail.gmail.com>
On Wednesday 24 October 2012 05:32 PM, Grazvydas Ignotas wrote:
> On Tue, Oct 23, 2012 at 9:09 PM, Kevin Hilman
> <khilman@deeprootsystems.com> 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 doesn't look right to me, aren't you effectively disabling
> debounce forever here? _gpio_dbck_disable is called from
> omap_gpio_runtime_suspend() and nothing will ever restore
> dbck_enable_mask back to what it was set by _set_gpio_debounce and
> debounce functionality is lost.
>
As per commit log, the issue seen with request->debounce->free()
sequence and hence on free, debounce state needs to be cleared.
Next gpio_set_debounce() should set the debounce mask right so
the patch seems to be right.
>>
>> 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.
>>
But there is one more case which might break because of this patch.
As part of idle, we might end up with below without gpio_free()
omap2_gpio_prepare_for_idle()
->pm_runtime_put_sync_suspend()
-> omap_gpio_runtime_suspend()
->_gpio_dbck_disable()
And last call will clear the debounce mask state which will lost and
hence the debounce clock won't be enabled on resume.
I let Kevin comment whether this is the valid case or not.
Regards
Santosh
WARNING: multiple messages have this Message-ID (diff)
From: santosh.shilimkar@ti.com (Santosh Shilimkar)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH] gpio/omap: fix off-mode bug: clear debounce clock enable mask on disable
Date: Wed, 24 Oct 2012 18:19:29 +0530 [thread overview]
Message-ID: <5087E3D9.6040007@ti.com> (raw)
In-Reply-To: <CANOLnOOUHJg5W9VbHhnK8ta+Bys_oMpSz9M5jQ0xCeOB1gxtdg@mail.gmail.com>
On Wednesday 24 October 2012 05:32 PM, Grazvydas Ignotas wrote:
> On Tue, Oct 23, 2012 at 9:09 PM, Kevin Hilman
> <khilman@deeprootsystems.com> 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 doesn't look right to me, aren't you effectively disabling
> debounce forever here? _gpio_dbck_disable is called from
> omap_gpio_runtime_suspend() and nothing will ever restore
> dbck_enable_mask back to what it was set by _set_gpio_debounce and
> debounce functionality is lost.
>
As per commit log, the issue seen with request->debounce->free()
sequence and hence on free, debounce state needs to be cleared.
Next gpio_set_debounce() should set the debounce mask right so
the patch seems to be right.
>>
>> 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.
>>
But there is one more case which might break because of this patch.
As part of idle, we might end up with below without gpio_free()
omap2_gpio_prepare_for_idle()
->pm_runtime_put_sync_suspend()
-> omap_gpio_runtime_suspend()
->_gpio_dbck_disable()
And last call will clear the debounce mask state which will lost and
hence the debounce clock won't be enabled on resume.
I let Kevin comment whether this is the valid case or not.
Regards
Santosh
next prev parent reply other threads:[~2012-10-24 12:49 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
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 [this message]
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=5087E3D9.6040007@ti.com \
--to=santosh.shilimkar@ti.com \
--cc=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=notasas@gmail.com \
--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.