From: toddpoynor@google.com (Todd Poynor)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 REPOST 18/20] gpio/omap: use pm-runtime framework
Date: Thu, 28 Jul 2011 10:00:29 -0700 [thread overview]
Message-ID: <20110728170029.GA9819@google.com> (raw)
In-Reply-To: <5A47E75E594F054BAF48C5E4FC4B92AB037C2030F7@dbde02.ent.ti.com>
On Thu, Jul 28, 2011 at 03:05:29PM +0530, DebBarma, Tarun Kanti wrote:
> > ...
> > Looking at omap_gpio_mod_init() it seems like much of its processing
> > could probably be done once at probe time (or at pm_runtime_get_sync
> > time) as well, namely setting the IRQ enable masks.
> This must be called at the beginning of bank access to get reset state.
> Otherwise, it would contain settings related to previous bank access.
What state may have changed between the last time a pin was released
from the bank and the next time a pin is requested in the bank? Prior
to this patch, omap_gpio_mod_init() is called once at probe time, and
initializing irqenable masks etc. isn't reset at the beginning of bank
access, if I understand correctly.
If it's not actually necessary to do this on each first request to the
bank then it's not a large overhead or anything, but want to make sure
the PM operations being performed are correct. This patch is
basically to runtime PM enable the GPIO bank when a pin is requested,
and disable when no pin is requested. If other actions beyond the
runtime PM enable are needed, now that a runtime PM disable is added,
then it calls into question whether the enable method is missing
something. More troubling are the PM actions performed in addition to
pm_runtime_get_sync...
> > Ungating the interface clock, enabling wakeup, setting smart idle for
> > the module, and enabling the (old-style) system clock seem like either
> > one-time actions at probe, or a part of the pm_runtime_get_sync
> > callback.
> Yes... sysconfig related settings are done by hwmod framework.
> Debounce clocks are enabled in callback.
>
> >
> > Or is there some other reason these power management actions should be
> > taken each time a GPIO is requested in the block (when none were
> > previously requested), after the runtime PM get_sync callback, but
> > not as part of the get_sync callback? If so, what caused
> > the smart idle setting to be lost, or the interface clock gated, if
> > not the pm_runtime_put_sync?
> I am not sure which smart idle setting you are referring to.
That's part of what the magic constant in this statement is doing:
__raw_writew(0x0014, bank->base
+ OMAP1610_GPIO_SYSCONFIG);
> Most stuffs done in *_get_sync() callback can skip first time.
> Omap_gpio_mod_init() does resetting irqenable settings to reset value.
> This should not be part of callback.
To be clear, it seems like resetting irqenable settings should be a
one-time action at probe time. The power management actions such as
enabling debounce clocks, setting module PRCM idle protocol behavior,
and ungating interface clocks seem like they should either be one-time
probe actions, or a part of the runtime PM callbacks, or balanced with
corresponding actions when the last pin in the bank is released.
Else what caused the interface clock to gate, or the slave idle
control to change, or the debounce clock to be cut? The only thing
added here that would do that is the pm_runtime_put_sync. If it can
cause those actions then do other calls to pm_runtime_get_sync need to
fix these up?
Anyhow, mainly wanted to point that out as a possible optimization.
It's pretty unlikely there's an actual problem here.
Todd
next prev parent reply other threads:[~2011-07-28 17:00 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-16 8:15 [PATCH v4 REPOST 00/20] gpio/omap: driver cleanup and fixes Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 01/20] gpio/omap: remove dependency on gpio_bank_count Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 02/20] gpio/omap: use flag to identify wakeup domain Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 03/20] gpio/omap: make gpio_context part of gpio_bank structure Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 04/20] gpio/omap: fix pwrdm_post_transition call sequence Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 05/20] gpio/omap: handle save/restore ctx in GPIO driver Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 06/20] gpio/omap: make non-wakeup GPIO part of pdata Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 07/20] gpio/omap: avoid cpu checks during module ena/disable Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 08/20] gpio/omap: further cleanup using wakeup_status register Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 09/20] gpio/omap: cleanup omap1 related macros Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 10/20] gpio/omap: use level/edge detect reg offsets Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 11/20] gpio/omap: remove hardcoded offsets in ctxt save/restore Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 12/20] gpio/omap: cleanup set_gpio_triggering function Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 13/20] gpio/omap: cleanup omap_gpio_mod_init function Tarun Kanti DebBarma
2011-07-16 18:26 ` Todd Poynor
2011-07-20 7:07 ` DebBarma, Tarun Kanti
2011-07-16 8:15 ` [PATCH v4 REPOST 14/20] gpio/omap: use pinctrl offset instead of macro Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 15/20] gpio/omap: use readl in irq_handler for all access Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 16/20] gpio/omap: remove bank->method & METHOD_* macros Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 17/20] gpio/omap: fix bankwidth for OMAP7xx MPUIO Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 18/20] gpio/omap: use pm-runtime framework Tarun Kanti DebBarma
2011-07-16 19:07 ` Todd Poynor
2011-07-20 10:08 ` DebBarma, Tarun Kanti
2011-07-27 11:44 ` DebBarma, Tarun Kanti
2011-07-28 7:43 ` Todd Poynor
2011-07-28 9:35 ` DebBarma, Tarun Kanti
2011-07-28 17:00 ` Todd Poynor [this message]
2011-07-29 10:45 ` DebBarma, Tarun Kanti
2011-07-29 10:55 ` DebBarma, Tarun Kanti
2011-07-16 8:15 ` [PATCH v4 REPOST 19/20] gpio/omap: optimize suspend and resume functions Tarun Kanti DebBarma
2011-07-16 8:15 ` [PATCH v4 REPOST 20/20] gpio/omap: cleanup prepare_for_idle and resume_after_idle Tarun Kanti DebBarma
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=20110728170029.GA9819@google.com \
--to=toddpoynor@google.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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).