Home | History | Annotate | Download | only in acpi
History log of /src/sys/dev/acpi/acpi_acad.c
RevisionDateAuthorComments
 1.52  29-Jan-2021  thorpej Use acpi_compatible_match().
 1.51  23-Apr-2015  pgoyette branches: 1.51.32;
Update module dependencies for all the existing modules that depend on sysmon components.
 1.50  03-Jun-2011  jruoho branches: 1.50.12; 1.50.30;
Remove unnecessary (due SME_DISABLE_REFRESH) locking.
 1.49  16-Feb-2011  jruoho branches: 1.49.2;
Use ioconf for the module declarations.
 1.48  04-Jan-2011  jruoho branches: 1.48.2; 1.48.4;
Revert the changes made in the commit:

"Do not queue functions via sysmon_taskq(9) in the pmf(9) resume hooks.
There is a small and unlikely race when the drivers are loaded as modules;
suspend, resume, queue a function, and immediately unload the module."

Queueing the checks in the resume hooks was observed to improve the resume
time by several seconds (!) on a system with poorly implemented AML code.
The observed race condition is a wider issue related to modules; things like
sysmon_taskq(9) should be modified to allow cancelling of queued functions.
 1.47  28-Oct-2010  jruoho Be silent if we get a notification to tell us that we woke up the system.
 1.46  25-Oct-2010  jruoho Bump WARNS to 4.
 1.45  14-Aug-2010  jruoho Do not queue functions via sysmon_taskq(9) in the pmf(9) resume hooks.
There is a small and unlikely race when the drivers are loaded as modules;
suspend, resume, queue a function, and immediately unload the module.
 1.44  27-Apr-2010  jruoho Use ACPICA's standard notify values from <actypes.h> and move the
device-specific notify constants to the device-specific files.
 1.43  15-Apr-2010  jruoho As discussed with jmcneill@, install a global "bus notification handler"
that receives all notifications and deliver notifications to drivers via it.
 1.42  05-Mar-2010  jruoho branches: 1.42.2;
Remove <dev/acpi/acpica.h> from all files. It is included from
<dev/acpi/acpivar.h>. Ditto for <dev/sysmon/sysmonvar.h>, <sys/bus.h>,
<dev/pci/pcivar.h>, and <dev/isa/isavar.h>.

Also nuke a lot of unused and invalid headers. Some of these are audibly
provided by standard headers (namely <sys/param.h> and <sys/device.h>), some
have nothing to do with ACPI devices (e.g. <sys/syslog.h>), and some are
nonexistent local includes (e.g. "mpu_ym.h"). Moreoever, try to group the
includes into their respective blocks.

Tested with GENERIC and ALL (i386). No functional change.
 1.41  28-Feb-2010  jruoho Introduce support for ACPI kernel modules.

Tested on couple of laptops.
 1.40  24-Feb-2010  dyoung A pointer typedef entails trading too much flexibility to declare const
and non-const types, and the kernel uses both const and non-const
PMF qualifiers and device suspensors, so change the pmf_qual_t and
device_suspensor_t typedefs from "pointers to const" to non-pointer,
non-const types.
 1.39  31-Jan-2010  jruoho branches: 1.39.2;
Simplify and clean:

* Semantics.
* Remove ACPI_ACAD_DEBUG.
* Reduce the amount of error reporting.
* Remove the internal bookkeeping flags and variables;
instead operate only with a single state variable.
* Trust that the notify handler is doing its job;
remove the refresh routine from the sensor.
* Queue a status check upon resume; we want to know
if the status has changed when in suspend (and it
is unclear if a notify is sent to us).
 1.38  31-Jan-2010  jruoho Add detachment routine.
 1.37  30-Jan-2010  jruoho Add the _COMPONENT definition for ACPI_DEBUG.
 1.36  08-Jan-2010  dyoung Expand PMF_FN_* macros.
 1.35  25-Aug-2009  jmcneill PR# kern/41179: Incorrect return values from AcpiOsExecute()

ACPICA functions return ACPI_STATUS instead of int, so use it for
consistency.
 1.34  12-May-2009  cegger struct cfdata * -> cfdata_t, no functional changes intended.
 1.33  23-Mar-2008  xtraeme branches: 1.33.4; 1.33.18;
acpiacad_get_status: move sc_notifysent to the correct place, otherwise
the notify might not be sent.
 1.32  23-Mar-2008  xtraeme Register a resume pmf(9) handler that clears the status. It is needed
to always fetch new status after resuming, otherwise if AACAD_F_AVAILABLE
is set, acpiacad_get_status() won't be called.

Also use the SME_INIT_REFRESH flag to fetch sensor data once in the
autoconf(9) process.

