Section Navigation

FreeBSD ACPI completed projects

Completed Project List

Add methods to get/set ints
acpi_EvaluateInteger only gets an int. Update api to get/set
so that every consumer does not end up defining their own.

Mark Santcroos

Fix getenv_string. Does not seem to work in
sys/dev/acpica/Osd/OsdTable.c. Turned out the name
should not end in "_name".

Mark Santcroos and Peter Grehan

acpi_video manpage. See appendix B of the ACPI 2.0
spec for info on what this driver does as well as look
at the sysctls it exports.

Mark Santcroos

fd0 not working on Intel boards. The floppy device did not
work due to the _CRS object on some systems splitting the IO
port into three 2 port resources (6 ports total). Fix committed
to sys/isa/fd.c to work with this type of resource
specification.

Nate Lawson and John Baldwin

Some BIOSs use 0x3f2-0x3f5 as the port range
-- the real range is 0x3f0-0x3f5, 0x3f7. Workaround
committed.

Warner Losh

ACPI Debugging Handbook Page --
Introduction to ACPI for new users as well as how to assist
us in fixing problems as they arise.

Nate Lawson and Tom Rhodes

acpi_video driver (njl) -- Imported.

Nate Lawson and Taku YAMAMOTO (driver author)

BIOS blacklist -- implement a mechanism and specific
quirks to disable features or ACPI entirely on known
broken systems. If a custom DSDT is loaded, do not
check it against the blacklist (since a user may fix
the DSDT without changing the vendor/revision fields.) Add
blacklist option for disabling acpi on certain
systems.

Nate Lawson

acpi_toshiba man page -- Driver submitted by Hiroyuki Aizu
and committed. All it needs is someone to try it out and
document the sysctls.

Philip Paeps

Invalid PBLK length workaround -- Accept a PBLK of length 5
(spec says 6). Only enable C2 for this though. Some people
may be using 7 to indicate another C3 state but we do not
support the extra state.

Nate Lawson

Check EcSpacehandler to make sure it is correct for
multi-byte access. Found off-by-one in that the last
address (0xff) could never be written or read.

Â

Pick a default MS OS to claim -- Too much ASL depends on
a MS OS string so we should masquerade as the most accurate
one. Picked Win2k™ ("Microsoft Windows NT™"),
then reverted once _OSI support was available. ACPI-CA still
has a default of "Microsoft Windows NT™".

Fix sysctls for debug layer/level -- setting from usermode
via a sysctl did not work.

Nate Lawson

Make lid and sleep button sysctls default to
min(supported_states) -- lid switch now defaults to
NONE, sleep button to minimum sleep state available.

Nate Lawson

newbus attachments for cpu -- Get cpu devices under
newbus so drivers like cpufreq can probe/attach.

Nate Lawson

Make CPU cx_lowest sysctl more readable -- Use C[1-9]
instead of the index value.

Nate Lawson

Update EC GLK check -- Use the handle from the table to
read _GLK instead of always defaulting to using the global
lock.

Nate Lawson

Merge ECDT/EC probe

Nate Lawson

_INI methods -- run for all devices, not just Device
objects. ACPI-CA now calls _INI for Devices,
ThermalZones and Processors.

Â

Fix acpidump failing on several systems -- acpidump(8) fails
on some systems. I suspect this may be in how we search low
memory for the RSDP. Changed to only search EBDA (1 KB
pointed to by 16 bit pointer at 0x40E) and high memory
(0xE0000 - 0xFFFFF) according to the spec
(section 5.2.2).

Nate Lawson

Fix apm compat interface -- Hacked around this in the
userland utility by marking values >= 255 as
"unknown".

Nate Lawson

Update GPE code to handle general device wake -- Also,
disable GPEs that are not valid when entering a new sleep
state. Without this, GPEs for the lid left enabled on a
Thinkpad™ X22 restart the system after power off.
Add userland interface for enabling device wake (done as
per-device sysctls).

Nate Lawson

Fix shutdown routines to not poke all the events (causes
auto power on for some people). Workaround is to set
hw.acpi.disable_on_poweroff="0". Now that GPEs are properly
disabled based on _PRW during suspend and poweroff, we can
hopefully remove the call to acpi_Disable() in the poweroff
path. We now handle the reboot case also by hooking
device_shutdown().

