All of lore.kernel.org
 help / color / mirror / Atom feed
* Question about e300 core decrementer interrupt
@ 2009-09-08  5:48 Li Tao-B22598
  2009-09-09 11:16 ` Kenneth Johansson
  0 siblings, 1 reply; 7+ messages in thread
From: Li Tao-B22598 @ 2009-09-08  5:48 UTC (permalink / raw)
  To: linuxppc-dev

[-- Attachment #1: Type: text/plain, Size: 703 bytes --]

Dear all,

I have a problem in MPC5121 sleep mode. As you know MPC5121 use e300c4
core. When I make the e300c4 core into sleep mode, it will return to
full power mode when the“decrementer interrupt” occurred.

But in the e300 core reference manual said that the “decrementer
interrupt”have no effect when e300 core in sleep mode, because the time
base and decrementer are disabled while the core is in sleep mode.
Can anybody explain about this procedure ? 

Another question is how can I disable the“decrementer interrupt”without
disable int,smi, or mcpinternal signals.

Any help or suggestion would be very helpful.
Thank you for your time.

-- 
Best Regards,
  
Li Tao   

[-- Attachment #2: Type: text/html, Size: 1178 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Question about e300 core decrementer interrupt
  2009-09-08  5:48 Question about e300 core decrementer interrupt Li Tao-B22598
@ 2009-09-09 11:16 ` Kenneth Johansson
  2009-09-09 18:43   ` Scott Wood
  0 siblings, 1 reply; 7+ messages in thread
From: Kenneth Johansson @ 2009-09-09 11:16 UTC (permalink / raw)
  To: Li Tao-B22598; +Cc: linuxppc-dev

On Tue, 2009-09-08 at 13:48 +0800, Li Tao-B22598 wrote:
> Dear all,
> 
> I have a problem in MPC5121 sleep mode. As you know MPC5121 use e300c4
> core. When I make the e300c4 core into sleep mode, it will return to
> full power mode when the“decrementer interrupt” occurred.
> 
> But in the e300 core reference manual said that the “decrementer
> interrupt”have no effect when e300 core in sleep mode, because the
> time
> base and decrementer are disabled while the core is in sleep mode.
> Can anybody explain about this procedure ?


Please talk to people internal to freescale. There is errata on this
that is known for a long time(more than a year now) that for some reason
is never entered into the errata document. 

I'm a bit irritated that it's not as the "solution" can mean hardware
changes an thus it's potentially expensive.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Question about e300 core decrementer interrupt
  2009-09-09 11:16 ` Kenneth Johansson
@ 2009-09-09 18:43   ` Scott Wood
  2009-09-10  9:09     ` Kenneth Johansson
  2009-09-10 11:58     ` Li Tao
  0 siblings, 2 replies; 7+ messages in thread
From: Scott Wood @ 2009-09-09 18:43 UTC (permalink / raw)
  To: Kenneth Johansson; +Cc: linuxppc-dev, Li Tao-B22598

On Wed, Sep 09, 2009 at 01:16:07PM +0200, Kenneth Johansson wrote:
> On Tue, 2009-09-08 at 13:48 +0800, Li Tao-B22598 wrote:
> > Dear all,
> > 
> > I have a problem in MPC5121 sleep mode. As you know MPC5121 use e300c4
> > core. When I make the e300c4 core into sleep mode, it will return to
> > full power mode when the“decrementer interrupt” occurred.
> > 
> > But in the e300 core reference manual said that the “decrementer
> > interrupt”have no effect when e300 core in sleep mode, because the
> > time
> > base and decrementer are disabled while the core is in sleep mode.
> > Can anybody explain about this procedure ?

I'm not specifically familiar with MPC5121, but I'll answer from the
perspective of MPC83xx which has a similar core:

The decrementer stops ticking when the core goes to sleep.  However, if a
decrementer was already pending (but masked with MSR[EE]) before you
enter sleep mode, it will cause a wakeup.

To avoid this, the decrementer is set to a very large value prior to and
after disabling interrupts.  See generic_suspend_disable_irqs() in
arch/powerpc/kernel/time.c.  Is this not happening for you?  Which kernel
version are you using, and what mechanism are you using to go to sleep? 

> I'm a bit irritated that it's not as the "solution" can mean hardware
> changes an thus it's potentially expensive.

What sort of hardware changes?

-Scott

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Question about e300 core decrementer interrupt
  2009-09-09 18:43   ` Scott Wood
