#
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
|
#
315263 |
|
14-Mar-2017 |
hselasky |
MFC r314328:
Fix startup race initialising ACPI CM battery structures on MacBookPro.
During acpi_cmbat_attach() the acpi_cmbat_init_battery() notification handler is registered. It has been observed this notification handler can be called instantly, before the attach routine has returned. In the notification handler there is a call to device_is_attached() which returns false. Because the softc is set we know an attach is in progress and the fix is simply to wait and try again in this case.
Reviewed by: avg @
|
#
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 |
#
246128 |
|
30-Jan-2013 |
sbz |
Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays
Reviewed by: cognet Approved by: cognet
|
#
227293 |
|
07-Nov-2011 |
ed |
Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs.
This means that their use is restricted to a single C file.
|
#
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
|
#
193530 |
|
05-Jun-2009 |
jkim |
Import ACPICA 20090521.
|
#
167814 |
|
22-Mar-2007 |
jkim |
Catch up with ACPI-CA 20070320 import.
|
#
157778 |
|
15-Apr-2006 |
iwasaki |
Oops, untested code was included accidentally. Fixed.
|
#
157774 |
|
15-Apr-2006 |
iwasaki |
Import ACPI Dock Station support. Note that this is still very young. Additional detach implementaions (or maybe improvement) for other deivce drivers is required.
Reviewed by: njl, imp MFC after: 1 week
|
#
152818 |
|
26-Nov-2005 |
njl |
Add a locking stub to call acpi_cmbat_get_bif() now that it is directly run from the taskqueue. There should probably be a better way to do this later, but this suffices for now.
Submitted by: yongari
|
#
152705 |
|
22-Nov-2005 |
njl |
Try to fix problems with periodic hangs by never directly calling _BIF. Instead, re-evaluate _BIF only when we get a notify and use the cached results. We also still evaluate _BIF once on boot. Also, optimize the init loop a little by only querying for a particular info if it's not valid.
MFC after: 2 days
|
#
150003 |
|
11-Sep-2005 |
obrien |
Canonize the include of acpi.h.
|
#
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
|
#
139057 |
|
20-Dec-2004 |
njl |
Only report a critical battery level once until it's gone non-critical. An improvement would be to check all batteries for critical state before printing a message.
Reported by: Kevin Oberman (oberman at es net)
|
#
138300 |
|
01-Dec-2004 |
marks |
Catch up with AcpiOsSleep() interface change. Catch up with some #define's renaming. Implement AcpiOsGetTimer() as per ACPI 3.0.
Approved by: njl MFC after: 1 week
|
#
136369 |
|
11-Oct-2004 |
njl |
Notify the user when the battery is critically low. In the future, we may want to shut down here but the chance of BIOS vendors getting this wrong is high. They're only supposed to announce this when all batteries hit their critical level but past experience indicates we should be conservative about this for now.
|
#
133919 |
|
17-Aug-2004 |
njl |
Fix a deadlock on boot for some systems where reading the battery status also generates a notify. Since we held the lock over this call, the notify never got to run and the battery status read never returned. Document this also.
Tested by: Maxim Maximov <mcsi_at_mcsi.pp.ru> Approved by: re (scottl)
|
#
133615 |
|
13-Aug-2004 |
njl |
MPSAFE locking
* Serialize ops in acpi_cmbat_notify_handler(), acpi_cmbat_ioctl(), acpi_cmbat_init_battery(), and acpi_cmbat_get_battinfo(). * Get the softc directly in acpi_cmbat_get_total_battinfo() rather than build an array of them. * Don't queue a _BIF query after receiving a notify. Since we clear the timespec, a _BIF query will be done in the context of the next caller. * Add asserts to leaf functions that operate on shared data. * Remove the bst/bif updating flags now that we hold the lock over the full query. * Explain various comments in more detail.
|
#
132261 |
|
16-Jul-2004 |
njl |
Use ACPI_ALL_NOTIFY instead of registering handlers separately.
|
#
132158 |
|
14-Jul-2004 |
marks |
Some laptops report the "design-capacity" instead of the "real-capacity" when the battery is fully charged. That breaks some of the arithmetic in calculating the remaining capacity (ends up with more than 100%). This commit makes sure the max is 100.
Approved by: njl
|
#
132049 |
|
12-Jul-2004 |
njl |
Add the ability to detach a battery. Now batteries that are detached are also removed from the battery list.
|
#
131282 |
|
29-Jun-2004 |
njl |
Use the acpi_id_probe() method instead of acpi_MatchHid(), which is now static.
|
#
130439 |
|
13-Jun-2004 |
njl |
Add support to ACPI to manage its own resources. Previously, resource allocation was passed up to nexus. Now, we probe sysresource objects and manage the resources they describe in a local rman pool. This helps devices which attach/detach varying resources (like the _CST object) and module loads/unloads. The allocation/release routines now check to see if the resource is described in a child sysresource object and if so, allocate from the local rman. Sysresource objects add their resources to the pool and reserve them upon boot. This means sysresources need to be probed before other ACPI devices.
Changes include: * Add ordering to the child device probe. The current order is: system resource objects, embedded controllers, then everything else. * Make acpi_MatchHid take a handle instead of a device_t arg. * Replace acpi_{get,set}_resource with the generic equivalents.
|
#
129879 |
|
30-May-2004 |
phk |
Add missing <sys/module.h> includes
|
#
128071 |
|
09-Apr-2004 |
njl |
Add MODULE_DEPEND entries so some of these drivers can eventually be loaded separately from ACPI (i.e., embedded use).
|
#
123777 |
|
23-Dec-2003 |
njl |
Update to use the new package routines instead of rolling our own macros.
|
#
121493 |
|
25-Oct-2003 |
njl |
Add devctl(4) notify support to ACPI. Various subsystems now notify userland whenever events occur. See the example in devd.conf below to see how to use it.
|
#
120453 |
|
26-Sep-2003 |
njl |
Consistently print attach messages.
|
#
120036 |
|
13-Sep-2003 |
njl |
Add the -i flag to acpiconf(8) to retrieve battery information. Rename a few structure elements.
|
#
119974 |
|
11-Sep-2003 |
njl |
Add a system notify handler in addition to the device notify handler. At least some Toshiba notebooks use a Notify of 0 or 1 for this.
PR: Submitted by: Hiroyuki Aizu <aizu@navi.org>
|
#
118926 |
|
15-Aug-2003 |
njl |
De-inline functions which do not need to be inline. Move the DEVMETHOD block to where it is in similar drivers.
|
#
118783 |
|
11-Aug-2003 |
njl |
Style cleanups to match the rest of this directory. For acpi_battery.c, remove unused includes.
|
#
110894 |
|
14-Feb-2003 |
takawata |
Allow non-privilaged user to retrive battery or AC line information.
Reviewed by: rwatson
|
#
106377 |
|
03-Nov-2002 |
iwasaki |
Add status initialization code for acpi_cmbat and acpi_acad, acpi_cmbat_init_battery() and acpi_cmbat_init_acline() respectively. Call acpi_cmbat_init_battery() from acpi_cmbat_resume() too just in case. This is a workaround for embedded controller operations which is unstable for about a minute (typically 30 or 40 sec.) at boot time.
|
#
102222 |
|
21-Aug-2002 |
jhb |
Use the _STA method of a battery control method to see if a battery is present or not. My laptop now properly notices when a battery is removed.
Reviewed by: iwasaki
|
#
100539 |
|
22-Jul-2002 |
iwasaki |
Add NULL check for the output buffer from AcpiEvaluateObject().
Submitted by: jon
|
#
92120 |
|
11-Mar-2002 |
peter |
Do not concatenate __func__ with strings, because it is not a string. Later gcc's blow up on this.
|
#
91121 |
|
23-Feb-2002 |
msmith |
Match namespace cleanup changes in ACPI CA 20020217 update. Use ACPI_SUCCESS/ACPI_FAILURE consistently. The AcpiGetInto* interfaces are obsoleted by ACPI_ALLOCATE_BUFFER.
Kill off the timeouts that used to read _BIF and _BST. These are invoked when the battery is actually read. timeout() is dangerous in combination with ACPI, as the interpreter can block.
This driver still needs more work.
|
#
88420 |
|
22-Dec-2001 |
iwasaki |
Add OS layer ACPI mutex and threading support. - Temporary fix a bug of Intel ACPI CA core code. - Add OS layer ACPI mutex support. This can be disabled by specifying option ACPI_NO_SEMAPHORES. - Add ACPI threading support. Now that we have a dedicate taskqueue for ACPI tasks and more ACPI task threads can be created by specifying option ACPI_MAX_THREADS. - Change acpi_EvaluateIntoBuffer() behavior slightly to reuse given caller's buffer unless AE_BUFFER_OVERFLOW occurs. Also CM battery's evaluations were changed to use acpi_EvaluateIntoBuffer(). - Add new utility function acpi_ConvertBufferToInteger(). - Add simple locking for CM battery and temperature updating. - Fix a minor problem on EC locking. - Make the thermal zone polling rate to be changeable. - Change minor things on AcpiOsSignal(); in ACPI_SIGNAL_FATAL case, entering Debugger is easier to investigate the problem rather than panic.
|
#
86786 |
|
22-Nov-2001 |
iwasaki |
Add disabling code via the debug.acpi.disable environment variable.
|
#
86552 |
|
18-Nov-2001 |
iwasaki |
Cleanups of verbose printing. All the messages for the debugging is disabled unless verbose flag is set. Also fix some messages in terms of English. The critical messages and error messages in probe/attach routine are unchanged by this commit.
|
#
85846 |
|
01-Nov-2001 |
iwasaki |
Oops, deleted wrong BIF acquisition timeout invocation by mistake in my previous commit. acpi_cmbat_get_bif() from taskqueue calls acpi_cmbat_timeout() so it's better for startup.
|
#
85738 |
|
30-Oct-2001 |
iwasaki |
Style(9) fix, mainly white spaces.
|
#
85729 |
|
30-Oct-2001 |
iwasaki |
Some improvements of control method battery driver. - Add a new MIB for battery info expire time in order to make it changeable. Battery info expire time can be specified by hw.acpi.battery.info_expire in sec. - Add own MALLOC type and fix some potential memory leakages. - Change some frequent printings to verbose printing. - Stop timeout during acpi_cmbat_get_bst() too. This should reduce the races with BIF evaluation. - Remove acpi_cmbat_get_bif() invocation from acpi_cmbat_attach(). This was redundant because this should be called from acpi_cmbat_timeout() now.
|
#
85325 |
|
22-Oct-2001 |
iwasaki |
Reduce frequency of Battery info (_BIF) acquisition. This helps avoiding EC read errors on some laptops. - Stop updating Battery info for all user requests - Update Battery info by notify events and resume method - Poll Battery info every one minute
Suggested by: takawata
|
#
78690 |
|
24-Jun-2001 |
iwasaki |
Reset timestamps of battery info. and status by thier notify handler.
Suggested by: takawata
|
#
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.
|
#
77432 |
|
29-May-2001 |
msmith |
- Updates for new constant naming in the ACPI CA 20010518 update. - Use __func__ instead of __FUNCTION. - Support power-off to S3 or S5 (takawata) - Enable ACPI debugging earlier (with a sysinit) - Fix a deadlock in the EC code (takawata) - Improve arithmetic and reduce the risk of spurious wakeup in AcpiOsSleep. - Add AcpiOsGetThreadId. - Simplify mutex code (still disabled).
|
#
73106 |
|
26-Feb-2001 |
jhb |
When ensuring the destination buffer is truncated for a string obtained from a BIF, use the size of the destinatino buffer, not the length of the string to determine where to put the nul char. As a side effect, the old code would truncate the string by one character while it was possibly overflowing the buffer.
|
#
71872 |
|
31-Jan-2001 |
msmith |
ACPI_NUMBER becomes ACPI_INTEGER. acpi_EvaluateNumber becomes acpi_EvaluateInteger.
Use acpi_EvaluateInteger instead of doing things the hard way where possible.
AcpiSetSystemSleepState (unofficial) becomes AcpiEnterSleepState.
Use the AcpiGbl_FADT pointer rather than searching for the FADT.
|
#
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 .
|