* Driver for ACPI WMI (Windows Management Instrumentation)

* Driver for ACPI HP extra functionations, which required
  ACPI WMI driver.

Submitted by:	Michael <freebsdusb at bindone.de>
Approved by:	re
MFC after:	2 weeks
This commit is contained in:
Rui Paulo 2009-06-23 13:17:25 +00:00
parent a877d0cffa
commit df849145b5
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=194701
14 changed files with 3109 additions and 3 deletions

View File

@ -7,12 +7,14 @@ MAN= aac.4 \
${_acpi_asus.4} \
${_acpi_dock.4} \
${_acpi_fujitsu.4} \
${_acpi_hp.4} \
${_acpi_ibm.4} \
${_acpi_panasonic.4} \
${_acpi_sony.4} \
acpi_thermal.4 \
${_acpi_toshiba.4} \
acpi_video.4 \
${_acpi_wmi.4} \
adv.4 \
adw.4 \
ae.4 \
@ -594,10 +596,12 @@ _acpi_aiboost.4=acpi_aiboost.4
_acpi_asus.4= acpi_asus.4
_acpi_dock.4= acpi_dock.4
_acpi_fujitsu.4=acpi_fujitsu.4
_acpi_hp.4= acpi_hp.4
_acpi_ibm.4= acpi_ibm.4
_acpi_panasonic.4=acpi_panasonic.4
_acpi_sony.4= acpi_sony.4
_acpi_toshiba.4=acpi_toshiba.4
_acpi_wmi.4= acpi_wmi.4
_amdsmb.4= amdsmb.4
_amdtemp.4= amdtemp.4
_asmc.4= asmc.4

546
share/man/man4/acpi_hp.4 Normal file
View File

