151 Commits

Author SHA1 Message Date
iwasaki
ae728a7566 Oops, wrong option name. It's should be ACPI_MAX_THREADS,
not ACPI_NO_THREADS.
2001-12-25 06:06:56 +00:00
iwasaki
4c7abcd337 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.
2001-12-22 16:05:41 +00:00
iwasaki
7c555201d3 Disable sleep requests for 5 sec after wakeup. This is needed for
some Toshiba and Thinkpad laptops.
Wakeup event is generated by power button or sleep button on some
laptops but this also generates SCI interrupt, and shutdown the system
as result.  So this is introduced so that acpi driver ignore given
requests for certain period.
2001-12-09 18:02:36 +00:00
iwasaki
77d826cd41 Add a couple of minor changes.
- set sc->acpi_s4bios to 1 by default for hibernation until
   OS-initiated S4 transition is implemented.
 - change the behavior of acpi_sleep_state_sysctl() if new value is
   the same as old one, do nothing instead of EINVAL.
2001-11-30 16:06:00 +00:00
iwasaki
08ec0d378e Yet another synch with minor changes in the ACPI CA 20011120 snapshot.
We need to call AcpiEnterSleepStatePrep() before AcpiEnterSleepState().
2001-11-28 12:09:42 +00:00
msmith
adb7d36871 Synch with minor changes in the ACPI CA 20011120 snapshot. 2001-11-28 04:36:29 +00:00
iwasaki
0825f414a5 Validate requested sleep state in acpi_SetSleepState() to avoid reentry
during wakeup procedure.
2001-11-23 05:57:03 +00:00
iwasaki
b951745fc5 Add disabling code via the debug.acpi.disable environment variable. 2001-11-22 17:43:15 +00:00
iwasaki
d2ab0884a6 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.
2001-11-18 18:12:07 +00:00
iwasaki
a52673f0bc Fix re-enabling ACPI on wakeup from hibernation. The problem was that
acpi_Disable() cleared all GPE events.
Some old ACPI implementaions still need current re-enabling code.
2001-11-15 15:12:08 +00:00
iwasaki
fb3ee113a4 Two minor changes.
- Change _ACx sysctl oid from ten of _AC[0-9] to one _ACx.
 - Better error printing on _TMP evaluation.

Reviewed by:    msmith
2001-11-15 12:00:48 +00:00
iwasaki
62ec3c0b4b Remove "S4B" from sleep_state_names and add "NONE" instead.
Now you can say;
 # sysctl hw.acpi.lid_switch_state=NONE
instead of specifying unsupported _Sx object in the system.

Actually, S4B is going to disappear in ACPICA and we already have
hw.acpi.s4bios to distinguish BIOS hibernation or OS hibernation.
2001-11-15 11:59:25 +00:00
iwasaki
37688d6327 Add S4BIOS sleep (BIOS hibernation) and DSDT overriding support.
- Add S4BIOS sleep implementation.  This will works well if MIB
   hw.acpi.s4bios is set (and of course BIOS supports it and hibernation
   is enabled correctly).
 - Add DSDT overriding support which is submitted by takawata originally.
   If loader tunable acpi_dsdt_load="YES" and DSDT file is set to
   acpi_dsdt_name (default DSDT file name is /boot/acpi_dsdt.aml),
   ACPI CA core loads DSDT from given file rather than BIOS memory block.
   DSDT file can be generated by iasl in ports/devel/acpicatools/.
 - Add new files so that we can add our proposed additional code to Intel
   ACPI CA into these files temporary.  They will be removed when
   similar code is added into ACPI CA officially.
