From: t-kristo@ti.com (Tero Kristo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv4 5/6] ARM: OMAP3PLUS PM: Add IO Daisychain support via hwmod mux
Date: Tue, 6 Mar 2012 10:51:50 +0200 [thread overview]
Message-ID: <1331023910.2116.155.camel@sokoban> (raw)
In-Reply-To: <4F5590D6.8030707@ti.com>
On Tue, 2012-03-06 at 09:51 +0530, Rajendra Nayak wrote:
> Hi Paul,
>
> On Tuesday 06 March 2012 09:32 AM, Paul Walmsley wrote:
> > Hi
> >
> > a few comments:
> >
> > On Fri, 2 Mar 2012, Tero Kristo wrote:
> >
> >> From: Vishwanath BS<vishwanath.bs@ti.com>
> >>
> >> IO Daisychain feature has to be triggered whenever there is a change in
> >> device's mux configuration (See section 3.9.4 in OMAP4 Public TRM vP).
> >>
> >> Now devices can idle independent of the powerdomain, there can be a
> >> window where device is idled and corresponding powerdomain can be
> >> ON/INACTIVE state. In such situations, since both module wake up is
> >> enabled at padlevel as well as io daisychain sequence is triggered,
> >> there will be 2 PRCM interrupts (Module async wake up via swakeup and
> >> IO Pad interrupt). But as PRCM Interrupt handler clears the Module
> >> Padlevel WKST bit in the first interrupt, module specific interrupt
> >> handler will not triggered for the second time
> >>
> >> Also look at detailed explanation given by Rajendra at
> >> http://www.spinics.net/lists/linux-serial/msg04480.html
> >>
> >> Signed-off-by: Vishwanath BS<vishwanath.bs@ti.com>
> >> Signed-off-by: Tero Kristo<t-kristo@ti.com>
> >> ---
> >> arch/arm/mach-omap2/omap_hwmod.c | 9 +++++++--
> >> arch/arm/mach-omap2/pm.c | 15 +++++++++++++++
> >> arch/arm/mach-omap2/pm.h | 1 +
> >> 3 files changed, 23 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
> >> index 5192cab..56adbfb 100644
> >> --- a/arch/arm/mach-omap2/omap_hwmod.c
> >> +++ b/arch/arm/mach-omap2/omap_hwmod.c
> >
> > ...
> >
> >> @@ -1535,8 +1536,10 @@ static int _enable(struct omap_hwmod *oh)
> >> /* Mux pins for device runtime if populated */
> >> if (oh->mux&& (!oh->mux->enabled ||
> >> ((oh->_state == _HWMOD_STATE_IDLE)&&
> >> - oh->mux->pads_dynamic)))
> >> + oh->mux->pads_dynamic))) {
> >> omap_hwmod_mux(oh->mux, _HWMOD_STATE_ENABLED);
> >> + omap_trigger_io_chain();
> >
> > Looks racy: if two hwmods with dynamic mux entries go idle at the same
> > time, or one goes idle while another one is enabled, won't the calls to
> > omap_trigger_io_chain() race? Locking is per-hwmod and there's no locking
> > in omap_trigger_io_chain() or the functions it calls.
>
> I agree, this needs locking to avoid races.
I'll add one for v5.
>
> >
> > Also, won't this result in needless resets of the I/O chain? Seems like
> > we'd only need to do this when the next power state of the enclosing
> > powerdomain will enter either RETENTION or OFF. And even then, it
> > presumably should only happen when the last active device in that
> > powerdomain is going idle?
>
> Yes, the module async wakeups will work as long as the power domain
> enclosing the module is not in OSWR or OFF, so ideally this trigger
> should happen only when all modules in the given powerdomain are
> disabled and we plan to program the Powerdomain down to OSWR or
> OFF state. With what we are doing today we end up with periods when we
> have multiple wakeups (a module wakeup as well as an IO wakeup).
> The last we discussed this with Kevin, there wasn't a better place where
> we could trigger this, with no usecounting at powerdomain level you
> didn't know when the last active device in the powerdomain was going
> idle.
> But now with Tero's series which adds usecounting at power/voltage
> domain level, maybe its possible, but I need to look more.
> Do you already have an idea on where this would fit better, so we
> avoid this multiple wakeup scenario?
This should be easy, we can add a hook at the pwrdm_clkdm_enable /
disable calls to check against idle / active states. However, seeing the
acceptance status for the usecounting series, we probably have to just
go ahead with the extra latency involved iochain series and make
optimizations later once the usecounting can be accepted.
Speaking of the usecounting series, Paul, did you have any time to look
at it? Also, there are still some issues seen by Kevin on that series
with omap3430 which I am unable to reproduce (I posted a couple of trial
patches for taking care of that but don't know how they behave.)
-Tero
next prev parent reply other threads:[~2012-03-06 8:51 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-02 15:17 [PATCHv4 0/6] ARM: OMAP3+: IO daisychain support fixes Tero Kristo
2012-03-02 15:17 ` [PATCHv4 1/6] ARM: OMAP3 PM: correct enable/disable of daisy io chain Tero Kristo
2012-03-06 2:59 ` Paul Walmsley
2012-03-06 3:53 ` Rajendra Nayak
2012-03-06 3:59 ` Rajendra Nayak
2012-03-06 4:13 ` Paul Walmsley
2012-03-06 4:32 ` Rajendra Nayak
2012-03-02 15:17 ` [PATCHv4 2/6] ARM: OMAP3 PM: Move IO Daisychain function to omap3 prm file Tero Kristo
2012-03-06 5:44 ` Nishanth Menon
2012-03-06 6:00 ` Rajendra Nayak
2012-03-06 8:41 ` Tero Kristo
2012-03-02 15:17 ` [PATCHv4 3/6] ARM: OMAP4 PM: Add IO Daisychain support Tero Kristo
2012-03-02 15:17 ` [PATCHv4 4/6] ARM: OMAP3+: PRM: Enable IO wake up Tero Kristo
2012-03-06 4:21 ` Paul Walmsley
2012-03-06 4:50 ` Rajendra Nayak
2012-03-06 4:56 ` Rajendra Nayak
2012-03-06 8:44 ` Tero Kristo
2012-03-06 14:10 ` Tero Kristo
2012-03-02 15:17 ` [PATCHv4 5/6] ARM: OMAP3PLUS PM: Add IO Daisychain support via hwmod mux Tero Kristo
2012-03-06 4:02 ` Paul Walmsley
2012-03-06 4:21 ` Rajendra Nayak
2012-03-06 8:51 ` Tero Kristo [this message]
2012-03-02 15:17 ` [PATCHv4 6/6] ARM: OMAP3 PM: Remove IO Daisychain control from cpuidle Tero Kristo
2012-03-05 10:01 ` [PATCHv4 0/6] ARM: OMAP3+: IO daisychain support fixes Rajendra Nayak
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=1331023910.2116.155.camel@sokoban \
--to=t-kristo@ti.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).