linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Corentin Chary <corentin.chary@gmail.com>
To: Florian Echtler <floe@butterbrot.org>
Cc: linux-acpi@vger.kernel.org, platform-driver-x86@vger.kernel.org
Subject: Re: Looking for some pointers on WMI/EC access
Date: Tue, 20 Apr 2010 09:30:06 +0200	[thread overview]
Message-ID: <s2o71cd59b01004200030jfaa10a4bs81e937d2e50b15b0@mail.gmail.com> (raw)
In-Reply-To: <i2r71cd59b01004200021p9a45af39y94c007edecb47884@mail.gmail.com>

On Tue, Apr 20, 2010 at 9:21 AM, Corentin Chary
<corentin.chary@gmail.com> wrote:
> On Tue, Apr 20, 2010 at 8:52 AM, Florian Echtler <floe@butterbrot.org> wrote:
>> Hello Corentin,
>>
>>> >> > First, I've dumped the DSDT and browsed through it. I've found a _WDT
>>> >> > section, and wmidump shows:
>>> >> Wow, someone actually used that tool ^^
>>> >> A Quick hint would be to look at
>>> >> https://patchwork.kernel.org/patch/87210/ which is basically a really
>>> >> short example of what a wmi-driver is.
>>> >> Just change the guid, buid/load, push some hotkeys, see dmesg, edit
>>> >> the keymap, build, load, test ..
>>> > Thanks for the pointer - I've given it a quick try and the driver loads
>>> > successfully, however, the event doesn't seem to be triggered. I've put
>>> > a printk into the eeepc_wmi_notify function, and this is seemingly never
>>> > called.. although I believe this may be the right direction, as the GUID
>>> > from the eeepc driver (ABBC0F72-8EA1-11D1-00A0-C90629100000) and the one
>>> > from my Lenovo (ABBC0F20-8EA1-11D1-00A0-C90629100000) differ only by a
>>> > single byte.
>>> This is not the first laptop with an asus-like dsdt, some Lenovo are
>>> supported by asus-laptop.
>>> > Could this event be disabled somehow?
>>> Don't know, can you send the result of acpidump ?
>> I've attached the output of acpidump as well as the decompiled DSDT.
>
> Looking at your dsdt:
>
> BUF1 and BUF2 contains some easy to find data:
>
>                        CreateByteField (BUF1, 0x01, EID1)
>                        CreateByteField (BUF1, 0x02, ERQ0)
>                        CreateByteField (BUF1, 0x03, BRIL)
>                        CreateByteField (BUF1, 0x04, SKEY)
>                        CreateByteField (BUF1, 0x08, BLUE)  bluetooth
>                        CreateByteField (BUF1, 0x09, WLAN) wifi
>                        CreateByteField (BUF1, 0x0A, WL3G) 3g
>                        CreateByteField (BUF1, 0x0B, WMAX) wimax
>                        CreateByteField (BUF1, 0x0C, GLSW)
>                        CreateByteField (BUF1, 0x10, TPST) touchpad ?
>                        CreateByteField (BUF1, 0x11, SLMD)
>                        CreateByteField (BUF1, 0x12, SBR0) brightness ?
>                        CreateByteField (BUF1, 0x13, SBR1)
>                        CreateByteField (BUF1, 0x14, SBR2)
>                        CreateByteField (BUF1, 0x15, SBBR)
>                        CreateByteField (BUF1, 0x16, SBLI)
>                        CreateByteField (BUF1, 0x17, TBMD)
>                        CreateByteField (BUF1, 0x18, RTAG)
>
>                        CreateByteField (BUF2, 0x01, EID2)
>                        CreateByteField (BUF2, 0x08, BIV0)
>                        CreateByteField (BUF2, 0x09, BIV1)
>                        CreateByteField (BUF2, 0x0A, BIV2)
>                        CreateByteField (BUF2, 0x0B, BIV3)
>                        CreateByteField (BUF2, 0x0C, BIV4)
>                        CreateByteField (BUF2, 0x0D, BIV5)
>                        CreateByteField (BUF2, 0x0E, BIV6)
>                        CreateByteField (BUF2, 0x0F, BIV7)
>                        CreateByteField (BUF2, 0x10, WMIV)
>                        CreateByteField (BUF2, 0x18, BRMX) brightness max ?
>                        CreateByteField (BUF2, 0x20, BAT1) battery
>                        CreateByteField (BUF2, 0x21, BAT2) battery
>                        CreateByteField (BUF2, 0x22, ACDC) music ? :p
>                        CreateByteField (BUF2, 0x23, CPUT) cpu temp ?
>                        CreateByteField (BUF2, 0x24, VGAT)
>                        CreateByteField (BUF2, 0x25, CDT1)
>                        CreateByteField (BUF2, 0x26, CDT2)
>                        CreateByteField (BUF2, 0x27, FSP1)
>                        CreateByteField (BUF2, 0x28, FSP2)
>
>
> Looking at _INI :
>       Store (\_SB.BRNS, BRMX) probably means "set the brightness to
> the maximum brightness"
>
> WQIO returns both BUF1 and BUF2, you can get it with wmi_query_block()
>
> WSIO calls CPSR and CPSR store the argument in INBF.
> BY00, BY01, ... BY31, BGTX, BGTY, BGTZ etc ... are used to access
> specific bytes in INBF :
>                        CreateByteField (INBF, 0x00, BY00)
>                        CreateByteField (INBF, 0x01, BY01)
>                        CreateByteField (INBF, 0x02, BY02)
>                        CreateByteField (INBF, 0x03, BY03)
>                        CreateByteField (INBF, 0x04, BY04)
>                        CreateByteField (INBF, 0x05, BY05)
>
>
> CSPR wants BY00 to be 0x01 and BY01 to be 0x10 to do something.
> It calls CMD0 (BY08, BY09, BY10, BY11, BY16)
>
> ERQ0 (present in BUF1) is compared to Arg2 (BY09) == 0x1
> if true, it will store some values and call notify

