Re: [PATCH] ACPI: evaluate _PS3 when entering D3 Cold

Lin Ming
2012-04-05T03:01:47Z

On Thu, 2012-04-05 at 10:56 +0800, Aaron Lu wrote:
> Hi,
>
> On Thu, Apr 05, 2012 at 10:31:20AM +0800, Lin Ming wrote:
> > >
> > > The only situation where a device can be put into ACPI D3_hot (which is not
> > > the same as PCI D3_hot, mind you) is when:
> > >
> > > (1) There is _PR3 listing some of the device's power resources as "on".
> > > (2) The power resources listed by the _PR3 as "off" are turned off and the
> > > power resources listed by the _PR3 as "on" are left in the "on" state.
> >
> > I don't understand item (2):
> >
> > If the power resource is listed as "off", which means it's already
> > turned off. Then why should it be turned off again?
>
> Rafael,
> I think you misunderstand the meaning of _PR3.
> The _PR3 will evaluate a list of power resources, not two lists(one "on"
> list and one "off" list), as illustrated by Ming below.
>
> And for a device to be put to D3 hot, it should:
> 1 execuate _PS3 first if available
> 2 turn on all the power resources referenced by _PR3

3 turn off all the power resources referenced by previous state

Thanks,
Lin Ming

>
> And for a device to be put to D3 cold, it should:
> 1 execute _PS3 first if available
> 2 turn off power resources referenced by _PRx, where x is the previous
> state number of the device. Say if the device is put to D3 cold from D0,
> the x would be 0.
>
> Is this correct?
>
> Thank,
> Aaron
>
> >
> > Let's see an example
> >
> > Assume a device "dev0" depends on 5 power resources:
> >
> > pr1, pr2, pr3, pr4, pr5
> >
> > _PR3 lists 3 power resources: pr3, pr4, pr5
> >
> > Device(dev0)
> > {
> > Name(_PR3, Package (0x03)
> > {
> > pr3,
> > pr4,
> > pr5
> > })
> > }
> >
> > If dev0 is put into ACPI D3_hot and pr1 and pr2 are not referenced by
> > other devices, then it requires:
> >
> > - pr1 and pr2 are off
> > - pr3, pr4 and pr5 are on
> >
> > right?
> >
> > Thanks,
> > Lin Ming
> >
> >
> >
>