@ 2009-09-10  9:09     ` Kenneth Johansson
  2009-09-10 11:53       ` Li Tao
  2009-09-10 11:58     ` Li Tao
  1 sibling, 1 reply; 7+ messages in thread
From: Kenneth Johansson @ 2009-09-10  9:09 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev, Li Tao-B22598

On Wed, 2009-09-09 at 13:43 -0500, Scott Wood wrote:
> On Wed, Sep 09, 2009 at 01:16:07PM +0200, Kenneth Johansson wrote:
> > On Tue, 2009-09-08 at 13:48 +0800, Li Tao-B22598 wrote:
> > > Dear all,
> > > 
> > > I have a problem in MPC5121 sleep mode. As you know MPC5121 use e300c4
> > > core. When I make the e300c4 core into sleep mode, it will return to
> > > full power mode when the“decrementer interrupt” occurred.
> > > 
> > > But in the e300 core reference manual said that the “decrementer
> > > interrupt”have no effect when e300 core in sleep mode, because the
> > > time
> > > base and decrementer are disabled while the core is in sleep mode.
> > > Can anybody explain about this procedure ?
> 
> I'm not specifically familiar with MPC5121, but I'll answer from the
> perspective of MPC83xx which has a similar core:
> 
> The decrementer stops ticking when the core goes to sleep.  However, if a
> decrementer was already pending (but masked with MSR[EE]) before you
> enter sleep mode, it will cause a wakeup.
> 
> To avoid this, the decrementer is set to a very large value prior to and
> after disabling interrupts.  See generic_suspend_disable_irqs() in
> arch/powerpc/kernel/time.c.  Is this not happening for you?  Which kernel
> version are you using, and what mechanism are you using to go to sleep? 
> 
> > I'm a bit irritated that it's not as the "solution" can mean hardware
> > changes an thus it's potentially expensive.
> 
> What sort of hardware changes?

 I don't want to spread missinformation but this procedure has helped on
the ads5121 rev3 and two custom boards. 

the gpio 28,29,30 needs to be low and gpio31 needs to be hi. regardless
of what is used as wakeup source when the device enters deep sleep
otherwise you end up in some sort of meta state where you might not wake
up on anything and you have this 42 second auto wakeup from the
decrementer. 

Other weired states has also been observed. the PMC module is a bit
tempremental in this chip.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Question about e300 core decrementer interrupt
  2009-09-10  9:09     ` Kenneth Johansson
@ 2009-09-10 11:53       ` Li Tao
  0 siblings, 0 replies; 7+ messages in thread
From: Li Tao @ 2009-09-10 11:53 UTC (permalink / raw)
  To: Kenneth Johansson; +Cc: Scott Wood, linuxppc-dev

Hi Johansson,

Thanks for your response

=E5=9C=A8 2009-09-10=E5=9B=9B=E7=9A=84 11:09 +0200=EF=BC=8CKenneth Johansso=
n=E5=86=99=E9=81=93=EF=BC=9A
> On Wed, 2009-09-09 at 13:43 -0500, Scott Wood wrote:
> > On Wed, Sep 09, 2009 at 01:16:07PM +0200, Kenneth Johansson wrote:
> > > On Tue, 2009-09-08 at 13:48 +0800, Li Tao-B22598 wrote:
> > > > Dear all,
> > > >=20
> > > > I have a problem in MPC5121 sleep mode. As you know MPC5121 use e30=
0c4
> > > > core. When I make the e300c4 core into sleep mode, it will return t=
o
> > > > full power mode when the=E2=80=9Cdecrementer interrupt=E2=80=9D occ=
urred.
> > > >=20
> > > > But in the e300 core reference manual said that the =E2=80=9Cdecrem=
enter
> > > > interrupt=E2=80=9Dhave no effect when e300 core in sleep mode, beca=
use the
> > > > time
> > > > base and decrementer are disabled while the core is in sleep mode.
> > > > Can anybody explain about this procedure ?
> >=20
> > I'm not specifically familiar with MPC5121, but I'll answer from the
> > perspective of MPC83xx which has a similar core:
> >=20
> > The decrementer stops ticking when the core goes to sleep.  However, if=
 a
> > decrementer was already pending (but masked with MSR[EE]) before you
> > enter sleep mode, it will cause a wakeup.
> >=20
> > To avoid this, the decrementer is set to a very large value prior to an=
d
> > after disabling interrupts.  See generic_suspend_disable_irqs() in
> > arch/powerpc/kernel/time.c.  Is this not happening for you?  Which kern=
el
> > version are you using, and what mechanism are you using to go to sleep?=
=20
> >=20
> > > I'm a bit irritated that it's not as the "solution" can mean hardware
> > > changes an thus it's potentially expensive.
> >=20
> > What sort of hardware changes?
>=20
>  I don't want to spread missinformation but this procedure has helped on
> the ads5121 rev3 and two custom boards.=20
>=20
> the gpio 28,29,30 needs to be low and gpio31 needs to be hi. regardless
> of what is used as wakeup source when the device enters deep sleep
> otherwise you end up in some sort of meta state where you might not wake
> up on anything and you have this 42 second auto wakeup from the
> decrementer.=20
I use ads5121 rev4.1 board, the gpio 28,29,30 is low and gpio31 is high.
I find that the RTC is fail too, when I use hwclock -f /dev/rtc0 cmd, it
was always "Wed Dec 31 23:59:59 1969  0.000000 seconds". I measured the
the RTC oscillator is 32.768 kHz, and the VBAT_RTC is 4.2v. I have no
idea about why RTC is fail.=20
>=20
> Other weired states has also been observed. the PMC module is a bit
> tempremental in this chip.
>=20
>=20
>=20

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Question about e300 core decrementer interrupt
  2009-09-09 18:43   ` Scott Wood
  2009-09-10  9:09     ` Kenneth Johansson
@ 2009-09-10 11:58     ` Li Tao
  2009-09-10 15:30       ` Scott Wood
  1 sibling, 1 reply; 7+ messages in thread
From: Li Tao @ 2009-09-10 11:58 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev, Kenneth Johansson

Hi Scott Wood,
Thanks for your response

=E5=9C=A8 2009-09-09=E4=B8=89=E7=9A=84 13:43 -0500=EF=BC=8CScott Wood=E5=86=
=99=E9=81=93=EF=BC=9A
> On Wed, Sep 09, 2009 at 01:16:07PM +0200, Kenneth Johansson wrote:
> > On Tue, 2009-09-08 at 13:48 +0800, Li Tao-B22598 wrote:
> > > Dear all,
> > >=20
> > > I have a problem in MPC5121 sleep mode. As you know MPC5121 use e300c=
4
> > > core. When I make the e300c4 core into sleep mode, it will return to
> > > full power mode when the=E2=80=9Cdecrementer interrupt=E2=80=9D occur=
red.
> > >=20
> > > But in the e300 core reference manual said that the =E2=80=9Cdecremen=
ter
> > > interrupt=E2=80=9Dhave no effect when e300 core in sleep mode, becaus=
e the
> > > time
> > > base and decrementer are disabled while the core is in sleep mode.
> > > Can anybody explain about this procedure ?
>=20
> I'm not specifically familiar with MPC5121, but I'll answer from the
> perspective of MPC83xx which has a similar core:
>=20
> The decrementer stops ticking when the core goes to sleep.  However, if a
> decrementer was already pending (but masked with MSR[EE]) before you
> enter sleep mode, it will cause a wakeup.
>=20
> To avoid this, the decrementer is set to a very large value prior to and
> after disabling interrupts.  See generic_suspend_disable_irqs() in
> arch/powerpc/kernel/time.c.  Is this not happening for you?  Which kernel
> version are you using, and what mechanism are you using to go to sleep?
I use 2.6.24 kernel. The PM driver code have set decrementer to
0x7fffffff before go to sleep mode.
The driver set HID0[10]=3D1, then set MSR POW bit. PMCCR =3D 00111.
> =20
>=20
> > I'm a bit irritated that it's not as the "solution" can mean hardware
> > changes an thus it's potentially expensive.
>=20
> What sort of hardware changes?
>=20
> -Scott

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Question about e300 core decrementer interrupt
  2009-09-10 11:58     ` Li Tao
