All of lore.kernel.org
 help / color / mirror / Atom feed
From: aaron lwe <aaron.lwe@gmail.com>
To: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: linux-acpi@vger.kernel.org
Subject: Re: any way to evaluate a device's _PS0 method when its power state is at D0?
Date: Thu, 19 May 2011 23:05:24 +0800	[thread overview]
Message-ID: <BANLkTimmDa55sgFgQbnD6sdNnvt8U+OXUQ@mail.gmail.com> (raw)
In-Reply-To: <20110519124221.GA11831@srcf.ucam.org>

On Thu, May 19, 2011 at 8:42 PM, Matthew Garrett <mjg59@srcf.ucam.org> wrote:
> On Thu, May 19, 2011 at 06:06:47PM +0800, aaron lwe wrote:
>
>> So on init, this device's power state will be set to D0 due to ABPS is
>> 0, but its _PS0 never get called.
>> If later I want to evaluate its _PS0 control method, what should I do?
>> acpi_bus_set_power will return if it found the set state is the same
>> with the current state.
>
> Why do you want to evaluate its _PS0 method?

Hi Matthew,

The following is a simplified code that this device did by
disassembling the DSDT table.
When I put the device to D3, and later changed its state back to D0, I
got a problem due to HASD is never set to 1:
Device (xx)
{
        Name (ABPS, 0)
	Name (HASD, 0)

        Method (_PSC, 0, NotSerialized)
        {
                Return (ABPS)
        }

	Method (_PS0, 0, NotSerialized)
	{
		If (LOr (LEqual (HASD, 1), LAnd(LEqual(HASD, 0), LEqual(PORT, 1))))
		{
			// do things to re-power this device
			Store (1, HASD)
		}
	}
}

PORT is a bit field defined in an operation region, it's an io port
value which is used to detect if a device is there.
HASD is used to store if a device is there.

First I put the device to D3, and then put it back to D0, due to _PS0
is never evaluated before, HASD is 0.
And since the device is powered off, the PORT will also be 0. And
thus, I can't re-power this device.

This control method depends on it being evaluated once during boot, so
that it can set HASD to 1.

Since this device's state is set to D0 in acpi_bus_init_power without
evaluating _PS0 control method, and I need HASD to be set to 1 for
_PS0 to be evaluated effectively when I put the device back to D0 from
D3, I'll need to evaluate _PS0 when this device's power state is at
D0.

Thanks,
Aaron

  reply	other threads:[~2011-05-19 15:05 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-05-19 10:06 any way to evaluate a device's _PS0 method when its power state is at D0? aaron lwe
2011-05-19 12:42 ` Matthew Garrett
2011-05-19 15:05   ` aaron lwe [this message]
2011-05-19 15:14     ` Matthew Garrett
2011-05-19 15:28       ` aaron lwe
2011-05-19 15:45         ` Matthew Garrett

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=BANLkTimmDa55sgFgQbnD6sdNnvt8U+OXUQ@mail.gmail.com \
    --to=aaron.lwe@gmail.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=mjg59@srcf.ucam.org \
    /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.