//Ooops, message sent, but not finished ... Continuing here:

else it will call UWED with BY08, BY09, BY16.

Then, BY08 is stored in _T_0 which is used to find what code to execute.
Now, you need to look at what each value of _T_0 will do.


Looking at the rest of the dsdt:

Method (GECN, 1, NotSerialized)
Method (SECN, 2, Serialized)

are very interesting:

GECN is used to get status, and SECN to set status.

For example, use \_SB.GECN(0x03) to get bluetooth status
And \_SB.SECN(0x03, 0x01) to enable bluetooth.
I don't really understand what DECN is used for, maybe to know if a
device is present (or maybe just switch GECN and DECN).




-- 
Corentin Chary
http://xf.iksaif.net
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2010-04-20  7:30 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-17 15:37 Looking for some pointers on WMI/EC access Florian Echtler
2010-04-18 19:21 ` Corentin Chary
2010-04-19 14:25   ` Florian Echtler
2010-04-19 15:46     ` Corentin Chary
     [not found]       ` <1271746353.16585.9.camel@flunder>
2010-04-20  7:21         ` Corentin Chary
2010-04-20  7:30           ` Corentin Chary [this message]
2010-04-20 11:21             ` Florian Echtler
2010-04-20 12:09               ` Corentin Chary
2010-04-21 12:46                 ` Florian Echtler
2010-04-21 13:33                   ` Matthew Garrett
2010-04-21 14:30                     ` Florian Echtler
2010-04-21 14:32                       ` Matthew Garrett
2010-04-22  8:21                         ` Florian Echtler
2010-04-22 13:36                           ` Matthew Garrett
     [not found]                             ` <1271944219.29664.42.camel@pancake.fritz.box>
2010-04-22 13:53                               ` Matthew Garrett
2010-04-22 14:05                                 ` Matthew Garrett
2010-04-23 11:24                                   ` Florian Echtler
2010-04-23 17:47                                     ` Matthew Garrett
2010-04-22 14:33                                 ` Corentin Chary

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=s2o71cd59b01004200030jfaa10a4bs81e937d2e50b15b0@mail.gmail.com \
    --to=corentin.chary@gmail.com \
    --cc=floe@butterbrot.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).