All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Bedia, Vaibhav" <vaibhav.bedia@ti.com>
To: Kevin Hilman <khilman@deeprootsystems.com>
Cc: "linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
	"paul@pwsan.com" <paul@pwsan.com>,
	"Cousson, Benoit" <b-cousson@ti.com>,
	"tony@atomide.com" <tony@atomide.com>
Subject: RE: [PATCH 11/15] ARM: OMAP: timer: Interchange clksrc and clkevt for AM33XX
Date: Tue, 6 Nov 2012 14:33:20 +0000	[thread overview]
Message-ID: <B5906170F1614E41A8A28DE3B8D121433EC054F1@DBDE01.ent.ti.com> (raw)
In-Reply-To: <87pq3s7wro.fsf@deeprootsystems.com>

Hi Kevin,

On Mon, Nov 05, 2012 at 23:33:07, Kevin Hilman wrote:
> "Bedia, Vaibhav" <vaibhav.bedia@ti.com> writes:
> 
> > On Sat, Nov 03, 2012 at 18:34:30, Kevin Hilman wrote:
> > [...]
> >> >>
> >> >> Doesn't this also mean that you won't get timer wakeups
> >> >> in idle?  Or are you keeping the domain where the clockevent is
> >> >> on during idle?
> >> >>
> >> >
> >> > The lowest idle state that we are targeting will have MPU powered
> >> > off with external memory in self-refresh mode. Peripheral domain
> >> > with the clockevent will be kept on.
> >> 
> >> Is this a limitation of the hardware?  or the software?
> >> 
> >
> > Well, making the lowest idle state same as the suspend state will
> > require us to involve WKUP_M3 in the idle path and wakeup sources get
> > limited to the IPs in the WKUP domain alone. There's no IO daisy
> > chaining in AM33XX so that's one big difference compared to OMAP.  The
> > other potential problem is that the IPC mechanism that we have uses
> > interrupts.
> 
> It can still interrupt the M3, it's only the interrupt back to the MPU
> that is the issue, right?  That being said, there's no reason it
> couldn't use polling in the idle path, right?  
> 

Yes we could use polling but I think we have a bigger problem in the
chip architecture.

> > Assuming that the lowest idle state, say Cx, is the same as the
> > suspend state, we'll need to communicate with the WKUP_M3 using
> > interrupts once we decide to enter Cx. I am not sure if we can do
> > something in the cpuidle implementation to work around the "interrupt
> > for idle" problem. 
> >
> > We could probably not wait for an ACK when we want to enter Cx, 
> 
> why not?
> 
> Are the response times from the M3 really up to 500ms (guessing based on
> the timeout you used in the suspend path.)  That seems rather unlikely.
> 

No 500ms is too high. Actual delays would be much lower, I need to check
with the design team on the expected number.

> Hmm, but as I think about it.  Why does the MPU need to wait for an ACK
> at all?  Why not just send the cmd and WFI?
> 

I have myself being going back and forth on this. There are lot of things
that we do in software, DDR being one of them. We can't do some of the
DDR related stuff unless memory enter self-refresh AND EMIF gets disabled.
Doing so essentially means that the drivers have entered sort of suspend
state. Given this h/w limitation I don't see how we could handle without
impacting a running system.

> > but the problem of limited wakeup sources remains. If we let the
> > various drivers block the entry to Cx, since almost all the IPs are in
> > the peripheral domain a system which uses anything other than UART and
> > Timer in WKUP domain will probably never be able enter Cx.
> 
> Even so, I think the system needs to be designed to hit the same power
> states in idle and suspend.  Then, the states can be restricted based
> wakeup capabilities as you described.  This would be easy to do in the
> runtime PM implementation for this device.
> 
> IMO, assuming that idle will not be useful from the begining is leading
> down the path to poor design choices that will be much more difficult to
> fixup down the road in order to add idle support later.  We need to
> design both idle and suspend at the same time.
> 

Getting PER to transition on a running system is something I can't figure out.
Maybe MPU OFF is the lowest we can go.

> Also, don't forget about GPIO0.  Systems could easily be built such that
> peripherals which want to wakeup but don't have native wakeup
> capabilities could use a GPIO in bank 0 to wake the system.
> 
> Similarily, I2C0 is in WKUP, and brought out to capes, so some simple
> designs with with I2C devices on a cape might be perfectly capable of
> hitting deep power states in idle.
> 