Ok'ed by <jmcneill>.
 1.31  09-Dec-2007  jmcneill branches: 1.31.10;
Merge jmcneill-pm branch.
 1.30  05-Dec-2007  ad branches: 1.30.2;
Match the docs: MUTEX_DRIVER/SPIN are now only for porting code written
for Solaris.
 1.29  16-Nov-2007  xtraeme branches: 1.29.2;
Extend the envsys2 API (one more time, sorry) as defined in:

http://mail-index.netbsd.org/tech-kern/2007/11/09/0001.html

sysmon_envsys_create() and sysmon_envsys_destroy() were added to
create/destroy sysmon_envsys objects (and its TAILQ/LIST for sensors/events).

sysmon_envsys_sensor_attach() and sysmon_envsys_sensor_detach() were
added to attach/detach sensors to a specified sysmon_envsys device.

The events framework is now per device and configurable via the
ENVSYS_SETDICTIONARY ioctl or /etc/envsys.conf and envstat(8).

Update all users and documentation to reflect these changes.
 1.28  02-Nov-2007  plunky branches: 1.28.2;
do not embed acpi device names in the sensor names
fake it in the compat code for the old envsys API
 1.27  18-Oct-2007  joerg Convert to device_t/softc split. Use aprint API.
 1.26  10-Oct-2007  xtraeme branches: 1.26.2;
Fix the problems described in:
http://mail-index.netbsd.org/current-users/2007/07/16/0012.html

- Introduce sme_class into the sysmon_envsys struct to specify a
class; currently there are two classes: SME_CLASS_ACADAPTER and
SME_CLASS_BATTERY.

- Add a new envsys event: PENVSYS_EVENT_LOW_POWER that is reached when
all SME_CLASS_BATTERY devices are in CRITICAL/LOW state and there's not
any SME_CLASS_ACADAPTER connected.

- Add the 'low-power' event into the sensor_battery script that will
shutdown the system gracefully via 'shutdown -p'. If powerd(8) is
not running, cpu_reboot(9) with RB_POWERDOWN is used.

- Make acpiacad(4) a SME_CLASS_ACADAPTER device and acpibat(4) a
SME_CLASS_BATTERY device.

Update the documentation accordingly to these changes.
 1.25  05-Jul-2007  xtraeme branches: 1.25.6; 1.25.8; 1.25.10;
Final round, after more comments from yamt and cube:

For indicators, if sensor is valid but it should report that it is
in disabled state (OFF), just set value_cur to 0 without changing its
state.
 1.24  05-Jul-2007  xtraeme Use only one sensor to report if the AC Adapter is connected or not,
rather than using two: one when is connected and another one is
disconnected.
 1.23  01-Jul-2007  xtraeme Imported envsys 2, a brief description of the new features:
(Part 2: drivers)

* Support for detachable sensors.
* Cleaned up the API for simplicity and efficiency.
* Ability to send capacity/critical/warning events to powerd(8).
* Adapted all the code to the new locking order.
* Compatibility with the old envsys API: the ENVSYS_GTREINFO
and ENVSYS_GTREDATA ioctl(2)s are supported.
* Added support for a 'dictionary based communication channel' between
sysmon_power(9) and powerd(8), that means there is no 32 bytes event
size restriction anymore.
* Binary compatibility with old envstat(8) and powerd(8) via COMPAT_40.
* All drivers with the n^2 gtredata bug were fixed, PR kern/36226.

Tested by:

blymn: smsc(4).
bouyer: ipmi(4), mfi(4).
kefren: ug(4).
njoly: viaenv(4), adt7463.c.
riz: owtemp(4).
xtraeme: acpiacad(4), acpibat(4), acpitz(4), aiboost(4), it(4), lm(4).
 1.22  27-Jun-2007  jmcneill Sony firmware strikes again!

The Sony VAIO VGN-N250E (and probably others) sends BatteryInformationChanged
on AC adapter state change. Handle that here.
 1.21  16-Nov-2006  christos branches: 1.21.8; 1.21.10;
__unused removal on arguments; approved by core.
 1.20  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.19  30-Apr-2006  rpaulo branches: 1.19.8; 1.19.10;
My laptop sends DeviceCheck instead of PowerSourceStatusChanged.
 1.18  20-Feb-2006  kochi branches: 1.18.2; 1.18.4; 1.18.6;
use aprint_*
 1.17  11-Dec-2005  christos branches: 1.17.2; 1.17.4; 1.17.6;
merge ktrace-lwp.
 1.16  03-May-2004  kochi branches: 1.16.12;