@ -0,0 +1,546 @@
.\" Copyright (c) 2009 Michael Gmelin
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd June 21, 2009
.Dt ACPI_HP 4 i386
.Os
.Sh NAME
.Nm acpi_hp
.Nd "ACPI extras driver for HP laptops"
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device acpi_hp"
.Ed
.Pp
Alternatively, to load the driver as a
module at boot time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
acpi_hp_load="YES"
.Ed
.Sh DESCRIPTION
The
.Nm
driver provides support for ACPI-controlled features found on HP laptops
that use a WMI enabled BIOS (e.g. HP Compaq 8510p and 6510p).
.Pp
The main purpose of this driver is to provide an interface,
accessible via
.Xr sysctl 8 ,
.Xr devd 8 and
.Xr devfs 8 ,
through which applications can determine and change the status of
various laptop components and BIOS settings.
.Pp
.Ss Xr devd 8 Ss Events
Devd events received by
.Xr devd 8
provide the following information:
.Pp
.Bl -tag -width "subsystem" -offset indent -compact
.It system
.Qq Li ACPI
.It subsystem
.Qq Li HP
.It type
The source of the event in the ACPI namespace.
The value depends on the model.
.It notify
Event code (see below).
.El
.Pp
Event codes:
.Pp
.Bl -tag -width "0xc0" -offset indent -compact
.It Li 0xc0
WLAN on air status changed to 0 (not on air)
.It Li 0xc1
WLAN on air status changed to 1 (on air)
.It Li 0xd0
Bluetooth on air status changed to 0 (not on air)
.It Li 0xd1
Bluetooth on air status changed to 1 (on air)
.It Li 0xe0
WWAN on air status changed to 0 (not on air)
.It Li 0xe1
WWAN on air status changed to 1 (on air)
.El
.Ss Xr devfs 8 Ss Device
You can read /dev/hpcmi to see your current BIOS settings. The detail level
can be adjusted by setting the sysctl
.Va cmi_detail
as described below.
.Sh SYSCTL VARIABLES
The following sysctls are currently implemented:
.Ss WLAN:
.Bl -tag -width indent
.It Va dev.acpi_hp.0.wlan_enabled
Toggle WLAN chip activity.
.It Va dev.acpi_hp.0.wlan_radio
(read-only)
WLAN radio status (controlled by hardware switch)
.It Va dev.acpi_hp.0.wlan_on_air
(read-only)
WLAN on air (chip enabled, hardware switch enabled + enabled in BIOS)
.It Va dev.acpi_hp.0.wlan_enabled_if_radio_on
If set to 1, the WLAN chip will be enabled if the radio is turned on
.It Va dev.acpi_hp.0.wlan_disable_if_radio_off
If set to 1, the WLAN chip will be disabled if the radio is turned off
.El
.Ss Bluetooth:
.Bl -tag -width indent
.It Va dev.acpi_hp.0.bt_enabled
Toggle Bluetooth chip activity.
.It Va dev.acpi_hp.0.bt_radio
(read-only)
Bluetooth radio status (controlled by hardware switch)
.It Va dev.acpi_hp.0.bt_on_air
(read-only)
Bluetooth on air (chip enabled, hardware switch enabled + enabled in BIOS)
.It Va dev.acpi_hp.0.bt_enabled_if_radio_on
If set to 1, the Bluetooth chip will be enabled if the radio is turned on
.It Va dev.acpi_hp.0.bt_disable_if_radio_off
If set to 1, the Bluetooth chip will be disabled if the radio is turned off
.El
.Ss WWAN:
.Bl -tag -width indent
.It Va dev.acpi_hp.0.wwan_enabled
Toggle WWAN chip activity.
.It Va dev.acpi_hp.0.wwan_radio
(read-only)
WWAN radio status (controlled by hardware switch)
.It Va dev.acpi_hp.0.wwan_on_air
(read-only)
WWAN on air (chip enabled, hardware switch enabled + enabled in BIOS)
.It Va dev.acpi_hp.0.wwan_enabled_if_radio_on
If set to 1, the WWAN chip will be enabled if the radio is turned on
.It Va dev.acpi_hp.0.wwan_disable_if_radio_off
If set to 1, the WWAN chip will be disabled if the radio is turned off
.El
.Ss Misc:
.Bl -tag -width indent
.It Va dev.acpi_hp.0.als_enabled
Toggle ambient light sensor (ALS)
.It Va dev.acpi_hp.0.display
(read-only)
Display status (bitmask)
.It Va dev.acpi_hp.0.hdd_temperature
(read-only)
HDD temperature
.It Va dev.acpi_hp.0.is_docked
(read-only)
Docking station status (1 if docked)
.It Va dev.acpi_hp.0.cmi_detail
Bitmask to control detail level in /dev/hpcmi output (values can be ORed).
.Bl -tag -width "0x01" -offset indent -compact
.It Li 0x01
Show path component of BIOS setting
.It Li 0x02
Show a list of valid options for the BIOS setting
.It Li 0x04
Show additional flags of BIOS setting (ReadOnly etc.)
.El
.El
.Pp
Defaults for these sysctls can be set in
.Xr sysctl.conf 5 .
.Sh FILES
.Bl -tag -width ".Pa /dev/hpcmi"
.It Pa /dev/hpcmi
Interface to read BIOS settings
.El
.Sh EXAMPLES
The following can be added to
.Xr devd.conf 5
in order disable the LAN interface when WLAN on air and reenable if it's
not:
.Bd -literal -offset indent
notify 0 {
match "system" "ACPI";
match "subsystem" "HP";
match "notify" "0xc0";
action "ifconfig em0 up";
};
notify 0 {
match "system" "ACPI";
match "subsystem" "HP";
match "notify" "0xc1";
action "ifconfig em0 down";
};
.Ed
.Pp
Enable the ambient light sensor:
.Bd -literal -offset indent
sysctl dev.acpi_hp.0.als_enabled=1
.Ed
.Pp
Enable Bluetooth:
.Bd -literal -offset indent
sysctl dev.acpi_hp.0.bt_enabled=1
.Ed
.Pp
Get BIOS settings:
.Bd -literal -offset indent
cat /dev/hpcmi
Serial Port Disable
Infrared Port Enable
Parallel Port Disable
Flash Media Reader Disable
USB Ports including Express Card slot Enable
1394 Port Enable
Cardbus Slot Disable
Express Card Slot Disable
(...)
.Ed
.Pp
Set maximum detail level for /dev/hpcmi output:
.Bd -literal -offset indent
sysctl dev.acpi_hp.0.cmi_detail=7
.Ed
.Pp
.Sh SEE ALSO
.Xr acpi 4 ,
.Xr acpi_wmi 4 ,
.Xr sysctl.conf 5 ,
.Xr devd 8 ,
.Xr devfs 8 ,
.Xr sysctl 8
.Sh HISTORY
The
.Nm
device driver first appeared in
.Fx CURRENT .
.Sh AUTHORS
.An -nosplit
The
.Nm
driver was written by
.An Michael Gmelin Aq freebsd@grem.de
.Pp
It has been inspired by hp-wmi driver, which implements a subset of these
features (hotkeys) on Linux.
.Pp
.Bl -tag -width indent
.It HP CMI whitepaper:
http://h20331.www2.hp.com/Hpsub/downloads/cmi_whitepaper.pdf
.It wmi-hp for Linux:
http://www.kernel.org
.It WMI and ACPI:
http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
.El
.Pp
This manual page was written by
.An Michael Gmelin Aq freebsd@grem.de
.Sh BUGS
This driver is experimental and has only been tested on CURRENT i386 on an
HP Compaq 8510p which featured all supported wireless devices (WWAN/BT/WLAN).
Expect undefined results when operating on different hardware.
.Pp
Loading the driver is slow. Reading from /dev/hpcmi is even slower.
.Pp
Additional features like HP specific sensor readings or writing BIOS
settings are not supported.
.\" Copyright (c) 2009 Michael Gmelin
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd June 21, 2009
.Dt ACPI_HP 4 i386
.Os
.Sh NAME
.Nm acpi_hp
.Nd "ACPI extras driver for HP laptops"
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device acpi_hp"
.Ed
.Pp
Alternatively, to load the driver as a
module at boot time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
acpi_hp_load="YES"
.Ed
.Sh DESCRIPTION
The
.Nm
driver provides support for ACPI-controlled features found on HP laptops
that use a WMI enabled BIOS (e.g. HP Compaq 8510p and 6510p).
.Pp
The main purpose of this driver is to provide an interface,
accessible via
.Xr sysctl 8 ,
.Xr devd 8 and
.Xr devfs 8 ,
through which applications can determine and change the status of
various laptop components and BIOS settings.
.Pp
.Ss Xr devd 8 Ss Events
Devd events received by
.Xr devd 8
provide the following information:
.Pp
.Bl -tag -width "subsystem" -offset indent -compact
.It system
.Qq Li ACPI
.It subsystem
.Qq Li HP
.It type
The source of the event in the ACPI namespace.
The value depends on the model.
.It notify
Event code (see below).
.El
.Pp
Event codes:
.Pp
.Bl -tag -width "0xc0" -offset indent -compact
.It Li 0xc0
WLAN on air status changed to 0 (not on air)
.It Li 0xc1
WLAN on air status changed to 1 (on air)
.It Li 0xd0
Bluetooth on air status changed to 0 (not on air)
.It Li 0xd1
Bluetooth on air status changed to 1 (on air)
.It Li 0xe0
WWAN on air status changed to 0 (not on air)
.It Li 0xe1
WWAN on air status changed to 1 (on air)
.El
.Ss Xr devfs 8 Ss Device
You can read /dev/hpcmi to see your current BIOS settings. The detail level
can be adjusted by setting the sysctl
.Va cmi_detail
as described below.
.Sh SYSCTL VARIABLES
The following sysctls are currently implemented:
.Ss WLAN:
.Bl -tag -width indent
.It Va dev.acpi_hp.0.wlan_enabled
Toggle WLAN chip activity.
.It Va dev.acpi_hp.0.wlan_radio
(read-only)
WLAN radio status (controlled by hardware switch)
.It Va dev.acpi_hp.0.wlan_on_air
(read-only)
WLAN on air (chip enabled, hardware switch enabled + enabled in BIOS)
.It Va dev.acpi_hp.0.wlan_enabled_if_radio_on
If set to 1, the WLAN chip will be enabled if the radio is turned on
.It Va dev.acpi_hp.0.wlan_disable_if_radio_off
If set to 1, the WLAN chip will be disabled if the radio is turned off
.El
.Ss Bluetooth:
.Bl -tag -width indent
.It Va dev.acpi_hp.0.bt_enabled
Toggle Bluetooth chip activity.
.It Va dev.acpi_hp.0.bt_radio
(read-only)
Bluetooth radio status (controlled by hardware switch)
.It Va dev.acpi_hp.0.bt_on_air
(read-only)
Bluetooth on air (chip enabled, hardware switch enabled + enabled in BIOS)
.It Va dev.acpi_hp.0.bt_enabled_if_radio_on
If set to 1, the Bluetooth chip will be enabled if the radio is turned on
.It Va dev.acpi_hp.0.bt_disable_if_radio_off
If set to 1, the Bluetooth chip will be disabled if the radio is turned off
.El
.Ss WWAN:
.Bl -tag -width indent
.It Va dev.acpi_hp.0.wwan_enabled
Toggle WWAN chip activity.
.It Va dev.acpi_hp.0.wwan_radio
(read-only)
WWAN radio status (controlled by hardware switch)
.It Va dev.acpi_hp.0.wwan_on_air
(read-only)
WWAN on air (chip enabled, hardware switch enabled + enabled in BIOS)
.It Va dev.acpi_hp.0.wwan_enabled_if_radio_on
If set to 1, the WWAN chip will be enabled if the radio is turned on
.It Va dev.acpi_hp.0.wwan_disable_if_radio_off
If set to 1, the WWAN chip will be disabled if the radio is turned off
.El
.Ss Misc:
.Bl -tag -width indent
.It Va dev.acpi_hp.0.als_enabled
Toggle ambient light sensor (ALS)
.It Va dev.acpi_hp.0.display
(read-only)
Display status (bitmask)
.It Va dev.acpi_hp.0.hdd_temperature
(read-only)
HDD temperature
.It Va dev.acpi_hp.0.is_docked
(read-only)
Docking station status (1 if docked)
.It Va dev.acpi_hp.0.cmi_detail
Bitmask to control detail level in /dev/hpcmi output (values can be ORed).
.Bl -tag -width "0x01" -offset indent -compact
.It Li 0x01
Show path component of BIOS setting
.It Li 0x02
Show a list of valid options for the BIOS setting
.It Li 0x04
Show additional flags of BIOS setting (ReadOnly etc.)
.El
.El
.Pp
Defaults for these sysctls can be set in
.Xr sysctl.conf 5 .
.Sh FILES
.Bl -tag -width ".Pa /dev/hpcmi"
.It Pa /dev/hpcmi
Interface to read BIOS settings
.El
.Sh EXAMPLES
The following can be added to
.Xr devd.conf 5
in order disable the LAN interface when WLAN on air and reenable if it's
not:
.Bd -literal -offset indent
notify 0 {
match "system" "ACPI";
match "subsystem" "HP";
match "notify" "0xc0";
action "ifconfig em0 up";
};
notify 0 {
match "system" "ACPI";
match "subsystem" "HP";
match "notify" "0xc1";
action "ifconfig em0 down";
};
.Ed
.Pp
Enable the ambient light sensor:
.Bd -literal -offset indent
sysctl dev.acpi_hp.0.als_enabled=1
.Ed
.Pp
Enable Bluetooth:
.Bd -literal -offset indent
sysctl dev.acpi_hp.0.bt_enabled=1
.Ed
.Pp
Get BIOS settings:
.Bd -literal -offset indent
cat /dev/hpcmi
Serial Port Disable
Infrared Port Enable
Parallel Port Disable
Flash Media Reader Disable
USB Ports including Express Card slot Enable
1394 Port Enable
Cardbus Slot Disable
Express Card Slot Disable
(...)
.Ed
.Pp
Set maximum detail level for /dev/hpcmi output:
.Bd -literal -offset indent
sysctl dev.acpi_hp.0.cmi_detail=7
.Ed
.Pp
.Sh SEE ALSO
.Xr acpi 4 ,
.Xr acpi_wmi 4 ,
.Xr sysctl.conf 5 ,
.Xr devd 8 ,
.Xr devfs 8 ,
.Xr sysctl 8
.Sh HISTORY
The
.Nm
device driver first appeared in
.Fx CURRENT .
.Sh AUTHORS
.An -nosplit
The
.Nm
driver was written by
.An Michael Gmelin Aq freebsd@grem.de
.Pp
It has been inspired by hp-wmi driver, which implements a subset of these
features (hotkeys) on Linux.
.Pp
.Bl -tag -width indent
.It HP CMI whitepaper:
http://h20331.www2.hp.com/Hpsub/downloads/cmi_whitepaper.pdf
.It wmi-hp for Linux:
http://www.kernel.org
.It WMI and ACPI:
http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
.El
.Pp
This manual page was written by
.An Michael Gmelin Aq freebsd@grem.de
.Sh BUGS
This driver is experimental and has only been tested on CURRENT i386 on an
HP Compaq 8510p which featured all supported wireless devices (WWAN/BT/WLAN).
Expect undefined results when operating on different hardware.
.Pp
Loading the driver is slow. Reading from /dev/hpcmi is even slower.
.Pp
Additional features like HP specific sensor readings or writing BIOS
settings are not supported.

