+
+ 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).
+ Here is a
+ patch to help the X file compile. For acpi, we don't 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 isn't running, for instance, or
+ when an emergency suspend is generated by a battery going
+ critical. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. Also, implement
+ the int 10h resume hack that Linux has since we don't have that yet.
+ It is unclear how effective it is but some systems do require it. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Check our DWORD access to EC regions, including endianness.
+ Currently, we treat DWORD access as little-endian, which makes
+ sense on PCs. It's really not correct to do use access other than
+ BYTE for EC space but some ASL uses DWORD. Also, we should test
+ what happens for AnyAccess reads/writes to EC space since some
+ ASL does this too. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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.) |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ For systems that fail to power off, try using the suspend code
+ (acpi_SetSleepState) instead. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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's 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Implement reset register functionality for rebooting systems
+ that lack a keyboard controller (see ACPI v2 FADT->ResetRegister). |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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 shouldn't enable/disable ACPI on them. Doing so
+ gives a "failed to switch modes" warning but no real problems,
+ apparently. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Check our implementation of AcpiOsDerivePciId().
+ It is probably not quite right. Compare against Linux. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Implement passive cooling in ACPI thermal. It should use the
+ cpufreq interface to cool the processor, based on the various _PSV
+ settings. Also, we need to implement variable polling intervals
+ for thermal zones based on both the passive settings and polling
+ explicitly specified in the ASL. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Traverse local reference (scope) types in namespace when probing
+ devices. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ IBM Thinkpad extras driver -- Driver for Thinkpad hotkeys. |
+ &a.takawata; |
+ |
+ &status.done; |
+ |
+
+
+
+ Call _S0D on resume (power up?) |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Implement support for _PRS/_SRS and dependent functions.
+ This will allow serial port configuration to occur. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Fix stray irq 9 on reboot --
+ AcpiTerminate -> AcpiEvTerminate unhooks the SCI and then we
+ get a stray irq. Debug why. Also, disable/ re-enable acpi gives
+ "SCI already attached". Check flags for AcpiDisable vs.
+ AcpiTerminate. This looks uncommon and doesn't cause any problems
+ so I am ignoring it for now. |
+ &a.njl; |
+ |
+ &status.wip; |
+ |
+
+
+
+ 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. I am guessing that some systems
+ do not function correctly without burst mode, so I will add it
+ back with some logic to fallback if it fails. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Add smart battery support -- Smart batteries use the SMBus
+ to communicate data instead of the embedded controller for
+ control-method batteries. Newer ACER laptops have this and
+ it will be needed for battery status on them. This is rather
+ difficult since it involves interfacing with the SMBus drivers
+ (likely need some kobj methods for this.) |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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"
+ (
+ msg). 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ device_power -- Add a "power" argument to devctl(8)
+ that allows a device to be set into various low power or
+ off states. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. |
+ &a.imp;, &a.jhb;, and &a.takawata; |
+ |
+ &status.wip; |
+ |
+
+
+
+ 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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
+ . |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Document acpi kernel interfaces -- Document the interfaces
+ for drivers found in acpivar.h. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ Add support for the real-time clock (RTC) to use to wake
+ or power-on systems at a certain time of day. |
+ |
+ |
+ &status.new; |
+ |
+
+
+
+ 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. |
+ |
+ |
+ &status.new; |
+ |
+
+
+