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

Aaron Lu
2012-04-05T02:56:49Z

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

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
>
>
>