194
share/man/man4/acpi_wmi.4 Normal file
View File

@ -0,0 +1,194 @@
.\" Copyright (c) 2009 Michael Gmelin
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd June 21, 2009
.Dt ACPI_WMI 4 i386
.Os
.Sh NAME
.Nm acpi_wmi
.Nd "ACPI to WMI mapping driver"
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device acpi_wmi"
.Ed
.Pp
Alternatively, to load the driver as a
module at boot time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
acpi_wmi_load="YES"
.Ed
.Sh DESCRIPTION
The
.Nm
driver provides an interface for vendor specific WMI implementations
(e.g. HP and Acer laptops). It creates /dev/wmistat, which can be read to get
information about GUIDs found in the system.
.Sh FILES
.Bl -tag -width /dev/wmistat -compact
.It Pa /dev/wmistat
WMI status device.
.El
.Sh EXAMPLES
.Bd Literal
root# 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
.Ed
.Sh SEE ALSO
.Xr acpi 4 ,
.Sh HISTORY
The
.Nm
device driver first appeared in
.Fx CURRENT .
.Sh AUTHORS
.An -nosplit
The
.Nm
driver was written by
.An Michael Gmelin Aq freebsd@grem.de
.Pp
Work has been inspired by the Linux acpi-wmi driver written by Carlos Corbacho
.Pp
See http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx for
the specification of ACPI-WMI.
.Pp
This manual page was written by
.An Michael Gmelin Aq freebsd@grem.de
.\" Copyright (c) 2009 Michael Gmelin
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd June 21, 2009
.Dt ACPI_WMI 4 i386
.Os
.Sh NAME
.Nm acpi_wmi
.Nd "ACPI to WMI mapping driver"
.Sh SYNOPSIS
To compile this driver into the kernel,
place the following line in your
kernel configuration file:
.Bd -ragged -offset indent
.Cd "device acpi_wmi"
.Ed
.Pp
Alternatively, to load the driver as a
module at boot time, place the following line in
.Xr loader.conf 5 :
.Bd -literal -offset indent
acpi_wmi_load="YES"
.Ed
.Sh DESCRIPTION
The
.Nm
driver provides an interface for vendor specific WMI implementations
(e.g. HP and Acer laptops). It creates /dev/wmistat, which can be read to get
information about GUIDs found in the system.
.Sh FILES
.Bl -tag -width /dev/wmistat -compact
.It Pa /dev/wmistat
WMI status device.
.El
.Sh EXAMPLES
.Bd Literal
root# 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
.Ed
.Sh SEE ALSO
.Xr acpi 4 ,
.Sh HISTORY
The
.Nm
device driver first appeared in
.Fx CURRENT .
.Sh AUTHORS
.An -nosplit
The
.Nm
driver was written by
.An Michael Gmelin Aq freebsd@grem.de
.Pp
Work has been inspired by the Linux acpi-wmi driver written by Carlos Corbacho
.Pp
See http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx for
the specification of ACPI-WMI.
.Pp
This manual page was written by
.An Michael Gmelin Aq freebsd@grem.de

