Two new acpi modules, acpi_wmi and acpi_hp
Michael
freebsdusb at bindone.de
Wed Jun 24 08:29:29 UTC 2009
Paul B. Mahol wrote:
> On 6/24/09, Michael <freebsdusb at bindone.de> wrote:
>> Paul B. Mahol wrote:
>>> On 6/21/09, Michael <freebsdusb at bindone.de> wrote:
>>>> Hello,
>>>>
>>>> I wrote two new acpi modules last year and finally found the time to fix
>>>> them, add some missing features and write man pages.
>>>>
>>>> This is the first time I'm writing kernel code for FreeBSD, so please
>>>> excuse me if I failed to apply to all style conventions (I tried to
>>>> follow style(9) as closely as possible).
>>>>
>>>> acpi_wmi is an ACPI to WMI mapping driver (this is used by HP and Acer
>>>> notebooks and potentially others), so this could also be used to
>>>> implement additional drivers on (see for more details on WMI and ACPI:
>>>> http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx).
>>>> It provides /dev/wmistat, example output:
>>>> cat /dev/wmistat
>>>> GUID INST EXPE METH STR EVENT OID
>>>> {5FB7F034-2C63-45E9-BE91-3D44E2C707E4} 1 NO WMAA NO NO AA
>>>> {95F24279-4D7B-4334-9387-ACCDC67EF61C} 1 NO NO NO 0x80+ -
>>>> {2B814318-4BE8-4707-9D84-A190A859B5D0} 1 NO NO NO 0xA0 -
>>>> {05901221-D566-11D1-B2F0-00A0C9062910} 1 NO NO NO NO AB
>>>> {1F4C91EB-DC5C-460B-951D-C7CB9B4B8D5E} 1 NO WMBA NO NO BA
>>>> {2D114B49-2DFB-4130-B8FE-4A3C09E75133} 57 NO NO NO NO BC
>>>> {988D08E3-68F4-4C35-AF3E-6A1B8106F83C} 20 NO NO NO NO BD
>>>> {14EA9746-CE1F-4098-A0E0-7045CB4DA745} 1 NO NO NO NO BE
>>>> {322F2028-0F84-4901-988E-015176049E2D} 2 NO NO NO NO BF
>>>> {8232DE3D-663D-4327-A8F4-E293ADB9BF05} 0 NO NO NO NO BG
>>>> {8F1F6436-9F42-42C8-BADC-0E9424F20C9A} 0 NO NO NO NO BH
>>>> {8F1F6435-9F42-42C8-BADC-0E9424F20C9A} 0 NO NO NO NO BI
>>>>
>>>> acpi_hp is a driver that uses acpi_wmi to provide HP specific features.
>>>> These include:
>>>> - Activate/deactivate WLAN
>>>> - Activate/deactivate WWAN
>>>> - Activate/deactivate Bluetooth
>>>> - Auto activate/deactiavte based on hw radio status
>>>> - Devd notifications
>>>> - On air status for different
>>>> - Controls ambient light sensor
>>>> - Get docking status
>>>> - Read BIOS settings through /dev/hpcmi, example output:
>>>> Flash Media Reader Disable
>>>> USB Ports including Express Card slot Enable
>>>> 1394 Port Enable
>>>> Cardbus Slot Disable
>>>> Express Card Slot Disable
>>>> F9, F10 and F12 Delay(Sec) 0
>>>> USB Device Detection Delay (Sec) 0
>>>> Multiboot Enable
>>>> Express Boot Popup Delay(Sec) 0
>>>> CD-ROM Boot Enable
>>>> Floppy Boot Disable
>>>> Internal Network Adapter Boot Disable
>>>> Internal Network Adapter Boot Mode PXE
>>>> Swap Fn/Ctrl Key Disable
>>>> USB Legacy Support Disable
>>>> Parallel Port Mode ECP
>>>> ...
>>>>
>>>> The man pages included in the patch (man acpi_hp / man acpi_wmi) give
>>>> you detailed information about all sysctls and devices.
>>>>
>>>> The patch attached (acpi_wmi_and_acpi_hp.patch) has been tested against
>>>> 7.2-RELEASE and everything compiles cleanly, although my tests have been
>>>> on 8-CURRENT (but the snapshot is older than 7.2), so I expect this to
>>>> work ok on 7.2. The patch might fail against CURRENT though, this is why
>>>> I also attached patches.tgz, which contains individual patches per file.
>>>> I only tested this on i386 and the patch only changes i386 specific
>>>> things (I have no idea if this could possibly work on amd64, especially
>>>> because all the other acpi_support modules seem to be i386 only). Also
>>>> note, that I could only test this on my own machine (HP Compaq 8510p),
>>>> which features WLAN/BT/WLAN, so I don't know if the readings will be
>>>> sane if your machine doesn't feature a WWAN chip. In theory this should
>>>> work for many different HP models.
>>>>
>>>> Installation instructions (replace MYKERNEL with your kernel name):
>>>>
>>>> mkdir /usr/src/sys/modules/acpi/acpi_wmi
>>>> mkdir /usr/src/sys/modules/acpi/acpi_hp
>>>> patch -d /usr/src < acpi_wmi_and_acpi_hp.patch
>>>> cd /usr/src/share/man/man4/man4.i386
>>>> make all && make install
>>>> cd /usr/src/sys/i386/conf
>>>> config MYKERNEL
>>>> cd ../compile/MYKERNEL
>>>> make cleandepend && make depend
>>>> make all
>>>> make install
>>>> reboot
>>>> .
>>>> .
>>>> .
>>>> kldload acpi_hp
>>>> cat /dev/wmistat
>>>> sysctl -a | grep acpi_hp.0
>>>> sysctl dev.acpi_hp.0.als = 0
>>>> cat /dev/hpcmi
>>>> sysctl dev.acpi_hp.0.cmi_detail=7
>>>> cat /dev/hpcmi
>>>>
>>>> It would be nice to get some feedback on this and maybe someone else can
>>>> implement vendor specific ACPI modules for other WMI based laptops now.
>>> I tested committed version on 8.0.
>>> What about making following verbose device_printfs optional:
>>> Wireless status is 0xXXXX , (new_wlan_status is 0xXXXX),
>>> (new_wwan_status is 0xXXXX)
>>>
>>>
>>> # cat /dev/hpcmi
>>>
>>> doesn't show Enabled/Disabled/Values.
>>>
>> What does cat /dev/hpcmi show on your system?
>> Did you try modifying dev.acpi_hp.0.cmi_detail (see man acpi_hp(4))?
>> What is in /var/log/messages when loading the driver?
>
>> cat /dev/wmistat
> GUID INST EXPE METH STR EVENT OID
> {5FB7F034-2C63-45E9-BE91-3D44E2C707E4} 1 NO WMAA NO NO AA
> {95F24279-4D7B-4334-9387-ACCDC67EF61C} 1 NO NO NO 0x80+ -
> {2B814318-4BE8-4707-9D84-A190A859B5D0} 1 NO NO NO 0xA0 -
> {05901221-D566-11D1-B2F0-00A0C9062910} 1 NO NO NO NO AB
> {1F4C91EB-DC5C-460B-951D-C7CB9B4B8D5E} 1 NO WMBA NO NO BA
> {2D114B49-2DFB-4130-B8FE-4A3C09E75133} 41 NO NO NO NO BC
> {988D08E3-68F4-4C35-AF3E-6A1B8106F83C} 14 NO NO NO NO BD
> {14EA9746-CE1F-4098-A0E0-7045CB4DA745} 1 NO NO NO NO BE
> {322F2028-0F84-4901-988E-015176049E2D} 2 NO NO NO NO BF
> {8232DE3D-663D-4327-A8F4-E293ADB9BF05} 0 NO NO NO NO BG
> {8F1F6436-9F42-42C8-BADC-0E9424F20C9A} 0 NO NO NO NO BH
> {8F1F6435-9F42-42C8-BADC-0E9424F20C9A} 0 NO NO NO NO BI
>
>> cat /dev/hpcmi
> Serial Port
> Infrared Port
> Parallel Port
> Flash Media Reader
> USB Ports
> 1394 Port
> Cardbus Slot
> Express Card Slot
> F9, F10 and F12 Delay(Sec)
> Multiboot
> Express Boot Popup Delay(Sec)
> CD-ROM Boot
> Floppy Boot
> Internal Network Adapter Boot
> Internal Network Adapter Boot Mode
> Swap Fn/Ctrl Key
> HDD Translation Mode
> Virtualization Technology
> USB Legacy Support
> Parallel Port Mode
> BIOS DMA Data Transfers
> Fan Always on while on AC Power
> Data Execution Prevention
> LAN Power Saving
> SATA Native Mode
> Dual Core CPU
> Secondary Battery Fast Charge
> Embedded WLAN Device Radio
> Embedded WWAN Device Radio
> Ambient Light Sensor
> Embedded Bluetooth Device Radio
> LAN/WLAN Switching
> Wake on LAN
>
>
> acpi_wmi0: <ACPI-WMI mapping> on acpi0
> acpi_hp0: <HP ACPI-WMI Mapping> on acpi0
> acpi_hp0: HP event GUID detected, installing event handler
> acpi_hp0: HP CMI GUID detected
> acpi_wmi0: Wireless status is c0a0f2b
> acpi_wmi0: WLAN on air changed to 1 (new_wlan_status is 256)
> acpi_wmi0: Wireless status is c02062b
> acpi_wmi0: WLAN on air changed to 0 (new_wlan_status is 0)
> acpi_wmi0: Wireless status is c0a0f2b
> acpi_wmi0: WLAN on air changed to 1 (new_wlan_status is 256)
> ACPI Error: Field [C2CA] at 336 exceeds Buffer [C281] size 328 (bits)
> 20090521 dsopcode-697
> ACPI Error (psparse-0633): Method parse/execution failed
> [\\_SB_.C241.WQBC] (Node 0xc3dceb20), AE_AML_BUFFER_LIMIT
>
Interesting... can you send me your DSDT? The last error message is
definitely caused by a bug in the DSDT, but that that shouldn't prevent
the values from showing up (I assume you tried on a wide terminal).
Can you send me the following informations:
1. Output of cat /dev/wmistat (cat /dev/wmistat >/tmp/wmistat.out)
2. Output of cat /dev/hpcmi with cmi_detail set to 7
(sysctl dev.acpi_hp.0.cmi_detail=7; cat /dev/hpcmi >/tmp/hpcmi.out)
3. Your DSDT (acpidump -dt > /tmp/my_computer.asl)
thanks
Michael
More information about the freebsd-acpi
mailing list