@ 2009-09-10 15:30       ` Scott Wood
  0 siblings, 0 replies; 7+ messages in thread
From: Scott Wood @ 2009-09-10 15:30 UTC (permalink / raw)
  To: Li Tao; +Cc: linuxppc-dev, Kenneth Johansson

Li Tao wrote:
> Hi Scott Wood,
> Thanks for your response
> 
> 在 2009-09-09三的 13:43 -0500,Scott Wood写道:
>> The decrementer stops ticking when the core goes to sleep.  However, if a
>> decrementer was already pending (but masked with MSR[EE]) before you
>> enter sleep mode, it will cause a wakeup.
>>
>> To avoid this, the decrementer is set to a very large value prior to and
>> after disabling interrupts.  See generic_suspend_disable_irqs() in
>> arch/powerpc/kernel/time.c.  Is this not happening for you?  Which kernel
>> version are you using, and what mechanism are you using to go to sleep?
> I use 2.6.24 kernel. The PM driver code have set decrementer to
> 0x7fffffff before go to sleep mode.

It looks like 2.6.24 doesn't have commit 
7ac5dde99eb9fefdb526973c600075b7c5703a86 (Implement arch disable/enable 
irq hooks) -- are you disabling the decrementer in a similar manner, or 
is it possible that the decrementer has already fired by the time you 
set it to 0x7fffffff?  Could you read the value just prior to entering 
sleep?

Why use such an old kernel, BTW?

> The driver set HID0[10]=1, then set MSR POW bit. PMCCR = 00111.

I was more interested in whether you were using the suspend_ops (maybe 
pm_ops back then?) infrastructure (which would invoke the irq hooks) or 
something custom.

-Scott

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2009-09-10 15:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-08  5:48 Question about e300 core decrementer interrupt Li Tao-B22598
2009-09-09 11:16 ` Kenneth Johansson
2009-09-09 18:43   ` Scott Wood
2009-09-10  9:09     ` Kenneth Johansson
2009-09-10 11:53       ` Li Tao
2009-09-10 11:58     ` Li Tao
2009-09-10 15:30       ` Scott Wood

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.