View File

@ -398,9 +398,11 @@ dev/aac/aac_debug.c optional aac
dev/aac/aac_disk.c optional aac
dev/aac/aac_linux.c optional aac compat_linux
dev/aac/aac_pci.c optional aac pci
dev/acpi_support/acpi_wmi.c optional acpi_wmi acpi
dev/acpi_support/acpi_aiboost.c optional acpi_aiboost acpi
dev/acpi_support/acpi_asus.c optional acpi_asus acpi
dev/acpi_support/acpi_fujitsu.c optional acpi_fujitsu acpi
dev/acpi_support/acpi_hp.c optional acpi_hp acpi
dev/acpi_support/acpi_ibm.c optional acpi_ibm acpi
dev/acpi_support/acpi_panasonic.c optional acpi_panasonic acpi
dev/acpi_support/acpi_sony.c optional acpi_sony acpi

View File

@ -146,6 +146,7 @@ crypto/via/padlock.c optional padlock
crypto/via/padlock_cipher.c optional padlock
crypto/via/padlock_hash.c optional padlock
dev/acpica/acpi_if.m standard
dev/acpi_support/acpi_wmi_if.m standard
dev/agp/agp_amd64.c optional agp
dev/agp/agp_i810.c optional agp
dev/agp/agp_intel.c optional agp

