#
359076 |
|
18-Mar-2020 |
hrs |
MFC of r355574, r358095, and r358395:
Add ACPI battery subsystem man page.
Add _BIX (Battery Information Extended) object support.
ACPI Control Method Batteries have a _BIF and/or _BIX object which provide static properties of the battery. FreeBSD acpi_cmbat module supported _BIF object only, which was deprecated as of ACPI 4.0. _BIX is an extended version of _BIF defined in ACPI 4.0 or later.
As of writing, _BIX has two revisions. One is in ACPI 4.0 (rev.0) and another is in ACPI 6.0 (rev.1). It seems that hardware vendors still stick to _BIF only or _BIX rev.0 + _BIF for the maximum compatibility. Microsoft requires _BIX rev.0 for Windows machines, so there are some laptop machines with _BIX rev.0 only. In this case, FreeBSD does not recognize the battery information.
After this change, the acpi_cmbat module gets battery information from _BIX or _BIF object and internally uses _BIX rev.1 data structure as the primary information store in the kernel. ACPIIO_BATT_GET_BI[FX] returns an acpi_bi[fx] structure built by using information obtained from a _BIF or a _BIX object found on the system. The revision number field can be used to check which field is available. The acpiconf(8) utility will show additional information if _BIX is available.
Although ABIs of ACPIIO_BATT_* were changed, the existing APIs for userland utilities are not changed and the backward-compatible ABIs are provided. This means that older versions of acpiconf(8) can also work with the new kernel. The (union acpi_battery_ioctl_arg) was padded to 256 byte long to avoid another ABI change in the future. A _BIX object with its revision number >1 will be treated as compatible with the rev.1 _BIX format.
Add workaround for models which do not follow the ACPI specification strictly. Extra objects are now simply ignored instead of rejecting everything.
Differential Revision: https://reviews.freebsd.org/D22556 Differential Revision: https://reviews.freebsd.org/D23728
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
298955 |
|
03-May-2016 |
pfg |
sys/dev: minor spelling fixes.
Most affect comments, very few have user-visible effects.
|
#
216503 |
|
17-Dec-2010 |
avg |
small cleanup of acpi battery status setting and checking
This is based on the patch submitted by Yuri Skripachov. Overview of the changes: - clarify double-use of some ACPI_BATT_STAT_* definitions - clean up undefined/extended status bits returned by _BST - warn about charging+discharging bits being set at the same time
PR: kern/124744 Submitted by: Yuri Skripachov <y.skripachov@gmail.com> Tested by: Yuri Skripachov <y.skripachov@gmail.com> MFC after: 2 weeks
|
#
170976 |
|
21-Jun-2007 |
njl |
Update the suspend/resume user API while maintaining backwards compat.
Improvements: * /etc/rc.suspend,rc.resume are always run, no matter the source of the suspend request (user or kernel, apm or acpi) * suspend now requires positive user acknowledgement. If a user program wants to cancel the suspend, they can. If one of the user programs hangs or doesn't respond within 10 seconds, the system suspends anyway. * /dev/apm is clonable, allowing multiple listeners for suspend events. In the future, xorg-server can use this to be informed about suspend even if there are other listeners (i.e. apmd).
Changes: * Two new ACPI ioctls: REQSLPSTATE and ACKSLPSTATE. Request begins the process of suspending by notifying all listeners. acpi is monitored by devd(8) and /dev/apm listener(s) are also counted. Users register their approval or disapproval via Ack. If anyone disapproves, suspend is vetoed. * Old user programs or kernel modules that used SETSLPSTATE continue to work. A message is printed once that this interface is deprecated. * acpiconf gains the -k flag to ack the suspend request. This flag is undocumented on purpose since it's only used by /etc/rc.suspend. It is not intended to be a permanent change and will be removed once a better power API is implemented. * S5 (power off) is no longer supported via acpiconf -s 5 or apm -z/-Z. This restores previous behavior of halt/shutdown -p being the interface. * Miscellaneous improvements to error reporting
Approved by: re
|
#
151563 |
|
22-Oct-2005 |
njl |
Cleanups and support code for importing smart battery support.
* Use ACPI_BATT_UNKNOWN instead of constants * Use maxunit instead of a count of devices since we may have sparse battery devices in the future. Only userland should be using unit numbers anyway, so provide a translation function. (Kernel use of batteries should be restricted to looking up a device_t and calling methods directly. * Don't check acpi_BatteryIsPresent() in acpi_battery. Leave it up to the hardware-specific driver (i.e. cmbat) since smart batteries seem to not report the "battery present" flag. * Convert mA to mW if the battery uses those units. CM-batteries only used mW so this deficiency went unnoticed. * Clean strings reported in the battery info from any control chars. * Only dereference the unit from ioctl_arg if the full struct is present. Unit wouldn't have been used later if it wasn't present but this is cleaner. Translate the unit if it's not ACPI_BATTERY_ALL_UNITS. * bzero structs before returning them to usermode for future compat.
Most of this work was submitted by Hans Petter Selasky and then majorly reworked by myself.
Submitted by: Hans Petter Selasky <hselasky / c2i.net>
|
#
148352 |
|
23-Jul-2005 |
njl |
Rewrite the acpi_battery interface to allow for other battery types (i.e., smart battery) and fix various bugs found during the cleanup.
API changes: * kernel access: Access to individual batteries is now via devclass_find("battery"). Introduce new methods ACPI_BATT_GET_STATUS (for _BST-formatted data) and ACPI_BATT_GET_INFO (for _BIF-formatted data). The helper function acpi_battery_get_battinfo() now takes a device_t instead of a unit # argument. If dev is NULL, this signifies all batteries.
* ioctl access: The ACPIIO_BATT_GET_TYPE and ACPIIO_BATT_GET_BATTDESC ioctls have been removed. Since there is now no need for a mapping between "virtual" unit and physical unit, usermode programs can just specify the unit directly and skip the old translation steps. In fact, acpiconf(8) was actually already doing this and virtual unit was the same as physical unit in all cases since there was previously only one battery type (acpi_cmbat). Additionally, we now map the ACPIIO_BATT_GET_BIF and ACPIIO_BATT_GET_BST ioctls for all batteries, if they provide the associated methods.
* apm compatibility device/ioctls: no change * sysctl: no change
Since most third-party applications use the apm(4) compat interface, there should be very few affected applications (if any).
Reviewed by: bruno MFC after: 5 days
|
#
143771 |
|
17-Mar-2005 |
njl |
Introduce a general name for the previously cmbat-only ioctls. It has the same value as the previous ioctls so no binary change. Also, make a few style changes to reduce diffs to my tree.
Loosely based on code from: Hans Petter Selasky
|
#
143002 |
|
02-Mar-2005 |
obrien |
Fix SCM ID's.
|
#
142753 |
|
28-Feb-2005 |
njl |
Protect against multiple includes and use _KERNEL to protect the PCI fns.
|
#
133933 |
|
18-Aug-2004 |
njl |
Remove the ACPIIO_ENABLE and ACPIIO_DISABLE ioctls as well as all callers. These ioctls attempted to enable and disable the ACPI interpreter at runtime. In practice, it is not possible to boot with ACPI and then disable it on many systems and trying to do so can cause crashes, interrupt storms, etc. Binary compatibility with userland is retained.
MFC after: 2 days
|
#
130914 |
|
22-Jun-2004 |
brueffer |
Fix typos and add spaces before `(' in some comments
Submitted by: markus Approved by: njl MFC after: 3 days
|
#
120036 |
|
13-Sep-2003 |
njl |
Add the -i flag to acpiconf(8) to retrieve battery information. Rename a few structure elements.
|
#
119529 |
|
28-Aug-2003 |
njl |
Style and whitespace changes. Also, make the ivar functions non-inline since inlining failed due to the size of BUS_*
|
#
119097 |
|
18-Aug-2003 |
takawata |
Update my mail address on copyright notice.
Noticed by: njl
|
#
101560 |
|
09-Aug-2002 |
iwasaki |
Fix wrong member variable ordering of struct acpi_bif.
|
#
78662 |
|
23-Jun-2001 |
iwasaki |
Add sysctl interface (Read-only) for temprature, AC-line and Battery. Patches for acpi_cmbat.c submitted by Munehiro Matsuda.
|
#
70340 |
|
24-Dec-2000 |
iwasaki |
Add ioctls to acpi_cmbat and acpi_acad. These use mike's acpi_register_ioctl(). Fix wrong AML method calling in acpi_cmbat.
|
#
70271 |
|
22-Dec-2000 |
takawata |
Add ACPI AC adaptor and ACPI Control Method Battery. And install notify handler for thermal zone .
|
#
69744 |
|
08-Dec-2000 |
msmith |
- Convert a lot of homebrew debugging output to use the ACPI CA debugging infrastructure. It's not perfect, but it's a lot better than what we've been using so far. The following rules apply to this: o BSD component names should be capitalised o Layer names should be taken from the non-CA set for now. We may elect to add some new BSD-specific layers later.
- Make it possible to turn off selective debugging flags or layers by listing them in debug.acpi.layer or debug.acpi.level prefixed with !.
- Fully implement support for avoiding nodes in the ACPI namespace. Nodes may be listed in the debug.acpi.avoid environment variable; these nodes and all their children will be ignored (although still scanned over) by ACPI functions which scan the namespace. Multiple nodes can be specified, separated by whitespace.
- Implement support for selectively disabling ACPI subsystem components via the debug.acpi.disable environment variable. The following components can be disabled: o bus creation/scanning of the ACPI 'bus' o children attachment of children to the ACPI 'bus' o button the acpi_button control-method button driver o ec the acpi_ec embedded-controller driver o isa acpi replacement of PnP BIOS for ISA device discovery o lid the control-method lid switch driver o pci pci root-bus discovery o processor CPU power/speed management o thermal system temperature detection and control o timer ACPI timecounter Multiple components may be disabled by specifying their name(s) separated by whitespace.
- Add support for ioctl registration. ACPI subsystem components may register ioctl handlers with the /dev/acpi generic ioctl handler, allowing us to avoid the need for a multitude of /dev/acpi* control devices, etc.
|
#
67761 |
|
28-Oct-2000 |
msmith |
Initial FreeBSD OSPM (operating system power management) modules for ACPICA. Most of these are still works in progress. Support exists for:
- Fixed feature and control method power, lid and sleep buttons. - Detection of ISA PnP devices using ACPI namespace. - Detection of PCI root busses using ACPI namespace. - CPU throttling and sleep states (incomplete) - Thermal monitoring and cooling control (incomplete) - Interface to platform embedded controllers (mostly complete) - ACPI timer (incomplete) - Simple userland control of sleep states. - Shutdown and poweroff.
|