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
next prev parent 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).