View File

@ -223,6 +223,7 @@ dev/syscons/scvtb.c optional sc
dev/syscons/teken/teken.c optional sc
dev/uart/uart_cpu_i386.c optional uart
dev/acpica/acpi_if.m standard
dev/acpi_support/acpi_wmi_if.m standard
dev/wpi/if_wpi.c optional wpi
i386/acpica/OsdEnvironment.c optional acpi
i386/acpica/acpi_machdep.c optional acpi

View File

@ -320,7 +320,8 @@ ${_src}:
.endfor
.endif
MFILES?= dev/acpica/acpi_if.m dev/agp/agp_if.m dev/ata/ata_if.m dev/eisa/eisa_if.m \
MFILES?= dev/acpica/acpi_if.m dev/acpi_support/acpi_wmi_if.m \
dev/agp/agp_if.m dev/ata/ata_if.m dev/eisa/eisa_if.m \
dev/iicbus/iicbb_if.m dev/iicbus/iicbus_if.m \
dev/mmc/mmcbr_if.m dev/mmc/mmcbus_if.m \
dev/mii/miibus_if.m dev/ofw/ofw_bus_if.m \

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,144 @@
#-
# Copyright (c) 2009 Michael Gmelin
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# $FreeBSD$
#
#include <sys/bus.h>
#include <sys/types.h>
#include <contrib/dev/acpica/include/acpi.h>
INTERFACE acpi_wmi;
#
# Default implementation for acpi_wmi_generic_provides_guid_string().
#
CODE {
static int
acpi_wmi_generic_provides_guid_string(device_t dev, const char* guid_string)
{
return 0;
}
};
#
# Check if given GUID exists in WMI
#
# device_t dev: Device to probe
# const char* guid_string: String form of the GUID
#
METHOD int provides_guid_string {
device_t dev;
const char* guid_string;
} DEFAULT acpi_wmi_generic_provides_guid_string;
#
# Evaluate a WMI method call
#
# device_t dev: Device to use
# const char* guid_string: String form of the GUID
# UINT8 instance: instance id
# UINT32 method_id: method to call
# const ACPI_BUFFER* in: input data
# ACPI_BUFFER* out: output buffer
#
METHOD ACPI_STATUS evaluate_call {
device_t dev;
const char *guid_string;
UINT8 instance;
UINT32 method_id;
const ACPI_BUFFER *in;
ACPI_BUFFER *out;
};
#
# Get content of a WMI block
#
# device_t dev: Device to use
# const char* guid_string: String form of the GUID
# UINT8 instance: instance id
# ACPI_BUFFER* out: output buffer
#
METHOD ACPI_STATUS get_block {
device_t dev;
const char *guid_string;
UINT8 instance;
ACPI_BUFFER *out;
};
#
# Write to a WMI data block
#
# device_t dev: Device to use
# const char* guid_string: String form of the GUID
# UINT8 instance: instance id
# const ACPI_BUFFER* in: input data
#
METHOD ACPI_STATUS set_block {
device_t dev;
const char *guid_string;
UINT8 instance;
const ACPI_BUFFER *in;
};
#
# Install wmi event handler
#
# device_t dev: Device to use
# const char* guid_string: String form of the GUID
# ACPI_NOTIFY_HANDLER handler: Handler
# void* data: Payload
#
METHOD ACPI_STATUS install_event_handler {
device_t dev;
const char *guid_string;
ACPI_NOTIFY_HANDLER handler;
void *data;
};
#
# Remove wmi event handler
#
# device_t dev: Device to use
# const char* guid_string: String form of the GUID
#
METHOD ACPI_STATUS remove_event_handler {
device_t dev;
const char *guid_string;
};
#
# Get event data associated to an event
#
# device_t dev: Device to use
# UINT32 event_id: event id
# ACPI_BUFFER* out: output buffer
#
METHOD ACPI_STATUS get_event_data {
device_t dev;
UINT32 event_id;
ACPI_BUFFER *out;
};

