set on some files as a workaround for binary check. - Fix pathname for svn co in the webupdate script. Approved by: doceng (implicit)
466 lines
14 KiB
Text
466 lines
14 KiB
Text
<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
|
|
<!ENTITY base CDATA "../..">
|
|
<!ENTITY date "$FreeBSD$">
|
|
<!ENTITY title "FreeBSD ACPI project">
|
|
<!ENTITY email 'marks'>
|
|
<!ENTITY acpi-mail 'freebsd-acpi@FreeBSD.org'>
|
|
<!ENTITY % navinclude.developers "INCLUDE">
|
|
|
|
<!-- Status levels -->
|
|
<!ENTITY status.na "<font color=green>N/A</font>">
|
|
<!ENTITY status.done "<font color=green>Done</font>">
|
|
<!ENTITY status.wip "<font color=blue>In progress</font>">
|
|
<!ENTITY status.untested "<font color=orange>Needs testing</font>">
|
|
<!ENTITY status.new "<font color=red>Not done</font>">
|
|
<!ENTITY status.unknown "<font color=red>Unknown</font>">
|
|
|
|
<!ENTITY % developers PUBLIC "-//FreeBSD//ENTITIES FreeBSD Developers Entities//EN"> %developers;
|
|
|
|
]>
|
|
|
|
<html>
|
|
&header;
|
|
|
|
<h2>Contents</h2>
|
|
<ul>
|
|
<li><a href="#description">Description</a></li>
|
|
<li><a href="#todo-list">TODO List</a></li>
|
|
<li><a href="#platform-status">Platform Support Status</a></li>
|
|
<li><a href="#references">References</a></li>
|
|
</ul>
|
|
|
|
<a name="description"></a>
|
|
<h2>Description</h2>
|
|
|
|
<p>The acpi driver provides support for the Intel/Microsoft/Compaq/Toshiba
|
|
ACPI standard. This support includes platform hardware discovery (superseding
|
|
the PnP and PCI BIOS), as well as power management (superseding
|
|
APM) and other features. ACPI core support is provided by the ACPI-CA
|
|
reference implementation from Intel.</p>
|
|
|
|
<p>Information on using and debugging ACPI can be found in the
|
|
<a href="/doc/en_US.ISO8859-1/books/handbook/acpi-debug.html">
|
|
handbook entry</a> and
|
|
<a href="/cgi/man.cgi?query=acpi&sektion=4&format=html">man page</a>.</p>
|
|
|
|
<p>If you are looking for the list of completed projects not located
|
|
on this page, it can be found
|
|
<a href="completed.html">here</a>.</p>
|
|
|
|
|
|
<a name="todo-list"></a>
|
|
<h2>TODO List</h2>
|
|
|
|
<a name="high-priority"></a>
|
|
<h3>High Priority Tasks</h3>
|
|
|
|
<table class="tblbasic">
|
|
<thead>
|
|
<tr>
|
|
<th> Task </th>
|
|
<th> Responsible </th>
|
|
<th> Last updated </th>
|
|
<th> Priority </th>
|
|
<th> Notes </th>
|
|
</tr>
|
|
</thead>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td> Save/Restore PCI capabilities lists and MSI config space </td>
|
|
<td> &a.njl; </td>
|
|
<td> August 3, 2006 </td>
|
|
<td> &status.wip; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Investigate disabling the LAPIC timer when using ACPI C2-3
|
|
states. Otherwise, the system hangs and no timer interrupts
|
|
occur while idle.</td>
|
|
<td> </td>
|
|
<td> August 3, 2006 </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<th scope="rowgroup" colspan="0"> <em>acpi_cpu — Finish
|
|
work on CPU driver</em> </th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> _CST re-evaluation </td>
|
|
<td> &a.njl; </td>
|
|
<td> December 4, 2004 </td>
|
|
<td> &status.new; </td>
|
|
<td> Needs testing/debugging </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Fix shared user of a P_BLK (refcount) </td>
|
|
<td> &a.njl; </td>
|
|
<td> December 4, 2004 </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Disable acpi_cpu taking over idling if only
|
|
C1 available </td>
|
|
<td> &a.njl; </td>
|
|
<td> December 4, 2004 </td>
|
|
<td> &status.new; </td>
|
|
<td> I still want to keep acpi_cpu in the loop on SMP systems
|
|
so we should leave this as-is for now. </td>
|
|
</tr>
|
|
</tbody>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td> eject methods — implement eject and dynamic
|
|
reprobing of acpi namespace </td>
|
|
<td> &a.njl; </td>
|
|
<td> December 4, 2004 </td>
|
|
<td> &status.untested; </td>
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
|
|
<a name="medium-priority"></a>
|
|
<h3>Medium Priority Tasks</h3>
|
|
|
|
<table class="tblbasic">
|
|
<tbody>
|
|
<tr>
|
|
<td> Hotkey/backlight/sound generic driver -- Add a driver
|
|
that generalizes the various device-specific ways of
|
|
adjusting backlight, sound volume, hotkey support, etc.
|
|
It should provide generic sysctls for these and attach to
|
|
the hw-specific drivers (acpi_video, acpi_asus, acpi_toshiba,
|
|
etc.) </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<a name="low-priority"></a>
|
|
<h3>Low Priority Tasks</h3>
|
|
|
|
<table class="tblbasic">
|
|
<tbody>
|
|
<tr>
|
|
<td> Implement X suspend/resume notification. Currently,
|
|
the X server on FreeBSD is not notified of a suspend.
|
|
We explicitly switch to a VTY on syscons before resume
|
|
to get the server to save and then restore all the registers.
|
|
This works for many systems but not if the display is left in
|
|
less initialized at resume than the VTY switch code can handle.
|
|
There is an interface (in the X server bsd_apm.c) for doing ioctls
|
|
to find out about the suspend. First, check if this file is
|
|
built on FreeBSD as it appears to only be built on NetBSD.
|
|
Then implement the ioctls in both apm and acpi (on the apm
|
|
compat device).
|
|
<a href="http://www.root.org/~nate/freebsd/bsd_apm.diff">Here is a
|
|
patch</a> to help the X file compile. For acpi, we do not want
|
|
a user process dying to hold up the suspend process so implement
|
|
the notification with a timeout. That is, if the kernel generates
|
|
a APM_STANDBY_REQ notification and it doesn't receive a
|
|
APM_IOC_STANDBY within say 5 seconds, continue the suspend process.
|
|
This is needed for standby when X is not running, for instance, or
|
|
when an emergency suspend is generated by a battery going
|
|
critical.</td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Examine the two video resume hacks (int 0x10, lcall 0xc000).
|
|
Linux has begun to test calling the "lcall" VESA reset after
|
|
PCI devices (including the video card) have been fully resumed,
|
|
including power state set to PS0. This works for many Radeon
|
|
cards but fails for others. We could implement this in vm86
|
|
calls from a proper video driver resume method. Investigate
|
|
integrate the techniques used by the <a
|
|
href="http://www.freebsd.org/cgi/url.cgi?ports/sysutils/radeontool/pkg-descr">Radeontool
|
|
port</a> in video resume.</td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> ACPI-CA should really enable GPEs before calling \_WAK.
|
|
Currently it does the opposite. This does not match the ACPI
|
|
spec where \_WAK should be called after the system is up
|
|
and running (\_BFS is what should be called as soon as
|
|
possible after waking.) </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Potential ASL bug: We may need to work around some systems
|
|
having the S3 object listed under the LPC bus device (PNP0A03)
|
|
instead of root (\). This is ACPI-CA's responsibility. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> For systems that fail to power off, try using the suspend code
|
|
(acpi_SetSleepState) instead. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> See if we can enable EC access early even if an ECDT is not
|
|
present. The _INI method for some ECs accesses the EC region
|
|
even though _REG has not been called since the region is not
|
|
initialized yet. It is likely that Windows hard-codes the EC
|
|
resources and enables the region before initializing the device
|
|
even though this is not allowed by the spec. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Implement reset register functionality for rebooting systems
|
|
that lack a keyboard controller (see ACPI v2 FADT->ResetRegister). </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Be sure not to try to disable ACPI on systems that do not have
|
|
SMI_CMD or ACPI_ENABLE/DISABLE values in the FADT. The ia64 machines
|
|
specify ACPI-only (no legacy mode) so they have 0 for these
|
|
values and we should not enable/disable ACPI on them. Doing so
|
|
gives a "failed to switch modes" warning but no real problems,
|
|
apparently. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Check our implementation of AcpiOsDerivePciId().
|
|
It is probably not quite right. Compare against Linux. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Run instructions on cpu0 for suspend/resume. We currently do
|
|
this for shutdown in kern_shutdown.c:boot(). This will also be
|
|
required for SMP cpufreq drivers that set the frequency via a
|
|
CPU-specific MSR. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Traverse local reference (scope) types in namespace when probing
|
|
devices. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Implement support for _PRS/_SRS and dependent functions.
|
|
This will allow serial port configuration to occur. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Add EC burst mode -- Code was written before to add burst mode to
|
|
the EC. Unfortunately, it had to be disabled since it did not
|
|
appear to work on all systems. Perhaps on some systems
|
|
do not function correctly without burst mode, so it will be added
|
|
back with some logic to fallback if it fails. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Intel firmware seems to describe the PCI root bridge where
|
|
chipset configuration space lives with _STA==0x8. The spec
|
|
says this means "functional, but not present". The current
|
|
code ignores things that are "not present"
|
|
(<a href="https://sourceforge.net/mailarchive/message.php?msg_id=6923358">
|
|
msg</a>). It is suggested that this should be handled by not
|
|
attaching a driver to the device (i.e. bridge) but probe its children.
|
|
Present on Big Sur and Bull systems. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Re-work device wake setup to not be recursive.
|
|
The acpi_wake_sysctl_walk() syscall has to call itself to
|
|
handle child devices on other busses (PCI). This should
|
|
probably be changed to be a DEVMETHOD. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> device_power -- Add a "power" argument to devctl(8)
|
|
that allows a device to be set into various low power or
|
|
off states. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> device_eject -- Add a devctl(8) program that has an
|
|
"eject" argument. Allow users to eject various object
|
|
names ("/dev/cdrom", "/mnt/flashdrive", "wi0", "pci0:2:0").
|
|
Call the appropriate _EJD and _EJx methods if appropriate.</td>
|
|
<td> &a.imp;, &a.jhb;, and &a.takawata; </td>
|
|
<td> </td>
|
|
<td> &status.wip; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> suspend to disk -- Implement a suspend/resume from disk
|
|
mechanism. Possibly use the dump functions to dump pages to
|
|
disk, then use ACPI to put the system in S4 or power-off.
|
|
Resume would require changes to the loader to load the memory
|
|
image directly and then begin executing again. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> HP/Toshiba Satellite driver -- Enabling the extra
|
|
one-touch/multimedia keys, console blanking, battery and
|
|
temperature reporting, etc. Get an idea of what is needed from
|
|
the <a href="http://sourceforge.net/projects/omke/">Linux OMKE project
|
|
</a>. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> ASL capture bootable CD-R -- Build a set of scripts to
|
|
generate a bootable CD-R. It should have a GENERIC kernel
|
|
and acpidump/iasl as well as all support libraries. Replace
|
|
init with a script such that booting the CD generates an
|
|
acpidump -t -d > machine.asl and dmesg > machine.dmesg in
|
|
an MFS partition. Then burn this info to a second track on the
|
|
CD-R. This will make an easy way to take a batch of CDRWs to
|
|
the local computer store, place them in the CDRW drive, boot
|
|
FreeBSD and get the ASL. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> ASL Explorer -- Graphical utility for examining the output
|
|
of acpidump(8). Contact &a.njl; for info about the design if you
|
|
are interested in implementing this. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Document acpi kernel interfaces -- Document the interfaces
|
|
for drivers found in acpivar.h. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> KTR support for ACPI debug messages -- Use the KTR logging
|
|
facility instead of printf for ACPI debugging messages. This
|
|
would allow more verbose messages and fast dumping. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Add support for the real-time clock (RTC) to use to wake
|
|
or power-on systems at a certain time of day. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> Quiesce USB when no device is attached (see Linux UHCI) --
|
|
this would help such systems use C3 more, saving power with
|
|
USB loaded. While at it, fix uhci suspend/resume. </td>
|
|
<td> </td>
|
|
<td> </td>
|
|
<td> &status.new; </td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
</tbody>
|
|
</table>
|
|
|
|
<a name="references"></a>
|
|
<h2>References</h2>
|
|
|
|
<ul>
|
|
<li><a href="http://acpi.info/spec.htm">Advanced
|
|
Configuration and Power Interface Specification</a></li>
|
|
</ul>
|
|
|
|
&footer;
|
|
</body>
|
|
</html>
|