Nate Lawson

Cleanup acpidump/boot EBDA lengths.

Nate Lawson

Fix acpi_cpu busy refcount -- We no longer use a refcount
but instead avoid doing any housekeeping after re-enabling
interrupts at the end of acpi_cpu_idle(). Otherwise, the
context switch after unmasking ints could disrupt device
state.

Nate Lawson

Do not print an error message for _PR0 method -- If not
present, do not print an error in switch_consumer.

Nate Lawson

acpi sysresource probing -- Probe/attach acpi resources
in the acpi bus and then dole it out to children as necessary.
Requires rman(9). Includes more sophisticated handling of
device ordering in scan.

Nate Lawson

Update ACPI blacklist -- Read entries from various OS's
and add them to our blacklist table.

Nate Lawson, Mark Santcroos

Fix general wake code -- remove use of device_t flags as
they may collide with the driver. Use an acpi ivar
instead. Fix for non-acpi devices as well by using a bus
walk routine instead of device_suspend. Add code to turn
on appropriate power resources. Disable EC in shutdown
path.

Nate Lawson

Fix drivers and the apm compat interface -- Currently,
the apm compat interface expects byte values but the ABI used
is a set of u_ints and an int. Either the apm or acpi battery
drivers (or both) are setting the value to -1,
which results in 0xffffffff being passed back as the current
state. Really, only 255 should be returned in this case.
The apm userland utility marks values >= 255 as "unknown"
to work around this. But really the underlying drivers should
be fixed.

Warner Losh

Fix EC timeouts -- move to a sx lock to cover EcWait instead
of a mutex so we can hold it across msleep. This fixed the
timed out errors that occurred occasionally for some
users.

Nate Lawson

Package all info on how to do an ACPI import -- done and
handed off to Mark Santcroos for inclusion in the acpi projects
website.

Fix EISA probe not to write to registers. Turns out an
inb actually triggers the boot hang. Patch committed to
only probe the first slot; however, this breaks the Adaptec
VLB adapter (not EISA). Justin T. Gibbs is fixing that device's
probe. Done.

Nate Lawson

Giant-free locking -- Remove dependency on Giant.

Nate Lawson

Add SSDT support to acpidump(8) -- Right now we only dump
the fixed tables and DSDT. Change acpidump(8) to dump the
SSDT tables. It currently concatenates them with the
DSDT.

Marcel Moolenaar

Change shutdown path -- do not use smp_rendezvous() since
it acquires a spinlock. Instead, MI code should run the
shutdown path only on the BSP and all other processors should
be halted.

Peter Wemm

Turn ACPI and PCI devices off or to a lower power state in
suspend and back on again in resume. Override the default of
D3 with the value the BIOS specifies in _SxD, if present. Skip
serial devices (PNP05xx) since they seem to hang when set to
D3 and may require special driver support. Also skip non-type
0 PCI devices (i.e., bridges) since they don't seem to handle
being powered off.

Nate Lawson

Giant-free locking.

Nate Lawson

newbus attachments for cpu — get cpu devices under
newbus so drivers like cpufreq can probe/attach.

Add bus methods/ivars for child attachments to both acpi
and legacy cpu devices

Nate Lawson

Design sysctl interface.

Nate Lawson

Design notify interface for Px changes.

Nate Lawson

Update power_profile to use cpufreq.

Nate Lawson

Import powerd.

Nate Lawson

Fujitsu driver -- Driver for Fujitsu laptop extras. Just needs
to be cleaned up (use acpi_UserNotify instead of the signal
stuff) and imported.

Mark Santcroos

IBM Thinkpad extras driver -- Driver for Thinkpad hotkeys.

Takanori Watanabe

Call _S0D on resume (power up?).

Nate Lawson

Implement the int 10h resume hack that Linux has since we do
not have that yet. It is unclear how effective it is but some
systems do require it.

Nate Lawson

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. The existing implementation seems correct.

Nate Lawson

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.

Hajimu UMEMOTO

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 does not cause any problems
so it will be ignored for now.

Nate Lawson

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.)