Hello BenoƮt, Rajendra, Hema,

On Mon, 9 Aug 2010, Cousson, Benoit wrote:

> On 8/9/2010 11:37 AM, Nayak, Rajendra wrote:
> > 
> > > From: Paul Walmsley [mailto:p...@pwsan.com]
> > > Sent: Monday, August 09, 2010 1:51 PM
> > > 
> > > On Mon, 9 Aug 2010, Nayak, Rajendra wrote:
> > > 
> > > > Does it make sense for the framework itself to enable wakeup
> > > > for all devices when the slave port is programmed to be in
> > > > Smartidle
> > > 
> > > It seems to me that they are separate mechanisms?  If a module is
> > > programmed for slave smart-idle, then the module prevents the
> > > PRCM from
> > > shutting off the module clock(s) until the module is not
> > > busy.  This seems
> > > distinct from ENAWAKEUP, which I thought simply controlled
> > > whether the
> > > module would assert the SWakeup signal to the PRCM when an
> > > external wakeup
> > > condition occurred for that module.  Is that an accurate summary?
> > 
> > hmm.. the reason I thought the two were related was because the need to
> > assert a SWakeup will arise only when the module is programmed in
> > smart-idle.
> > If the module is either in no-idle (in which case no idle-ack is asserted
> > by the module) or force-idle (when the module is forced to idle and
> > expected to stay idle) there might not be a need for the module to be
> > capable of asserting a SWakeup.
> 
> In fact, the SWakeup is asserted as soon as the module is in idle (idle_ack =
> 1) and cannot use the OCP interface to communicate a IRQ_REQ or DMA_REQ.
> But the wakeup capability is disabled by setting the SidleMode to Force-Idle,
> regardless of the value of Wakeup enable.
> Bottom-line is that the SWakeup can be asserted only if the module is in
> smart-idle.

In that case, it sounds like Rajendra's patch would be useful (to 
automatically enable ENAWAKEUP during target smart-idle, and disable it 
during target no-idle or force-idle, would be worthwhile)?

One other situation that we should consider would be if it ever makes 
sense to program a module to target smart-idle, but disable ENAWAKEUP.  I 
suppose it should only be necessary if there is a hardware bug where an IP 
block generates spurious SWakeups.  -- But if we have no current need for 
this type of workaround, maybe we can just ignore this case and have the 
ENAWAKEUP bit follow target smart-idle status.  Then if such a hardware 
bug appears, we can separate ENAWAKEUP programming later.

Thoughts?


- Paul

Reply via email to