View File

@ -471,6 +471,9 @@ device tdfx_linux # Enable Linuxulator support
device acpi
options ACPI_DEBUG
# ACPI WMI Mapping driver
device acpi_wmi
# ACPI Asus Desktop Extras. (voltage, temp, fan)
device acpi_aiboost
@ -480,6 +483,9 @@ device acpi_asus
# ACPI Fujitsu Extras (Buttons)
device acpi_fujitsu
# ACPI extras driver for HP laptops
device acpi_hp
# ACPI extras driver for IBM laptops
device acpi_ibm

View File

@ -4,8 +4,8 @@
SUBDIR= acpi
.endif
SUBDIR+= acpi_aiboost acpi_asus acpi_fujitsu acpi_ibm \
SUBDIR+= acpi_aiboost acpi_asus acpi_fujitsu acpi_hp acpi_ibm \
acpi_panasonic acpi_sony acpi_toshiba acpi_video \
acpi_dock
acpi_dock acpi_wmi
.include <bsd.subdir.mk>

View File

@ -0,0 +1,9 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/acpi_support
KMOD= acpi_hp
CFLAGS+=-I${.CURDIR}/../../../dev/acpi_support
SRCS= acpi_hp.c opt_acpi.h acpi_if.h acpi_wmi_if.h device_if.h bus_if.h
.include <bsd.kmod.mk>

View File

@ -0,0 +1,9 @@
# $FreeBSD$
.PATH: ${.CURDIR}/../../../dev/acpi_support
KMOD= acpi_wmi
CFLAGS+=-I${.CURDIR}/../../../dev/acpi_support
SRCS= acpi_wmi.c opt_acpi.h acpi_if.h acpi_wmi_if.h device_if.h bus_if.h
.include <bsd.kmod.mk>