svn commit: r194701 - in head: share/man/man4 sys/conf
sys/dev/acpi_support sys/i386/conf sys/modules/acpi
sys/modules/acpi/acpi_hp sys/modules/acpi/acpi_wmi
Rui Paulo
rpaulo at FreeBSD.org
Tue Jun 23 13:17:26 UTC 2009
Author: rpaulo
Date: Tue Jun 23 13:17:25 2009
New Revision: 194701
URL: http://svn.freebsd.org/changeset/base/194701
Log:
* 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
Added:
head/share/man/man4/acpi_hp.4 (contents, props changed)
head/share/man/man4/acpi_wmi.4 (contents, props changed)
head/sys/dev/acpi_support/acpi_hp.c (contents, props changed)
head/sys/dev/acpi_support/acpi_wmi.c (contents, props changed)
head/sys/dev/acpi_support/acpi_wmi_if.m (contents, props changed)
head/sys/modules/acpi/acpi_hp/
head/sys/modules/acpi/acpi_hp/Makefile (contents, props changed)
head/sys/modules/acpi/acpi_wmi/
head/sys/modules/acpi/acpi_wmi/Makefile (contents, props changed)
Modified:
head/share/man/man4/Makefile
head/sys/conf/files
head/sys/conf/files.amd64
head/sys/conf/files.i386
head/sys/conf/kmod.mk
head/sys/i386/conf/NOTES
head/sys/modules/acpi/Makefile
Modified: head/share/man/man4/Makefile
==============================================================================
--- head/share/man/man4/Makefile Tue Jun 23 13:16:16 2009 (r194700)
+++ head/share/man/man4/Makefile Tue Jun 23 13:17:25 2009 (r194701)
@@ -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
Added: head/share/man/man4/acpi_hp.4
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/man/man4/acpi_hp.4 Tue Jun 23 13:17:25 2009 (r194701)
@@ -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 at 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 at 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 at 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 at 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.
Added: head/share/man/man4/acpi_wmi.4
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/share/man/man4/acpi_wmi.4 Tue Jun 23 13:17:25 2009 (r194701)
@@ -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 at 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 at 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 at 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 at grem.de
Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files Tue Jun 23 13:16:16 2009 (r194700)
+++ head/sys/conf/files Tue Jun 23 13:17:25 2009 (r194701)
@@ -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
Modified: head/sys/conf/files.amd64
==============================================================================
--- head/sys/conf/files.amd64 Tue Jun 23 13:16:16 2009 (r194700)
+++ head/sys/conf/files.amd64 Tue Jun 23 13:17:25 2009 (r194701)
@@ -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
Modified: head/sys/conf/files.i386
==============================================================================
--- head/sys/conf/files.i386 Tue Jun 23 13:16:16 2009 (r194700)
+++ head/sys/conf/files.i386 Tue Jun 23 13:17:25 2009 (r194701)
@@ -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
Modified: head/sys/conf/kmod.mk
==============================================================================
--- head/sys/conf/kmod.mk Tue Jun 23 13:16:16 2009 (r194700)
+++ head/sys/conf/kmod.mk Tue Jun 23 13:17:25 2009 (r194701)
@@ -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 \
Added: head/sys/dev/acpi_support/acpi_hp.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sys/dev/acpi_support/acpi_hp.c Tue Jun 23 13:17:25 2009 (r194701)
@@ -0,0 +1,1183 @@
+/*-
+ * Copyright (c) 2009 Michael Gmelin <freebsd at grem.de>
+ * 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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+/*
+ * Driver for extra ACPI-controlled features found on HP laptops
+ * that use a WMI enabled BIOS (e.g. HP Compaq 8510p and 6510p).
+ * Allows to control and read status of integrated hardware and read
+ * BIOS settings through CMI.
+ * Inspired by the hp-wmi driver, which implements a subset of these
+ * features (hotkeys) on Linux.
+ *
+ * HP CMI whitepaper:
+ * http://h20331.www2.hp.com/Hpsub/downloads/cmi_whitepaper.pdf
+ * wmi-hp for Linux:
+ * http://www.kernel.org
+ * WMI and ACPI:
+ * http://www.microsoft.com/whdc/system/pnppwr/wmi/wmi-acpi.mspx
+ */
+
+#include "opt_acpi.h"
+#include <sys/param.h>
+#include <sys/conf.h>
+#include <sys/uio.h>
+#include <sys/proc.h>
+#include <sys/kernel.h>
+#include <sys/bus.h>
+#include <sys/sbuf.h>
+#include <sys/module.h>
+#include <sys/sysctl.h>
+
+#include <contrib/dev/acpica/include/acpi.h>
+#include <contrib/dev/acpica/include/accommon.h>
+#include <dev/acpica/acpivar.h>
+#include "acpi_wmi_if.h"
+
+#define _COMPONENT ACPI_OEM
+ACPI_MODULE_NAME("HP")
+
+#define ACPI_HP_WMI_EVENT_GUID "95F24279-4D7B-4334-9387-ACCDC67EF61C"
+#define ACPI_HP_WMI_BIOS_GUID "5FB7F034-2C63-45E9-BE91-3D44E2C707E4"
+#define ACPI_HP_WMI_CMI_GUID "2D114B49-2DFB-4130-B8FE-4A3C09E75133"
+
+#define ACPI_HP_WMI_DISPLAY_COMMAND 0x1
+#define ACPI_HP_WMI_HDDTEMP_COMMAND 0x2
+#define ACPI_HP_WMI_ALS_COMMAND 0x3
+#define ACPI_HP_WMI_DOCK_COMMAND 0x4
+#define ACPI_HP_WMI_WIRELESS_COMMAND 0x5
+
+#define ACPI_HP_METHOD_WLAN_ENABLED 1
+#define ACPI_HP_METHOD_WLAN_RADIO 2
+#define ACPI_HP_METHOD_WLAN_ON_AIR 3
+#define ACPI_HP_METHOD_WLAN_ENABLE_IF_RADIO_ON 4
+#define ACPI_HP_METHOD_WLAN_DISABLE_IF_RADIO_OFF 5
+#define ACPI_HP_METHOD_BLUETOOTH_ENABLED 6
+#define ACPI_HP_METHOD_BLUETOOTH_RADIO 7
+#define ACPI_HP_METHOD_BLUETOOTH_ON_AIR 8
+#define ACPI_HP_METHOD_BLUETOOTH_ENABLE_IF_RADIO_ON 9
+#define ACPI_HP_METHOD_BLUETOOTH_DISABLE_IF_RADIO_OFF 10
+#define ACPI_HP_METHOD_WWAN_ENABLED 11
+#define ACPI_HP_METHOD_WWAN_RADIO 12
+#define ACPI_HP_METHOD_WWAN_ON_AIR 13
+#define ACPI_HP_METHOD_WWAN_ENABLE_IF_RADIO_ON 14
+#define ACPI_HP_METHOD_WWAN_DISABLE_IF_RADIO_OFF 15
+#define ACPI_HP_METHOD_ALS 16
+#define ACPI_HP_METHOD_DISPLAY 17
+#define ACPI_HP_METHOD_HDDTEMP 18
+#define ACPI_HP_METHOD_DOCK 19
+#define ACPI_HP_METHOD_CMI_DETAIL 20
+
+#define HP_MASK_WWAN_ON_AIR 0x1000000
+#define HP_MASK_BLUETOOTH_ON_AIR 0x10000
+#define HP_MASK_WLAN_ON_AIR 0x100
+#define HP_MASK_WWAN_RADIO 0x8000000
+#define HP_MASK_BLUETOOTH_RADIO 0x80000
+#define HP_MASK_WLAN_RADIO 0x800
+#define HP_MASK_WWAN_ENABLED 0x2000000
+#define HP_MASK_BLUETOOTH_ENABLED 0x20000
+#define HP_MASK_WLAN_ENABLED 0x200
+
+#define ACPI_HP_CMI_DETAIL_PATHS 0x01
+#define ACPI_HP_CMI_DETAIL_ENUMS 0x02
+#define ACPI_HP_CMI_DETAIL_FLAGS 0x04
+
+struct acpi_hp_inst_seq_pair {
+ UINT32 sequence; /* sequence number as suggested by cmi bios */
+ UINT8 instance; /* object instance on guid */
+};
+
+struct acpi_hp_softc {
+ device_t dev;
+ ACPI_HANDLE handle;
+ device_t wmi_dev;
+ int has_notify; /* notification GUID found */
+ int has_cmi; /* CMI GUID found */
+ int cmi_detail; /* CMI detail level
+ (set by sysctl) */
+ int wlan_enable_if_radio_on; /* set by sysctl */
+ int wlan_disable_if_radio_off; /* set by sysctl */
+ int bluetooth_enable_if_radio_on; /* set by sysctl */
+ int bluetooth_disable_if_radio_off; /* set by sysctl */
+ int wwan_enable_if_radio_on; /* set by sysctl */
+ int wwan_disable_if_radio_off; /* set by sysctl */
+ int was_wlan_on_air; /* last known WLAN
+ on air status */
+ int was_bluetooth_on_air; /* last known BT
+ on air status */
+ int was_wwan_on_air; /* last known WWAN
+ on air status */
+ struct sysctl_ctx_list *sysctl_ctx;
+ struct sysctl_oid *sysctl_tree;
+ struct cdev *hpcmi_dev_t; /* hpcmi device handle */
+ struct sbuf hpcmi_sbuf; /* /dev/hpcmi output sbuf */
+ pid_t hpcmi_open_pid; /* pid operating on
+ /dev/hpcmi */
+ int hpcmi_bufptr; /* current pointer position
+ in /dev/hpcmi output buffer
+ */
+ int cmi_order_size; /* size of cmi_order list */
+ struct acpi_hp_inst_seq_pair cmi_order[128]; /* list of CMI
+ instances ordered by BIOS suggested sequence */
+};
+
+static struct {
+ char *name;
+ int method;
+ char *description;
+ int access;
+} acpi_hp_sysctls[] = {
+ {
+ .name = "wlan_enabled",
+ .method = ACPI_HP_METHOD_WLAN_ENABLED,
+ .description = "Enable/Disable WLAN (WiFi)",
+ .access = CTLTYPE_INT | CTLFLAG_RW
+ },
+ {
+ .name = "wlan_radio",
+ .method = ACPI_HP_METHOD_WLAN_RADIO,
+ .description = "WLAN radio status",
+ .access = CTLTYPE_INT | CTLFLAG_RD
+ },
+ {
+ .name = "wlan_on_air",
+ .method = ACPI_HP_METHOD_WLAN_ON_AIR,
+ .description = "WLAN radio ready to use (enabled and radio)",
+ .access = CTLTYPE_INT | CTLFLAG_RD
+ },
+ {
+ .name = "wlan_enable_if_radio_on",
+ .method = ACPI_HP_METHOD_WLAN_ENABLE_IF_RADIO_ON,
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-all
mailing list