Ok this is interesting. AFAIK I2C wakeup requires the device to be operating
in slave mode. If so, is this something that's already supported on OMAP?

Regards,
Vaibhav

WARNING: multiple messages have this Message-ID (diff)
From: vaibhav.bedia@ti.com (Bedia, Vaibhav)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 11/15] ARM: OMAP: timer: Interchange clksrc and clkevt for AM33XX
Date: Tue, 6 Nov 2012 14:33:20 +0000	[thread overview]
Message-ID: <B5906170F1614E41A8A28DE3B8D121433EC054F1@DBDE01.ent.ti.com> (raw)
In-Reply-To: <87pq3s7wro.fsf@deeprootsystems.com>

Hi Kevin,

On Mon, Nov 05, 2012 at 23:33:07, Kevin Hilman wrote:
> "Bedia, Vaibhav" <vaibhav.bedia@ti.com> writes:
> 
> > On Sat, Nov 03, 2012 at 18:34:30, Kevin Hilman wrote:
> > [...]
> >> >>
> >> >> Doesn't this also mean that you won't get timer wakeups
> >> >> in idle?  Or are you keeping the domain where the clockevent is
> >> >> on during idle?
> >> >>
> >> >
> >> > The lowest idle state that we are targeting will have MPU powered
> >> > off with external memory in self-refresh mode. Peripheral domain
> >> > with the clockevent will be kept on.
> >> 
> >> Is this a limitation of the hardware?  or the software?
> >> 
> >
> > Well, making the lowest idle state same as the suspend state will
> > require us to involve WKUP_M3 in the idle path and wakeup sources get
> > limited to the IPs in the WKUP domain alone. There's no IO daisy
> > chaining in AM33XX so that's one big difference compared to OMAP.  The
> > other potential problem is that the IPC mechanism that we have uses
> > interrupts.
> 
> It can still interrupt the M3, it's only the interrupt back to the MPU
> that is the issue, right?  That being said, there's no reason it
> couldn't use polling in the idle path, right?  
> 

Yes we could use polling but I think we have a bigger problem in the
chip architecture.

> > Assuming that the lowest idle state, say Cx, is the same as the
> > suspend state, we'll need to communicate with the WKUP_M3 using
> > interrupts once we decide to enter Cx. I am not sure if we can do
> > something in the cpuidle implementation to work around the "interrupt
> > for idle" problem. 
> >
> > We could probably not wait for an ACK when we want to enter Cx, 
> 
> why not?
> 
> Are the response times from the M3 really up to 500ms (guessing based on
> the timeout you used in the suspend path.)  That seems rather unlikely.
> 

No 500ms is too high. Actual delays would be much lower, I need to check
with the design team on the expected number.

> Hmm, but as I think about it.  Why does the MPU need to wait for an ACK
> at all?  Why not just send the cmd and WFI?
> 

I have myself being going back and forth on this. There are lot of things
that we do in software, DDR being one of them. We can't do some of the
DDR related stuff unless memory enter self-refresh AND EMIF gets disabled.
Doing so essentially means that the drivers have entered sort of suspend
state. Given this h/w limitation I don't see how we could handle without
impacting a running system.

> > but the problem of limited wakeup sources remains. If we let the
> > various drivers block the entry to Cx, since almost all the IPs are in
> > the peripheral domain a system which uses anything other than UART and
> > Timer in WKUP domain will probably never be able enter Cx.
> 
> Even so, I think the system needs to be designed to hit the same power
> states in idle and suspend.  Then, the states can be restricted based
> wakeup capabilities as you described.  This would be easy to do in the
> runtime PM implementation for this device.
> 
> IMO, assuming that idle will not be useful from the begining is leading
> down the path to poor design choices that will be much more difficult to
> fixup down the road in order to add idle support later.  We need to
> design both idle and suspend at the same time.
> 

Getting PER to transition on a running system is something I can't figure out.
Maybe MPU OFF is the lowest we can go.

> Also, don't forget about GPIO0.  Systems could easily be built such that
> peripherals which want to wakeup but don't have native wakeup
> capabilities could use a GPIO in bank 0 to wake the system.
> 
> Similarily, I2C0 is in WKUP, and brought out to capes, so some simple
> designs with with I2C devices on a cape might be perfectly capable of
> hitting deep power states in idle.
> 