Add sysmon pswitch hook so that powerd(8) can monitor
AC adapter online/offline events.
 1.15  01-May-2004  kochi specify static where appropriate.
 1.14  11-Apr-2004  kochi return (x) -> return x
use consitent variable name for ACPI_STATUS
 1.13  24-Mar-2004  kanaoka Make it compile (int -> ACPI_INTEGER)
 1.12  03-Nov-2003  mycroft More cleanup:
* Use ACPI_FAILURE() and ACPI_SUCCESS().
* Output exception strings in a few more places.
 1.11  03-Nov-2003  mycroft Clean up some messages:
* Use AcpiFormatException() in a bunch of places.
* acpi_resource_parse() already prints an error, so don't do it in the callers.
 1.10  03-Nov-2003  kochi * now the size of ACPI_DEVICE_INFO is variable:
it can now accomodate multiple _CIDs
sizeof(ACPI_DEVICE_INFO) should not be used
* make ad_devinfo member in acpi_devnode a pointer
* implement acpi_match_hid() to simplify matching devices;
_CIDs are also taken into account now as well as _HID
 1.9  31-Oct-2003  mycroft Catch up with ABI changes in ACPI-CA. Some additional changes to acpi_bat to
set the VALID bits correctly, so we don't report garbage for missing batteries.
 1.8  19-Feb-2003  yamt branches: 1.8.2;
initialize a simple_lock in softc.
 1.7  16-Feb-2003  tshiozak - reduce the frequency of updating informations on the power sources;
it is very slow to access to EC on some machines (i.e. CASIO FIVA 2xx).
- clean the flags up.
- add locks while updating informations.
- some cosmetic changes.
 1.6  31-Dec-2002  explorer add envsys support to acpi A/C adapter and batteries. This is still a work
in progress, much like the rest of ACPI.
 1.5  02-Oct-2002  thorpej Add trailing ; to CFATTACH_DECL.
 1.4  30-Sep-2002  thorpej Use CFATTACH_DECL().
 1.3  27-Sep-2002  thorpej Declare all cfattach structures const.
 1.2  13-Nov-2001  lukem branches: 1.2.2;
add RCSID
 1.1  29-Sep-2001  thorpej branches: 1.1.2; 1.1.4;
Skeleton ACPI AC Adapter driver.
 1.1.4.5  03-Jan-2003  thorpej Sync with HEAD.
 1.1.4.4  18-Oct-2002  nathanw Catch up to -current.
 1.1.4.3  14-Nov-2001  nathanw Catch up to -current.
 1.1.4.2  08-Oct-2001  nathanw Catch up to -current.
 1.1.4.1  29-Sep-2001  nathanw file acpi_acad.c was added on branch nathanw_sa on 2001-10-08 21:18:05 +0000
 1.1.2.2  01-Oct-2001  fvdl Catch up with -current.
 1.1.2.1  29-Sep-2001  fvdl file acpi_acad.c was added on branch thorpej-devvp on 2001-10-01 12:44:14 +0000
 1.2.2.3  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.2.2.2  10-Jan-2002  thorpej Sync kqueue branch with -current.
 1.2.2.1  13-Nov-2001  thorpej file acpi_acad.c was added on branch kqueue on 2002-01-10 19:52:52 +0000
 1.8.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.8.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.8.2.1  03-Aug-2004  skrll Sync with HEAD
 1.16.12.8  24-Mar-2008  yamt sync with head.
 1.16.12.7  21-Jan-2008  yamt sync with head
 1.16.12.6  07-Dec-2007  yamt sync with head
 1.16.12.5  15-Nov-2007  yamt sync with head.
 1.16.12.4  27-Oct-2007  yamt sync with head.
 1.16.12.3  03-Sep-2007  yamt sync with head.
 1.16.12.2  30-Dec-2006  yamt sync with head.
 1.16.12.1  21-Jun-2006  yamt sync with head.
 1.17.6.2  01-Jun-2006  kardel Sync with head.
 1.17.6.1  22-Apr-2006  simonb Sync with head.
 1.17.4.1  09-Sep-2006  rpaulo sync with head
 1.17.2.1  01-Mar-2006  yamt sync with head.
 1.18.6.1  24-May-2006  tron Merge 2006-05-24 NetBSD-current into the "peter-altq" branch.
 1.18.4.1  11-May-2006  elad sync with head
 1.18.2.1  24-May-2006  yamt sync with head.
 1.19.10.2  10-Dec-2006  yamt sync with head.
 1.19.10.1  22-Oct-2006  yamt sync with head
 1.19.8.1  18-Nov-2006  ad Sync with head.
 1.21.10.1  11-Jul-2007  mjf Sync with head.
 1.21.8.3  23-Oct-2007  ad Sync with head.
 1.21.8.2  12-Oct-2007  ad Sync with head.
 1.21.8.1  15-Jul-2007  ad Sync with head.
 1.25.10.1  14-Oct-2007  yamt sync with head.
 1.25.8.2  09-Jan-2008  matt sync with HEAD
 1.25.8.1  06-Nov-2007  matt sync with HEAD
 1.25.6.8  09-Dec-2007  jmcneill Sync with HEAD.
 1.25.6.7  08-Dec-2007  jmcneill Rename pnp(9) -> pmf(9), as requested by many.
 1.25.6.6  21-Nov-2007  joerg Sync with HEAD.
 1.25.6.5  06-Nov-2007  joerg Refactor PNP API:
