* Acer-WMI: Iconia TAB W500 gyrosensor
@ 2012-05-01 15:31 Marek Vasut
2012-05-02 1:37 ` joeyli
[not found] ` <1336436380.5272.5047.camel@linux-s257.site>
0 siblings, 2 replies; 6+ messages in thread
From: Marek Vasut @ 2012-05-01 15:31 UTC (permalink / raw)
To: jlee; +Cc: platform-driver-x86
Hello,
I've been poking around the W500 gyrosensor.
* When the device is tilted, it generates PNP0C14 event.
* This is caught by acer_wmi_notify() in drivers/platform/x86/acer-wmi.c
Now it gets interesting ;-)
The obj->buffer.pointer contains the following:
0x05 0x01 0x00 0x00 0x00 0x00 0x00 0x00
That means, return_value.function is 0x05, instead of 0x01 (WMID_HOTKEY_EVENT).
I've been poking around for quite a bit, but so far didn't get any further data
from it but this event. Any idea how to progress please? I think I just need to
call some of the methods (see below) that'll return the values from the
gyrosensor.
Find "fwts wmi -" below:
00012 wmi Test 1 of 2: Check Windows Management Instrumentation in
DSDT
00013 wmi Found WMI Event, Notifier ID: 0xbc, GUID:
676AA15E-6A47-4D9F-A2CC-1E6D18D14026, Instance 0x01
00014 wmi PASSED: Test 1, GUID 676AA15E-6A47-4D9F-A2CC-1E6D18D14026
is handled by driver acer-wmi (Vendor: Acer).
00015 wmi Found WMI Method WMAA with GUID: 61EF69EA-865C-4BC3-A502-
A0DEBA0CB531, Instance 0x01
00016 wmi PASSED: Test 1, GUID 61EF69EA-865C-4BC3-A502-A0DEBA0CB531
is handled by driver acer-wmi (Vendor: Acer).
00017 wmi Found WMI Method WMBL with GUID:
FE1DBBDA-3014-4856-870C-5B3A744BF341, Instance 0x01
00018 wmi Found WMI Method WMBE with GUID:
79772EC5-04B1-4BFD-843C-61E7F77B6CC9, Instance 0x01
00019 wmi Found WMI Method WMBK with GUID: F75F5666-B8B3-4A5D-
A91C-7488F62E5637, Instance 0x01
00020 wmi Found WMI Object, Object ID AB, GUID: 05901221-D566-11D1-
B2F0-00A0C9062910, Instance 0x01, Flags: 00
00021 wmi Found WMI Object, Object ID 00, GUID: 39142400-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00022 wmi Found WMI Object, Object ID 01, GUID: 49142400-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00023 wmi Found WMI Object, Object ID 02, GUID: 4A142400-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00024 wmi Found WMI Object, Object ID 11, GUID: 49142401-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00025 wmi Found WMI Object, Object ID 12, GUID: 4A142401-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00026 wmi Found WMI Object, Object ID 21, GUID: 49142402-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00027 wmi Found WMI Object, Object ID 22, GUID: 4A142402-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00028 wmi Found WMI Object, Object ID 31, GUID: 49142403-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00029 wmi Found WMI Object, Object ID 32, GUID: 4A142403-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00030 wmi Found WMI Object, Object ID 41, GUID: 49142404-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00031 wmi Found WMI Object, Object ID 42, GUID: 4A142404-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00032 wmi Found WMI Object, Object ID 51, GUID: 49142405-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00033 wmi Found WMI Object, Object ID 52, GUID: 4A142405-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00034 wmi Found WMI Object, Object ID 61, GUID: 49142406-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00035 wmi Found WMI Object, Object ID 62, GUID: 4A142406-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00036 wmi Found WMI Object, Object ID 71, GUID: 49142407-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00037 wmi Found WMI Object, Object ID 72, GUID: 4A142407-C6A3-40FA-
BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00038 wmi Found WMI Event, Notifier ID: 0x80, GUID: 59142400-
C6A3-40FA-BADB-8A2652834100, Instance 0x01
00039 wmi FAILED [MEDIUM] WMIUnknownGUID: Test 1, GUID 59142400-
C6A3-40FA-BADB-8A2652834100 is unknown to the kernel, a driver may need to be
implemented for this GUID.
00040 wmi
00041 wmi ADVICE: A WMI driver probably needs to be written for this
event.
00042 wmi It can checked for using: wmi_has_guid("59142400-
C6A3-40FA-BADB-8A2652834100").
00043 wmi One can install a notify handler using
wmi_install_notify_handler("59142400-C6A3-40FA-BADB-8A2652834100", handler,
NULL).
00044 wmi http://lwn.net/Articles/391230 describes how to write an
appropriate driver.
00045 wmi
00046 wmi Found WMI Method WM05 with GUID: 69142400-C6A3-40FA-
BADB-8A2652834100, Instance 0x01
00047 wmi Found WMI Method WM06 with GUID: 79142400-C6A3-40FA-
BADB-8A2652834100, Instance 0x01
00048 wmi Found WMI Method WM07 with GUID: 89142400-C6A3-40FA-
BADB-8A2652834100, Instance 0x01
00049 wmi Found WMI Object, Object ID BA, GUID: 05901221-D566-11D1-
B2F0-00A0C9062910, Instance 0x01, Flags: 01 WMI_EXPENSIVE
00050 wmi
00051 wmi Test 2 of 2: Check Windows Management Instrumentation in
SSDT
00052 wmi No WMI data found in table SSDT1.
00053 wmi No WMI data found in table SSDT2.
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: Acer-WMI: Iconia TAB W500 gyrosensor 2012-05-01 15:31 Acer-WMI: Iconia TAB W500 gyrosensor Marek Vasut @ 2012-05-02 1:37 ` joeyli [not found] ` <201205020446.41735.marek.vasut@gmail.com> [not found] ` <1336436380.5272.5047.camel@linux-s257.site> 1 sibling, 1 reply; 6+ messages in thread From: joeyli @ 2012-05-02 1:37 UTC (permalink / raw) To: Marek Vasut; +Cc: jlee, platform-driver-x86 Hi Marek, 於 二,2012-05-01 於 17:31 +0200,Marek Vasut 提到: > Hello, > > I've been poking around the W500 gyrosensor. > Interesting! > * When the device is tilted, it generates PNP0C14 event. > * This is caught by acer_wmi_notify() in drivers/platform/x86/acer-wmi.c > > Now it gets interesting ;-) > > The obj->buffer.pointer contains the following: > 0x05 0x01 0x00 0x00 0x00 0x00 0x00 0x00 > That means, return_value.function is 0x05, instead of 0x01 (WMID_HOTKEY_EVENT). Yes, the 0x05 event is a event reflect to g-sensor, but I don't have any hardware can test it. Did you see any other value but not just "0x05 0x01 0x00 0x00 0x00 0x00 0x00 0x00" ? I mean if you invert your table, did you see other return value? The return data must point to Portrait or Landscape view. > I've been poking around for quite a bit, but so far didn't get any further data > from it but this event. Any idea how to progress please? I think I just need to > call some of the methods (see below) that'll return the values from the > gyrosensor. > > Find "fwts wmi -" below: > > 00012 wmi Test 1 of 2: Check Windows Management Instrumentation in > DSDT > 00013 wmi Found WMI Event, Notifier ID: 0xbc, GUID: > 676AA15E-6A47-4D9F-A2CC-1E6D18D14026, Instance 0x01 > 00014 wmi PASSED: Test 1, GUID 676AA15E-6A47-4D9F-A2CC-1E6D18D14026 > is handled by driver acer-wmi (Vendor: Acer). > 00015 wmi Found WMI Method WMAA with GUID: 61EF69EA-865C-4BC3-A502- > A0DEBA0CB531, Instance 0x01 > 00016 wmi PASSED: Test 1, GUID 61EF69EA-865C-4BC3-A502-A0DEBA0CB531 > is handled by driver acer-wmi (Vendor: Acer). > 00017 wmi Found WMI Method WMBL with GUID: > FE1DBBDA-3014-4856-870C-5B3A744BF341, Instance 0x01 > 00018 wmi Found WMI Method WMBE with GUID: > 79772EC5-04B1-4BFD-843C-61E7F77B6CC9, Instance 0x01 > 00019 wmi Found WMI Method WMBK with GUID: F75F5666-B8B3-4A5D- > A91C-7488F62E5637, Instance 0x01 > 00020 wmi Found WMI Object, Object ID AB, GUID: 05901221-D566-11D1- > B2F0-00A0C9062910, Instance 0x01, Flags: 00 > 00021 wmi Found WMI Object, Object ID 00, GUID: 39142400-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00022 wmi Found WMI Object, Object ID 01, GUID: 49142400-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00023 wmi Found WMI Object, Object ID 02, GUID: 4A142400-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00024 wmi Found WMI Object, Object ID 11, GUID: 49142401-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00025 wmi Found WMI Object, Object ID 12, GUID: 4A142401-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00026 wmi Found WMI Object, Object ID 21, GUID: 49142402-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00027 wmi Found WMI Object, Object ID 22, GUID: 4A142402-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00028 wmi Found WMI Object, Object ID 31, GUID: 49142403-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00029 wmi Found WMI Object, Object ID 32, GUID: 4A142403-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00030 wmi Found WMI Object, Object ID 41, GUID: 49142404-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00031 wmi Found WMI Object, Object ID 42, GUID: 4A142404-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00032 wmi Found WMI Object, Object ID 51, GUID: 49142405-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00033 wmi Found WMI Object, Object ID 52, GUID: 4A142405-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00034 wmi Found WMI Object, Object ID 61, GUID: 49142406-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00035 wmi Found WMI Object, Object ID 62, GUID: 4A142406-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00036 wmi Found WMI Object, Object ID 71, GUID: 49142407-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00037 wmi Found WMI Object, Object ID 72, GUID: 4A142407-C6A3-40FA- > BADB-8A2652834100, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00038 wmi Found WMI Event, Notifier ID: 0x80, GUID: 59142400- > C6A3-40FA-BADB-8A2652834100, Instance 0x01 > 00039 wmi FAILED [MEDIUM] WMIUnknownGUID: Test 1, GUID 59142400- > C6A3-40FA-BADB-8A2652834100 is unknown to the kernel, a driver may need to be > implemented for this GUID. > 00040 wmi > 00041 wmi ADVICE: A WMI driver probably needs to be written for this > event. > 00042 wmi It can checked for using: wmi_has_guid("59142400- > C6A3-40FA-BADB-8A2652834100"). > 00043 wmi One can install a notify handler using > wmi_install_notify_handler("59142400-C6A3-40FA-BADB-8A2652834100", handler, > NULL). > 00044 wmi http://lwn.net/Articles/391230 describes how to write an > appropriate driver. > 00045 wmi > 00046 wmi Found WMI Method WM05 with GUID: 69142400-C6A3-40FA- > BADB-8A2652834100, Instance 0x01 > 00047 wmi Found WMI Method WM06 with GUID: 79142400-C6A3-40FA- > BADB-8A2652834100, Instance 0x01 > 00048 wmi Found WMI Method WM07 with GUID: 89142400-C6A3-40FA- > BADB-8A2652834100, Instance 0x01 > 00049 wmi Found WMI Object, Object ID BA, GUID: 05901221-D566-11D1- > B2F0-00A0C9062910, Instance 0x01, Flags: 01 WMI_EXPENSIVE > 00050 wmi > 00051 wmi Test 2 of 2: Check Windows Management Instrumentation in > SSDT > 00052 wmi No WMI data found in table SSDT1. > 00053 wmi No WMI data found in table SSDT2. > > Best regards, > Marek Vasut > Could you please kindly share the acpidump to me? # acpidump > acpidump.dat Thanks a lot! Joey Lee ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <201205020446.41735.marek.vasut@gmail.com>]
* Re: Acer-WMI: Iconia TAB W500 gyrosensor [not found] ` <201205020446.41735.marek.vasut@gmail.com> @ 2012-05-07 19:38 ` Marek Vasut 0 siblings, 0 replies; 6+ messages in thread From: Marek Vasut @ 2012-05-07 19:38 UTC (permalink / raw) To: joeyli; +Cc: jlee, platform-driver-x86 Dear joeyli, > > > Hi Marek, > > > > 於 二,2012-05-01 於 17:31 +0200,Marek Vasut 提到: > > > > > Hello, > > > > > > I've been poking around the W500 gyrosensor. > > > > Interesting! > > > > > * When the device is tilted, it generates PNP0C14 event. > > > * This is caught by acer_wmi_notify() in > > > drivers/platform/x86/acer-wmi.c > > > > > > Now it gets interesting ;-) > > > > > > The obj->buffer.pointer contains the following: > > > 0x05 0x01 0x00 0x00 0x00 0x00 0x00 0x00 > > > > > > That means, return_value.function is 0x05, instead of 0x01 > > > (WMID_HOTKEY_EVENT). > > > > Yes, the 0x05 event is a event reflect to g-sensor, but I don't have any > > hardware can test it. > > > > Did you see any other value but not just "0x05 0x01 0x00 0x00 0x00 0x00 > > 0x00 0x00" ? > > Nope, nothing at all. I flipped it back and forth, no result :( > > > I mean if you invert your table, did you see other return value? The > > return data must point to Portrait or Landscape view. > > Nope, still zeroes. This is only some interrupt-like event I believe. My > opinion is, I need to call some WMI method to actually read-back the data. > > > > I've been poking around for quite a bit, but so far didn't get any > > > further data from it but this event. Any idea how to progress please? I > > > think I just need to call some of the methods (see below) that'll > > > return the values from the gyrosensor. > > > > > > Find "fwts wmi -" below: > > > > > > 00012 wmi Test 1 of 2: Check Windows Management > > > Instrumentation in DSDT > > > 00013 wmi Found WMI Event, Notifier ID: 0xbc, GUID: > > > 676AA15E-6A47-4D9F-A2CC-1E6D18D14026, Instance 0x01 > > > 00014 wmi PASSED: Test 1, GUID > > > 676AA15E-6A47-4D9F-A2CC-1E6D18D14026 is handled by driver acer-wmi > > > (Vendor: Acer). > > > 00015 wmi Found WMI Method WMAA with GUID: > > > 61EF69EA-865C-4BC3-A502- A0DEBA0CB531, Instance 0x01 > > > 00016 wmi PASSED: Test 1, GUID > > > 61EF69EA-865C-4BC3-A502-A0DEBA0CB531 is handled by driver acer-wmi > > > (Vendor: Acer). > > > 00017 wmi Found WMI Method WMBL with GUID: > > > FE1DBBDA-3014-4856-870C-5B3A744BF341, Instance 0x01 > > > 00018 wmi Found WMI Method WMBE with GUID: > > > 79772EC5-04B1-4BFD-843C-61E7F77B6CC9, Instance 0x01 > > > 00019 wmi Found WMI Method WMBK with GUID: > > > F75F5666-B8B3-4A5D- A91C-7488F62E5637, Instance 0x01 > > > 00020 wmi Found WMI Object, Object ID AB, GUID: > > > 05901221-D566-11D1- B2F0-00A0C9062910, Instance 0x01, Flags: 00 > > > 00021 wmi Found WMI Object, Object ID 00, GUID: > > > 39142400-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00022 wmi Found WMI Object, Object ID 01, GUID: > > > 49142400-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00023 wmi Found WMI Object, Object ID 02, GUID: > > > 4A142400-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00024 wmi Found WMI Object, Object ID 11, GUID: > > > 49142401-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00025 wmi Found WMI Object, Object ID 12, GUID: > > > 4A142401-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00026 wmi Found WMI Object, Object ID 21, GUID: > > > 49142402-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00027 wmi Found WMI Object, Object ID 22, GUID: > > > 4A142402-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00028 wmi Found WMI Object, Object ID 31, GUID: > > > 49142403-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00029 wmi Found WMI Object, Object ID 32, GUID: > > > 4A142403-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00030 wmi Found WMI Object, Object ID 41, GUID: > > > 49142404-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00031 wmi Found WMI Object, Object ID 42, GUID: > > > 4A142404-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00032 wmi Found WMI Object, Object ID 51, GUID: > > > 49142405-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00033 wmi Found WMI Object, Object ID 52, GUID: > > > 4A142405-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00034 wmi Found WMI Object, Object ID 61, GUID: > > > 49142406-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00035 wmi Found WMI Object, Object ID 62, GUID: > > > 4A142406-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00036 wmi Found WMI Object, Object ID 71, GUID: > > > 49142407-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00037 wmi Found WMI Object, Object ID 72, GUID: > > > 4A142407-C6A3-40FA- BADB-8A2652834100, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00038 wmi Found WMI Event, Notifier ID: 0x80, GUID: > > > 59142400- C6A3-40FA-BADB-8A2652834100, Instance 0x01 > > > 00039 wmi FAILED [MEDIUM] WMIUnknownGUID: Test 1, GUID > > > 59142400- C6A3-40FA-BADB-8A2652834100 is unknown to the kernel, a > > > driver may need to be implemented for this GUID. > > > 00040 wmi > > > 00041 wmi ADVICE: A WMI driver probably needs to be written > > > for this event. > > > 00042 wmi It can checked for using: wmi_has_guid("59142400- > > > C6A3-40FA-BADB-8A2652834100"). > > > 00043 wmi One can install a notify handler using > > > wmi_install_notify_handler("59142400-C6A3-40FA-BADB-8A2652834100", > > > handler, NULL). > > > 00044 wmi http://lwn.net/Articles/391230 describes how to > > > write an appropriate driver. > > > 00045 wmi > > > 00046 wmi Found WMI Method WM05 with GUID: > > > 69142400-C6A3-40FA- BADB-8A2652834100, Instance 0x01 > > > 00047 wmi Found WMI Method WM06 with GUID: > > > 79142400-C6A3-40FA- BADB-8A2652834100, Instance 0x01 > > > 00048 wmi Found WMI Method WM07 with GUID: > > > 89142400-C6A3-40FA- BADB-8A2652834100, Instance 0x01 > > > 00049 wmi Found WMI Object, Object ID BA, GUID: > > > 05901221-D566-11D1- B2F0-00A0C9062910, Instance 0x01, Flags: 01 > > > WMI_EXPENSIVE > > > 00050 wmi > > > 00051 wmi Test 2 of 2: Check Windows Management > > > Instrumentation in SSDT > > > 00052 wmi No WMI data found in table SSDT1. > > > 00053 wmi No WMI data found in table SSDT2. > > > > > > Best regards, > > > Marek Vasut > > > > Could you please kindly share the acpidump to me? > > > > # acpidump > acpidump.dat > > Find attached. Thanks for your reply, I'm really lost with this, I spent > some time on it and got nowhere :-( Did you get anywhere with this stuff? Is there any way I can help you with this? Thank you! > > > Thanks a lot! > > Joey Lee Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <1336436380.5272.5047.camel@linux-s257.site>]
[parent not found: <201205080345.44070.marek.vasut@gmail.com>]
[parent not found: <201205271028.55484.marek.vasut@gmail.com>]
[parent not found: <1338133547.9751.3824.camel@linux-s257.site>]
* Re: Acer-WMI: Iconia TAB W500 gyrosensor [not found] ` <1338133547.9751.3824.camel@linux-s257.site> @ 2012-05-27 16:21 ` joeyli 2012-05-27 21:58 ` Marek Vasut 0 siblings, 1 reply; 6+ messages in thread From: joeyli @ 2012-05-27 16:21 UTC (permalink / raw) To: Marek Vasut; +Cc: platform-driver-x86 於 日,2012-05-27 於 23:45 +0800,joeyli 提到: > 於 日,2012-05-27 於 10:28 +0200,Marek Vasut 提到: > > Dear joeyli, > > > > > > Hi Marek, > > > > > > > > 於 一,2012-05-07 於 21:38 +0200,Marek Vasut 提到: > > > > > > > > > > > > > > > > > > > > Now it gets interesting ;-) > > > > > > > > > > > > > > > > The obj->buffer.pointer contains the following: > > > > > > > > 0x05 0x01 0x00 0x00 0x00 0x00 0x00 0x00 > > > > > > > > > > > > > > > > That means, return_value.function is 0x05, instead of 0x01 > > > > > > > > (WMID_HOTKEY_EVENT). > > > > > > > > > > > > > > Yes, the 0x05 event is a event reflect to g-sensor, but I don't > > > > > > > have any hardware can test it. > > > > > > > > > > > > > > Did you see any other value but not just "0x05 0x01 0x00 0x00 0x00 > > > > > > > 0x00 0x00 0x00" ? > > > > > > > > > > > > Nope, nothing at all. I flipped it back and forth, no result :( > > > > > > > > > > > > > I mean if you invert your table, did you see other return value? > > > > > > > The return data must point to Portrait or Landscape view. > > > > > > > > > > > > Nope, still zeroes. This is only some interrupt-like event I believe. > > > > > > My opinion is, I need to call some WMI method to actually read-back > > > > > > the data. > > > > > > > > > > > > ... > > > > > > > > Sorry! I am sticking on another critical issue. I will find a time to > > > > trace TAB's DSDT at this week. > > > > > > No need to be sorry, I know exactly what you mean :) No need to rush, I'm > > > stuck with a few bugs at work too. > > > > Hi, I'm starting to get curious again. Did you had time to look into it? Thanks > > in advance! > > > > Sorry for I am late to reply you! ... > > > > I checked your DSDT, unfortunately I found the logic is empty for > G-sesor in W500's DSDT. > > I mean, that's right we got only g-sensor event but didn't have sensor > state data, because they didn't put the return value in DSDT! > > On you TAB W500, the _Q7C method should run by EC when G-sensor detected > state change: > > Method (_Q7C, 0, NotSerialized) > { > If (LEqual (^^SENR.GSLC, Zero)) /* G sensor enabled? */ > { > Store (0x05, Index (^^^WMID.FEBC, Zero)) /* 0x05 is Sensor Event */ > Store (One, Index (^^^WMID.FEBC, One)) /* 0x01 is G-Sensor */ > Notify (WMID, 0xBC) > } > > If (LMST) > { > Return (Zero) > } > } > > You can enable ACPI debug message to verify _Q7C method run when you reverse TAB, add the > following kernel parameter and reboot: > > acpi.debug_level=0x0000000F acpi.debug_layer=0xffffffff log_buf_len=5M > > > The WMI event code in DSDT like this: > > Method (EVBC, 0, NotSerialized) /* call by _WED */ > { > ... > If (LEqual (Local0, One)) /* hotkey event */ > { > ... > If (LEqual (Local0, 0x05)) {} /* 0x05 is Sensor Event, why empty? */ > ... > Store (Zero, Index (FEBC, 0x04)) /* all set to zero */ > Store (Zero, Index (FEBC, 0x05)) > Store (Zero, Index (FEBC, 0x06)) > Store (Zero, Index (FEBC, 0x07)) > ... > Return (FEBC) > } > > > That's why we receive a G-sensor event but didn't have orientation information of TAB. > On windows platform, I believe there have another driver listen and handle this g-sensor event when tab turned. > OK, there havse a "BST0001" acpi device should handle by a g-sensor driver or a special acpi driver: Scope (_SB.PCI0.LPC0) { Device (SENR) { Name (_HID, "BST0001") Name (_UID, Zero) Name (_STA, 0x0F) Name (GSLC, Zero) /* G-sensor lock? */ Name (GSLX, Zero) /* X */ Name (GSLY, Zero) /* Y */ Name (GSLZ, Zero) /* Z */ ... Method (_INI, 0, NotSerialized) ... Method (RDST, 0, NotSerialized) { ... Method (RDVL, 0, NotSerialized) { ... Method (WRVL, 1, NotSerialized) { ... There have 3 methods "RDST", "RDVL" and "WRVL", currently, no idea for what functions provided by those 3 methods. my _GUESS_: "RDST" is read state? "RDVL" is read value(what!?) "WRVL" is write value? My idea is just find out which method is for read the orientation of G-sensor then we can use a driver raise it to userland. Thanks a lot! Joey Lee ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Acer-WMI: Iconia TAB W500 gyrosensor 2012-05-27 16:21 ` joeyli @ 2012-05-27 21:58 ` Marek Vasut 2012-05-27 22:47 ` Marek Vasut 0 siblings, 1 reply; 6+ messages in thread From: Marek Vasut @ 2012-05-27 21:58 UTC (permalink / raw) To: joeyli; +Cc: platform-driver-x86 Dear joeyli, > 於 日,2012-05-27 於 23:45 +0800,joeyli 提到: > > > 於 日,2012-05-27 於 10:28 +0200,Marek Vasut 提到: > > > > > Dear joeyli, > > > > > > > > Hi Marek, > > > > > > > > > > 於 一,2012-05-07 於 21:38 +0200,Marek Vasut 提到: > > > > > > > > > > > > > > Now it gets interesting ;-) > > > > > > > > > > > > > > > > > > The obj->buffer.pointer contains the following: > > > > > > > > > 0x05 0x01 0x00 0x00 0x00 0x00 0x00 0x00 > > > > > > > > > > > > > > > > > > That means, return_value.function is 0x05, instead of 0x01 > > > > > > > > > (WMID_HOTKEY_EVENT). > > > > > > > > > > > > > > > > Yes, the 0x05 event is a event reflect to g-sensor, but I > > > > > > > > don't have any hardware can test it. > > > > > > > > > > > > > > > > Did you see any other value but not just "0x05 0x01 0x00 0x00 > > > > > > > > 0x00 0x00 0x00 0x00" ? > > > > > > > > > > > > > > Nope, nothing at all. I flipped it back and forth, no result :( > > > > > > > > > > > > > > > I mean if you invert your table, did you see other return > > > > > > > > value? The return data must point to Portrait or Landscape > > > > > > > > view. > > > > > > > > > > > > > > Nope, still zeroes. This is only some interrupt-like event I > > > > > > > believe. My opinion is, I need to call some WMI method to > > > > > > > actually read-back the data. > > ... > > > > > > Sorry! I am sticking on another critical issue. I will find a time > > > > > to trace TAB's DSDT at this week. > > > > > > > > No need to be sorry, I know exactly what you mean :) No need to rush, > > > > I'm stuck with a few bugs at work too. > > > > > > Hi, I'm starting to get curious again. Did you had time to look into > > > it? Thanks in advance! > > > > Sorry for I am late to reply you! > > ... > > > I checked your DSDT, unfortunately I found the logic is empty for > > G-sesor in W500's DSDT. > > > > I mean, that's right we got only g-sensor event but didn't have sensor > > state data, because they didn't put the return value in DSDT! > > > > On you TAB W500, the _Q7C method should run by EC when G-sensor detected > > > > state change: > > Method (_Q7C, 0, NotSerialized) > > { > > > > If (LEqual (^^SENR.GSLC, Zero)) /* G > > sensor enabled? */ { > > > > Store (0x05, Index (^^^WMID.FEBC, Zero)) /* 0x05 > > is Sensor Event */ Store (One, Index (^^^WMID.FEBC, > > One)) /* 0x01 is G-Sensor */ Notify (WMID, > > 0xBC) > > > > } > > > > If (LMST) > > { > > > > Return (Zero) > > > > } > > > > } > > > > You can enable ACPI debug message to verify _Q7C method run when you > > reverse TAB, add the > > > > following kernel parameter and reboot: > > acpi.debug_level=0x0000000F acpi.debug_layer=0xffffffff log_buf_len=5M > > > > The WMI event code in DSDT like this: > > Method (EVBC, 0, NotSerialized) /* call by _WED > > */ { > > > > ... > > > > If (LEqual (Local0, One)) /* hotkey event > > */ { > > > > ... > > > > If (LEqual (Local0, 0x05)) {} > > /* 0x05 is Sensor Event, why empty? */ > > > > ... > > > > Store (Zero, Index (FEBC, 0x04)) /* all set to zero */ > > Store (Zero, Index (FEBC, 0x05)) > > Store (Zero, Index (FEBC, 0x06)) > > Store (Zero, Index (FEBC, 0x07)) > > > > ... > > > > Return (FEBC) > > > > } > > > > That's why we receive a G-sensor event but didn't have orientation > > information of TAB. On windows platform, I believe there have another > > driver listen and handle this g-sensor event when tab turned. > > OK, there havse a "BST0001" acpi device should handle by a g-sensor > driver or a special acpi driver: > > Scope (_SB.PCI0.LPC0) > { > Device (SENR) > { > Name (_HID, "BST0001") > Name (_UID, Zero) > Name (_STA, 0x0F) > Name (GSLC, Zero) /* G-sensor lock? */ > Name (GSLX, Zero) /* X */ > Name (GSLY, Zero) /* Y */ > Name (GSLZ, Zero) /* Z */ > ... > Method (_INI, 0, NotSerialized) > ... > Method (RDST, 0, NotSerialized) > { > ... > Method (RDVL, 0, NotSerialized) > { > ... > Method (WRVL, 1, NotSerialized) > { > ... > > > There have 3 methods "RDST", "RDVL" and "WRVL", currently, no idea for > what functions provided by those 3 methods. > > my _GUESS_: > "RDST" is read state? > "RDVL" is read value(what!?) > "WRVL" is write value? > > My idea is just find out which method is for read the orientation of > G-sensor then we can use a driver raise it to userland. Well, I'm getting somewhere, thanks for all your hints, they really blasted me forward! So, calling the _INI function, I get value of the G-Sensor kill switch (there's a toggle on the bottom of the tablet to enable/disable input from the accelerometer). So _INI returns integer, 0 for GS enabled, 1 for GS disabled. I didn't get further (yet). Will keep you in loop! Thanks! > > Thanks a lot! > Joey Lee Best regards, Marek Vasut ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: Acer-WMI: Iconia TAB W500 gyrosensor 2012-05-27 21:58 ` Marek Vasut @ 2012-05-27 22:47 ` Marek Vasut 0 siblings, 0 replies; 6+ messages in thread From: Marek Vasut @ 2012-05-27 22:47 UTC (permalink / raw) To: joeyli; +Cc: platform-driver-x86 Dear joeyli, > > 於 日,2012-05-27 於 23:45 +0800,joeyli 提到: > > > > > 於 日,2012-05-27 於 10:28 +0200,Marek Vasut 提到: > > > > > > > Dear joeyli, > > > > > > > > > > Hi Marek, > > > > > > > > > > > > 於 一,2012-05-07 於 21:38 +0200,Marek Vasut 提到: > > > > > > > > > > > > > > > > Now it gets interesting ;-) > > > > > > > > > > > > > > > > > > > > The obj->buffer.pointer contains the following: > > > > > > > > > > 0x05 0x01 0x00 0x00 0x00 0x00 0x00 0x00 > > > > > > > > > > > > > > > > > > > > That means, return_value.function is 0x05, instead of > > > > > > > > > > 0x01 (WMID_HOTKEY_EVENT). > > > > > > > > > > > > > > > > > > Yes, the 0x05 event is a event reflect to g-sensor, but I > > > > > > > > > don't have any hardware can test it. > > > > > > > > > > > > > > > > > > Did you see any other value but not just "0x05 0x01 0x00 > > > > > > > > > 0x00 0x00 0x00 0x00 0x00" ? > > > > > > > > > > > > > > > > Nope, nothing at all. I flipped it back and forth, no result > > > > > > > > :( > > > > > > > > > > > > > > > > > I mean if you invert your table, did you see other return > > > > > > > > > value? The return data must point to Portrait or Landscape > > > > > > > > > view. > > > > > > > > > > > > > > > > Nope, still zeroes. This is only some interrupt-like event I > > > > > > > > believe. My opinion is, I need to call some WMI method to > > > > > > > > actually read-back the data. > > > > ... > > > > > > > > Sorry! I am sticking on another critical issue. I will find a > > > > > > time to trace TAB's DSDT at this week. > > > > > > > > > > No need to be sorry, I know exactly what you mean :) No need to > > > > > rush, I'm stuck with a few bugs at work too. > > > > > > > > Hi, I'm starting to get curious again. Did you had time to look into > > > > it? Thanks in advance! > > > > > > Sorry for I am late to reply you! > > > > ... > > > > > I checked your DSDT, unfortunately I found the logic is empty for > > > G-sesor in W500's DSDT. > > > > > > I mean, that's right we got only g-sensor event but didn't have sensor > > > state data, because they didn't put the return value in DSDT! > > > > > > On you TAB W500, the _Q7C method should run by EC when G-sensor > > > detected > > > > > > state change: > > > Method (_Q7C, 0, NotSerialized) > > > { > > > > > > If (LEqual (^^SENR.GSLC, Zero)) /* G > > > sensor enabled? */ { > > > > > > Store (0x05, Index (^^^WMID.FEBC, Zero)) /* 0x05 > > > is Sensor Event */ Store (One, Index (^^^WMID.FEBC, > > > One)) /* 0x01 is G-Sensor */ Notify (WMID, > > > 0xBC) > > > > > > } > > > > > > If (LMST) > > > { > > > > > > Return (Zero) > > > > > > } > > > > > > } > > > > > > You can enable ACPI debug message to verify _Q7C method run when you > > > reverse TAB, add the > > > > > > following kernel parameter and reboot: > > > acpi.debug_level=0x0000000F acpi.debug_layer=0xffffffff log_buf_len=5M > > > > > > The WMI event code in DSDT like this: > > > Method (EVBC, 0, NotSerialized) /* call by _WED > > > */ { > > > > > > ... > > > > > > If (LEqual (Local0, One)) /* hotkey event > > > */ { > > > > > > ... > > > > > > If (LEqual (Local0, 0x05)) {} > > > /* 0x05 is Sensor Event, why empty? */ > > > > > > ... > > > > > > Store (Zero, Index (FEBC, 0x04)) /* all set to > > zero */ > > > > Store (Zero, Index (FEBC, 0x05)) > > > Store (Zero, Index (FEBC, 0x06)) > > > Store (Zero, Index (FEBC, 0x07)) > > > > > > ... > > > > > > Return (FEBC) > > > > > > } > > > > > > That's why we receive a G-sensor event but didn't have orientation > > > information of TAB. On windows platform, I believe there have another > > > driver listen and handle this g-sensor event when tab turned. > > > > OK, there havse a "BST0001" acpi device should handle by a g-sensor > > > > driver or a special acpi driver: > > Scope (_SB.PCI0.LPC0) > > { > > > > Device (SENR) > > { > > > > Name (_HID, "BST0001") > > Name (_UID, Zero) > > Name (_STA, 0x0F) > > Name (GSLC, Zero) /* G-sensor lock? */ > > Name (GSLX, Zero) /* X */ > > Name (GSLY, Zero) /* Y */ > > Name (GSLZ, Zero) /* Z */ > > > > ... > > > > Method (_INI, 0, NotSerialized) > > > > ... > > > > Method (RDST, 0, NotSerialized) > > { > > > > ... > > > > Method (RDVL, 0, NotSerialized) > > { > > > > ... > > > > Method (WRVL, 1, NotSerialized) > > { > > > > ... > > > > > > There have 3 methods "RDST", "RDVL" and "WRVL", currently, no idea for > > what functions provided by those 3 methods. > > > > my _GUESS_: > > "RDST" is read state? > > "RDVL" is read value(what!?) > > "WRVL" is write value? > > > > My idea is just find out which method is for read the orientation of > > G-sensor then we can use a driver raise it to userland. > > Well, I'm getting somewhere, thanks for all your hints, they really blasted > me forward! > > So, calling the _INI function, I get value of the G-Sensor kill switch > (there's a toggle on the bottom of the tablet to enable/disable input from > the accelerometer). So _INI returns integer, 0 for GS enabled, 1 for GS > disabled. I didn't get further (yet). Will keep you in loop! > > Thanks! Ok, I'm even getting values from RDVL now. I hope to come up with a patch soon. > > > Thanks a lot! > > Joey Lee ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2012-05-27 22:47 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-01 15:31 Acer-WMI: Iconia TAB W500 gyrosensor Marek Vasut
2012-05-02 1:37 ` joeyli
[not found] ` <201205020446.41735.marek.vasut@gmail.com>
2012-05-07 19:38 ` Marek Vasut
[not found] ` <1336436380.5272.5047.camel@linux-s257.site>
[not found] ` <201205080345.44070.marek.vasut@gmail.com>
[not found] ` <201205271028.55484.marek.vasut@gmail.com>
[not found] ` <1338133547.9751.3824.camel@linux-s257.site>
2012-05-27 16:21 ` joeyli
2012-05-27 21:58 ` Marek Vasut
2012-05-27 22:47 ` Marek Vasut
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.