All of lore.kernel.org
 help / color / mirror / Atom feed
* 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

* 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

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