- Make suspend/resume directly a device functionality. It consists of
three layers (class logic, device logic, bus logic), all of them being
optional. This replaces D0/D3 transitions.
- device_is_active returns true if the device was not disabled and was
not suspended (even partially), device_is_enabled returns true if the
device was enabled.
- Change pnp_global_transition into pnp_system_suspend and
pnp_system_resume. Before running any suspend/resume handlers, check
that all currently attached devices support power management and bail
out otherwise. The latter is not done for the shutdown/panic case.
- Make the former bus-specific generic network handlers a class handler.
- Make PNP message like volume up/down/toogle PNP events. Each device
can register what events they are interested in and whether the handler
should be global or not.
- Introduce device_active API for devices to mark themselve in use from
either the system or the device. Use this to implement the idle handling
for audio and input devices. This is intended to replace most ad-hoc
watchdogs as well.
- Fix somes situations in which audio resume would lose mixer settings.
- Make USB host controllers better deal with suspend in the light of
shared interrupts.
- Flush filesystem cache on suspend.
- Flush disk caches on suspend. Put ATA disks into standby on suspend as
well.
- Adopt drivers to use the new PNP API.
- Fix a critical bug in the generic cardbus layer that made D0->D3
break.
- Fix ral(4) to set if_stop.
- Convert cbb(4) to the new PNP API.
- Apply the PCI Express SCI fix on resume again.
 1.25.6.4  04-Nov-2007  jmcneill Sync with HEAD.
 1.25.6.3  26-Oct-2007  joerg Sync with HEAD.

Follow the merge of pmap.c on i386 and amd64 and move
pmap_init_tmp_pgtbl into arch/x86/x86/pmap.c. Modify the ACPI wakeup
code to restore CR4 before jumping back into kernel space as the large
page option might cover that.
 1.25.6.2  02-Oct-2007  jmcneill Update to ACPI-CA 20070320
 1.25.6.1  05-Aug-2007  jmcneill Certain devices either don't require a power handler, or are restored
on resume outside of the pnp power management framework. For such devices,
introduce the null power handler, pnp_generic_power.
 1.26.2.3  18-Nov-2007  bouyer Sync with HEAD
 1.26.2.2  13-Nov-2007  bouyer Sync with HEAD
 1.26.2.1  25-Oct-2007  bouyer Sync with HEAD.
 1.28.2.3  27-Dec-2007  mjf Sync with HEAD.
 1.28.2.2  08-Dec-2007  mjf Sync with HEAD.
 1.28.2.1  19-Nov-2007  mjf Sync with HEAD.
 1.29.2.2  26-Dec-2007  ad Sync with head.
 1.29.2.1  08-Dec-2007  ad Sync with head.
 1.30.2.1  11-Dec-2007  yamt sync with head.
 1.31.10.1  03-Apr-2008  mjf Sync with HEAD.
 1.33.18.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.33.4.5  09-Oct-2010  yamt sync with head
 1.33.4.4  11-Aug-2010  yamt sync with head.
 1.33.4.3  11-Mar-2010  yamt sync with head
 1.33.4.2  16-Sep-2009  yamt sync with head
 1.33.4.1  16-May-2009  yamt sync with head
 1.39.2.3  06-Nov-2010  uebayasi Sync with HEAD.
 1.39.2.2  17-Aug-2010  uebayasi Sync with HEAD.
 1.39.2.1  30-Apr-2010  uebayasi Sync with HEAD.
 1.42.2.3  12-Jun-2011  rmind sync with head
 1.42.2.2  05-Mar-2011  rmind sync with head
 1.42.2.1  30-May-2010  rmind sync with head
 1.48.4.1  17-Feb-2011  bouyer Sync with HEAD
 1.48.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.49.2.1  23-Jun-2011  cherry Catchup with rmind-uvmplock merge.
 1.50.30.1  06-Jun-2015  skrll Sync with HEAD
 1.50.12.1  03-Dec-2017  jdolecek update from HEAD
 1.51.32.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed