There are a few remaining explicit uses of http://www.freebsd.org/cgi/ but all of these appear to be outdated e.g. pointing to GNATS) and need updating. Switch &cgibase; to use protocol-relative links, rather than hardcoding http. Switch two others (ftpbase and ftpbaseerrata) whilst here.
		
			
				
	
	
		
			467 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			467 lines
		
	
	
	
		
			15 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?xml version="1.0" encoding="iso-8859-1"?>
 | |
| <!DOCTYPE html PUBLIC "-//FreeBSD//DTD XHTML 1.0 Transitional-Based Extension//EN"
 | |
| "http://www.FreeBSD.org/XML/share/xml/xhtml10-freebsd.dtd" [
 | |
| <!ENTITY title "FreeBSD ACPI project">
 | |
| <!ENTITY email 'marks'>
 | |
| <!ENTITY acpi-mail 'freebsd-acpi@FreeBSD.org'>
 | |
| 
 | |
| <!-- Status levels -->
 | |
| <!ENTITY status.na "<font xmlns='http://www.w3.org/1999/xhtml' color='green'>N/A</font>">
 | |
| <!ENTITY status.done "<font xmlns='http://www.w3.org/1999/xhtml' color='green'>Done</font>">
 | |
| <!ENTITY status.wip "<font xmlns='http://www.w3.org/1999/xhtml' color='blue'>In progress</font>">
 | |
| <!ENTITY status.untested "<font xmlns='http://www.w3.org/1999/xhtml' color='orange'>Needs testing</font>">
 | |
| <!ENTITY status.new "<font xmlns='http://www.w3.org/1999/xhtml' color='red'>Not done</font>">
 | |
| <!ENTITY status.unknown "<font xmlns='http://www.w3.org/1999/xhtml' color='red'>Unknown</font>">
 | |
| ]>
 | |
| 
 | |
| <html xmlns="http://www.w3.org/1999/xhtml">
 | |
|   <head>
 | |
|       <title>&title;</title>
 | |
| 
 | |
|       <cvs:keyword xmlns:cvs="http://www.FreeBSD.org/XML/CVS">$FreeBSD$</cvs:keyword>
 | |
|     </head>
 | |
| 
 | |
|     <body class="navinclude.developers">
 | |
| 
 | |
|     <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="&cgibase;/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="&cgibase;/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>
 | |
| 
 | |
|   </body>
 | |
| </html>
 |