Ok this is interesting. AFAIK I2C wakeup requires the device to be operating
in slave mode. If so, is this something that's already supported on OMAP?

Regards,
Vaibhav

  parent reply	other threads:[~2012-11-06 14:33 UTC|newest]

Thread overview: 218+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-02 12:32 [RFC 00/15] Add basic suspend-resume support for AM33XX Vaibhav Bedia
2012-11-02 12:32 ` Vaibhav Bedia
2012-11-02 12:32 ` [PATCH 01/15] ARM: OMAP2+: mailbox: Add an API for flushing the FIFO Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-02 19:00   ` Tony Lindgren
2012-11-02 19:00     ` Tony Lindgren
2012-11-03  8:24     ` Bedia, Vaibhav
2012-11-03  8:24       ` Bedia, Vaibhav
2012-11-03 16:03   ` Santosh Shilimkar
2012-11-03 16:03     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-05 14:59       ` Santosh Shilimkar
2012-11-05 14:59         ` Santosh Shilimkar
2012-11-02 12:32 ` [PATCH 02/15] ARM: OMAP2+: mailbox: Add support for AM33XX Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03  0:14   ` Russ Dill
2012-11-03  0:14     ` Russ Dill
2012-11-03  8:39     ` Bedia, Vaibhav
2012-11-03  8:39       ` Bedia, Vaibhav
2012-11-03 13:48     ` Bedia, Vaibhav
2012-11-03 13:48       ` Bedia, Vaibhav
2012-11-03 16:10   ` Santosh Shilimkar
2012-11-03 16:10     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-05 15:00       ` Santosh Shilimkar
2012-11-05 15:00         ` Santosh Shilimkar
2012-11-02 12:32 ` [PATCH 03/15] ARM: OMAP: mailbox: Convert to device_initcall Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 16:12   ` Santosh Shilimkar
2012-11-03 16:12     ` Santosh Shilimkar
2012-11-02 12:32 ` [PATCH 04/15] ARM: OMAP2+: hwmod: Update the reset API for AM33XX Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-05  6:58   ` Vaibhav Hiremath
2012-11-05  6:58     ` Vaibhav Hiremath
2012-11-05 17:57     ` Bedia, Vaibhav
2012-11-05 17:57       ` Bedia, Vaibhav
2012-11-06  6:06       ` Hiremath, Vaibhav
2012-11-06  6:06         ` Hiremath, Vaibhav
2012-11-06  7:19         ` Bedia, Vaibhav
2012-11-06  7:19           ` Bedia, Vaibhav
2012-11-02 12:32 ` [PATCH 05/15] ARM: OMAP2+: AM33XX: Update WKUP_M3 hwmod entry for reset status Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 16:15   ` Santosh Shilimkar
2012-11-03 16:15     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-05  6:59   ` Vaibhav Hiremath
2012-11-05  6:59     ` Vaibhav Hiremath
2012-11-02 12:32 ` [PATCH 06/15] ARM: OMAP2+: hwmod: Enable OCMCRAM registration in AM33XX Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 16:16   ` Santosh Shilimkar
2012-11-03 16:16     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-05  7:23   ` Vaibhav Hiremath
2012-11-05  7:23     ` Vaibhav Hiremath
2012-11-05 17:57     ` Bedia, Vaibhav
2012-11-05 17:57       ` Bedia, Vaibhav
2012-11-06  6:07       ` Hiremath, Vaibhav
2012-11-06  6:07         ` Hiremath, Vaibhav
2012-11-02 12:32 ` [PATCH 07/15] ARM: OMAP2+: hwmod: Update the hwmod data for TPTCs " Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-05  7:19   ` Vaibhav Hiremath
2012-11-05  7:19     ` Vaibhav Hiremath
2012-11-02 12:32 ` [PATCH 08/15] ARM: OMAP2+: hwmod: Fix the omap_hwmod_addr_space for CPGMAC0 Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 16:18   ` Santosh Shilimkar
2012-11-03 16:18     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-05  9:10     ` Bedia, Vaibhav
2012-11-05  9:10       ` Bedia, Vaibhav
2012-11-06  9:29       ` Vaibhav Hiremath
2012-11-06  9:29         ` Vaibhav Hiremath
2012-11-06 10:09         ` Bedia, Vaibhav
2012-11-06 10:09           ` Bedia, Vaibhav
2012-11-06 13:08           ` Hiremath, Vaibhav
2012-11-06 13:08             ` Hiremath, Vaibhav
2012-11-06 13:46             ` Bedia, Vaibhav
2012-11-06 13:46               ` Bedia, Vaibhav
2012-11-06 13:50               ` Benoit Cousson
2012-11-06 13:50                 ` Benoit Cousson
2012-11-06 13:56                 ` Bedia, Vaibhav
2012-11-06 13:56                   ` Bedia, Vaibhav
2012-11-02 12:32 ` [PATCH 09/15] ARM: OMAP: AM33XX: Remove unnecessary include and use __ASSEMBLER__ macros Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 16:29   ` Santosh Shilimkar
2012-11-03 16:29     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-02 12:32 ` [PATCH 10/15] ARM: OMAP2+: control: Add some AM33XX Control module registers Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-02 12:32 ` [PATCH 11/15] ARM: OMAP: timer: Interchange clksrc and clkevt for AM33XX Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 11:43   ` Kevin Hilman
2012-11-03 11:43     ` Kevin Hilman
2012-11-03 12:47     ` Bedia, Vaibhav
2012-11-03 12:47       ` Bedia, Vaibhav
2012-11-03 13:04       ` Kevin Hilman
2012-11-03 13:04         ` Kevin Hilman
2012-11-03 13:48         ` Bedia, Vaibhav
2012-11-03 13:48           ` Bedia, Vaibhav
2012-11-05 18:03           ` Kevin Hilman
2012-11-05 18:03             ` Kevin Hilman
2012-11-05 21:59             ` Santosh Shilimkar
2012-11-05 21:59               ` Santosh Shilimkar
2012-11-06 14:38               ` Bedia, Vaibhav
2012-11-06 14:38                 ` Bedia, Vaibhav
2012-11-08 13:15               ` Bedia, Vaibhav
2012-11-08 13:15                 ` Bedia, Vaibhav
2012-11-06 14:33             ` Bedia, Vaibhav [this message]
2012-11-06 14:33               ` Bedia, Vaibhav
2012-11-03 16:22   ` Kevin Hilman
2012-11-03 16:22     ` Kevin Hilman
2012-11-05  4:40     ` Bedia, Vaibhav
2012-11-05  4:40       ` Bedia, Vaibhav
2012-11-03 16:31   ` Santosh Shilimkar
2012-11-03 16:31     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-08 20:41   ` Jon Hunter
2012-11-08 20:41     ` Jon Hunter
2012-11-12 22:54     ` Tony Lindgren
2012-11-12 22:54       ` Tony Lindgren
2012-11-02 12:32 ` [PATCH 12/15] ARM: OMAP: timer: Add suspend-resume callbacks for clockevent device Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 12:15   ` Kevin Hilman
2012-11-03 12:15     ` Kevin Hilman
2012-11-03 13:17     ` Bedia, Vaibhav
2012-11-03 13:17       ` Bedia, Vaibhav
2012-11-03 13:41       ` Kevin Hilman
2012-11-03 13:41         ` Kevin Hilman
2012-11-03 14:03         ` Bedia, Vaibhav
2012-11-03 14:03           ` Bedia, Vaibhav
2012-11-05 21:20       ` Jon Hunter
2012-11-05 21:20         ` Jon Hunter
2012-11-06  9:38         ` Bedia, Vaibhav
2012-11-06  9:38           ` Bedia, Vaibhav
2012-11-06 16:02           ` Jon Hunter
2012-11-06 16:02             ` Jon Hunter
2012-11-03 15:52   ` Santosh Shilimkar
2012-11-03 15:52     ` Santosh Shilimkar
2012-11-04 15:25     ` Bedia, Vaibhav
2012-11-04 15:25       ` Bedia, Vaibhav
2012-11-05 14:55       ` Santosh Shilimkar
2012-11-05 14:55         ` Santosh Shilimkar
2012-11-05 21:04   ` Jon Hunter
2012-11-05 21:04     ` Jon Hunter
2012-11-06  7:32     ` Bedia, Vaibhav
2012-11-06  7:32       ` Bedia, Vaibhav
2012-11-06 16:00       ` Jon Hunter
2012-11-06 16:00         ` Jon Hunter
2012-11-02 12:32 ` [PATCH 13/15] ARM: DTS: AM33XX: Add nodes for OCMCRAM and Mailbox Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 12:16   ` Kevin Hilman
2012-11-03 12:16     ` Kevin Hilman
2012-11-03 13:17     ` Bedia, Vaibhav
2012-11-03 13:17       ` Bedia, Vaibhav
2012-11-03 15:54   ` Santosh Shilimkar
2012-11-03 15:54     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-05 14:53       ` Santosh Shilimkar
2012-11-05 14:53         ` Santosh Shilimkar
2012-11-05 17:57         ` Bedia, Vaibhav
2012-11-05 17:57           ` Bedia, Vaibhav
2012-11-05 19:29           ` Kevin Hilman
2012-11-05 19:29             ` Kevin Hilman
2012-11-05 21:19             ` Santosh Shilimkar
2012-11-05 21:19               ` Santosh Shilimkar
2012-11-05 21:45               ` Santosh Shilimkar
2012-11-05 21:45                 ` Santosh Shilimkar
2012-11-06  5:08                 ` Bedia, Vaibhav
2012-11-06  5:08                   ` Bedia, Vaibhav
2012-11-05 14:58       ` Santosh Shilimkar
2012-11-05 14:58         ` Santosh Shilimkar
2012-11-02 12:32 ` [PATCH 14/15] ARM: OMAP2+: omap2plus_defconfig: Enable Mailbox Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-03 12:20   ` Kevin Hilman
2012-11-03 12:20     ` Kevin Hilman
2012-11-03 13:17     ` Bedia, Vaibhav
2012-11-03 13:17       ` Bedia, Vaibhav
2012-11-03 13:43       ` Kevin Hilman
2012-11-03 13:43         ` Kevin Hilman
2012-11-02 12:32 ` [PATCH 15/15] ARM: OMAP2+: AM33XX: Basic suspend resume support Vaibhav Bedia
2012-11-02 12:32   ` Vaibhav Bedia
2012-11-02 13:11   ` Bedia, Vaibhav
2012-11-02 13:11     ` Bedia, Vaibhav
2012-11-03 16:57   ` Santosh Shilimkar
2012-11-03 16:57     ` Santosh Shilimkar
2012-11-04 15:26     ` Bedia, Vaibhav
2012-11-04 15:26       ` Bedia, Vaibhav
2012-11-05 17:40   ` Kevin Hilman
2012-11-05 17:40     ` Kevin Hilman
2012-11-05 21:52     ` Santosh Shilimkar
2012-11-05 21:52       ` Santosh Shilimkar
2012-11-06 12:29       ` Bedia, Vaibhav
2012-11-06 12:29         ` Bedia, Vaibhav
2012-11-06 12:38         ` Santosh Shilimkar
2012-11-06 12:38           ` Santosh Shilimkar
2012-11-06 13:00           ` Bedia, Vaibhav
2012-11-06 13:00             ` Bedia, Vaibhav
2012-11-06 10:40     ` Bedia, Vaibhav
2012-11-06 10:40       ` Bedia, Vaibhav
2012-11-07  1:06       ` Kevin Hilman
2012-11-07  1:06         ` Kevin Hilman
2012-11-07 13:25         ` Bedia, Vaibhav
2012-11-07 13:25           ` Bedia, Vaibhav
2012-11-07 17:15           ` Kevin Hilman
2012-11-07 17:15             ` Kevin Hilman
2012-11-08 13:05             ` Bedia, Vaibhav
2012-11-08 13:05               ` Bedia, Vaibhav
2012-11-02 22:16 ` [RFC 00/15] Add basic suspend-resume support for AM33XX Daniel Mack
2012-11-02 22:16   ` Daniel Mack
2012-11-03  8:39   ` Bedia, Vaibhav
2012-11-03  8:39     ` Bedia, Vaibhav

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=B5906170F1614E41A8A28DE3B8D121433EC054F1@DBDE01.ent.ti.com \
    --to=vaibhav.bedia@ti.com \
    --cc=b-cousson@ti.com \
    --cc=khilman@deeprootsystems.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=paul@pwsan.com \
    --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 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.