2001-11-06 15:00:30 +00:00
iwasaki
0f7e41d94b Remove unnecessary WAK_STS bit waiting code for S1 sleep.
It was duplicated with AcpiEnterSleepState() since acpica-unix-20010816.
2001-11-05 14:51:58 +00:00
iwasaki
56b11dbefd 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.
2001-11-01 22:20:41 +00:00
iwasaki
f1842a13d8 Some fix for the recent apm module changes.
- Now that apm loadable module can inform its existence to other kernel
   components  (e.g. i386/isa/clock.c:startrtclock()'s TCS hack).
 - Exchange priority of SI_SUB_CPU and SI_SUB_KLD for above purpose.
 - Add simple arbitration mechanism for APM vs. ACPI.  This prevents
   the kernel enables both of them.
 - Remove obsolete `#ifdef DEV_APM' related code.
 - Add abstracted interface for Powermanagement operations.  Public apm(4)
   functions, such as apm_suspend(), should be replaced new interfaces.
   Currently only power_pm_suspend (successor of apm_suspend) is implemented.

Reviewed by:	peter, arch@ and audit@
2001-11-01 16:34:07 +00:00
iwasaki
0bacb7acb2 Style(9) fix, mainly white spaces. 2001-10-30 15:51:52 +00:00
iwasaki
b53da90472 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.
2001-10-30 14:24:26 +00:00
iwasaki
e9dce04d13 Some small improvements of ACPI thermal driver.
- Give a guaranteed minimum cooling run time to avoid too frequent
   cooling system On/Off switching.  The minimum cooling run time can be
   specified by hw.acpi.thermal.min_runtime in sec.
 - Refine message printing (_AC-1 -> NONE).
 - Add verbose mode enable/disable capability by hw.acpi.verbose in bool.

Reviewed by:	acpi-jp@ folks
2001-10-29 18:09:43 +00:00
jhb
39b22ee165 - Change the taskqueue locking to protect the necessary parts of a task
while it is on a queue with the queue lock and remove the per-task locks.
- Remove TASK_DESTROY now that it is no longer needed.
- Go back to inlining TASK_INIT now that it is short again.

Inspired by:	dfr
2001-10-26 18:46:48 +00:00
iwasaki
1b24a8aa4e Add APM compatibility feature to ACPI.
This emulates APM device node interface APIs (mainly ioctl) and
provides APM services for the applications.  The goal is to support
most of APM applications without any changes.
Implemented ioctls in this commit are:
 - APMIO_SUSPEND (mapped ACPI S3 as default but changable by sysctl)
 - APMIO_STANDBY (mapped ACPI S1 as default but changable by sysctl)
 - APMIO_GETINFO and APMIO_GETINFO_OLD
 - APMIO_GETPWSTATUS

With above, many APM applications which get batteries, ac-line
info. and transition the system into suspend/standby mode (such as
wmapm, xbatt) should work with ACPI enabled kernel (if ACPI works well :-)

Reviewed by:	arch@, audit@ and some guys
2001-10-26 17:43:05 +00:00
jhb
e1bba71fc9 Add locking to taskqueues. There is one mutex per task, one mutex per
queue, and a mutex to protect the global list of taskqueues.  The only
visible change is that a TASK_DESTROY() macro has been added to mirror
the TASK_INIT() macro to destroy a task before it is free'd.

Submitted by:	Andrew Reiter <awr@watson.org>
2001-10-26 06:32:21 +00:00
jhb
0857f7bbf9 Use TASK_INIT to initialize taskqueue task instead of violating the
abstraction.

Submitted by:	Andrew Reiter <arr@watson.org>
2001-10-25 19:56:02 +00:00
jhb
8d38ba142e Allow hw.acpi.cpu.{economy,performance}_speed to be set from the loader
via tunables.
2001-10-23 22:37:36 +00:00
iwasaki
2906ddc3e6 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
2001-10-22 18:01:37 +00:00
jhb
4c62ba7c58 Add missing includes of sys/lock.h. 2001-10-11 17:52:20 +00:00
dfr
9fcab64afc Make the interrupt routing a bit less chatty unless bootverbose is set. 2001-10-07 18:25:43 +00:00
peter
c47e8a25e5 Fix some 64-bit uncleanliness. 2001-10-06 04:09:26 +00:00
peter
464367cbf9 Fix some style bugs before fixing some real bugs. 2001-10-06 04:03:20 +00:00
peter
ef8de6ecd9 Fix a stack trashing bug when int != sizeof(pointer)
This fixes the ia64 boot!  We have scsi disks!
2001-10-06 03:49:38 +00:00
msmith
dd61fc83a8 Update usage of AcpiEnableEvent to reflect a new argument.
Fix acpi_DeviceIsPresent to check for valid _STA data and to check
the "present" and "functioning" bits.

Use acpi_DeviceIsPresent in acpi_pcib rather than rolling our own
(also broken) version.
2001-10-04 23:21:09 +00:00
dfr
9c65ee6d6b Add busspace hacks for ia64. 2001-10-04 08:33:16 +00:00
dfr
974d6a2329 Use return_PTR, not return_VALUE when returning pointers. 2001-10-04 08:32:18 +00:00
dfr
158d043f88 Check the compatible ID as well as the hardware ID in acpi_MatchHid. 2001-10-04 08:31:17 +00:00
iwasaki
9bf92ac71b Call acpi_DeviceIsPresent() only for devices. This should make
non-ACPI_TYPE_DEVICE devices (such as acpi_tz and acpi_cpu) enabled
again.

Reviewed by:	msmith
2001-09-17 15:11:55 +00:00
msmith
1815e2ca4a Disable devices that are not present; at a later stage we can then enable
them if the device arrives.

This should solve the problem where devices that have been disabled eg. in
the BIOS show up with nonsense resources and hang the bootstrap process.
2001-09-15 04:14:31 +00:00
julian
5596676e6c KSE Milestone 2
Note ALL MODULES MUST BE RECOMPILED
make the kernel aware that there are smaller units of scheduling than the
process. (but only allow one thread per process at this time).
This is functionally equivalent to teh previousl -current except
that there is a thread associated with each process.

Sorry john! (your next MFC will be a doosie!)

Reviewed by: peter@freebsd.org, dillon@freebsd.org

X-MFC after:    ha ha ha ha
2001-09-12 08:38:13 +00:00
iwasaki
936a16ea86 Don't call tsleep from AcpiOsStall(), call DELAY() always instead.
Process switching during calling AcpiOsStall() caused fatal trap 12 at
sleeping/wakeup on some machines.
2001-09-08 17:03:26 +00:00
msmith
cb3e386fb2 Should check debug.acpi.avoid, not .disable. 2001-09-07 03:54:37 +00:00
msmith
aa26f8f1ff Allow the ACPI subsystem to be disabled with a hint.
Avoid fully initialising the ACPI namespace if we are attempting to avoid
parts of it.  This is a workaround for some systems that still crash
the interpreter.

Implement the ISA_IVAR_LOGICALID for ISA compatibility.  Implement stubs
for other PnP ID-related ivars.
2001-09-07 02:57:29 +00:00
msmith
b6bb56ed4e Move OsdEnvironment.c into MD code; searching for the ACPI tables is not
portable.
2001-09-07 02:55:00 +00:00
msmith
8ccf25b79d Initialise the adapter status to an invalid state, so that the initial check
of the adapter object will always result in a change event.

This fixes the problem where a laptop booted without an AC adapter ran
at 100% CPU speed by default.

Submitted by:	"Christopher N . Harrell" <cnh@netvmg.com>
2001-09-06 23:33:22 +00:00
jhb
1799601856 Add a hack to acpi_EvaluateInteger() to handle the case of a method
returning a Buffer that contains an Integer rather an an Integer directly.

Submitted by:	msmith
Approved by:	msmith
2001-09-06 23:16:55 +00:00
msmith
ec1ab724cb Allocate system resource IRQs as shareable; this is the typical case. 2001-09-06 22:34:40 +00:00
iwasaki
a19dd226fc Just print a message in acpi_tz_monitor() only when new active state
is different from the previous active state.
This reduce tons of 'acpi_tz0: _AC0: temperature 64.0 >= setpoint 64.0'
messages.

Reviewed by:	msmith
2001-09-04 15:40:12 +00:00
iwasaki
647b8ba478 Fix typo; CTLFLAG_RO -> CTLFLAG_RD. 2001-09-02 06:28:20 +00:00
msmith
2f50c10b5b Add a MODULE_VERSION declaration. This should prevent duplicate loading
of the module, and allows other modules to depend on and link against
the ACPI module.

Add a sysctl that allows us to retrieve the ACPI CA version number as
well.
2001-09-01 22:41:53 +00:00
msmith
5248c96731 Don't claim memory resources owned by a PNP0C01 device ("system memory")
as some systems claim the entire physical address space is owned by it.
2001-08-31 22:59:04 +00:00
msmith
85477cf711 Don't activate placeholder resources; it can be very expensive in the
SYS_RES_MEMORY case, and it shouldn't be necessary.
2001-08-31 18:08:50 +00:00
takawata
7a406c68c0 Call OS-independent resume routine to execute _WAK .. etc.
This should also recover GPE bit,comment says, though not implemented yet.
2001-08-31 05:36:48 +00:00