linux/drivers/acpi/acpica
Len Brown b430acbd7c ACPICA: simplify SCI_EN workaround
acpi_hw_set_mode() double checks its effectiveness
by calling acpi_hw_get_mode() -- polling up to 3 seconds.

It would be more logical for its caller, acpi_enable()
acpi_enable() to do the double-checking.  (lets assume
that acpi_disable() isn't interesting)

The ACPI specification is unclear on this point.
Some parts say that the BIOS sets SCI_EN and then returns to the OS,
but one part says "OSPM polls the SCI_EN bit until it is sampled SET".

The systems I have on hand do the former,
SCI_EN is observed to be set upon return from the BIOS.

So we move the check up out of acpi_hw_set_mode()
up into acpi_enable() where it makes logical sense.

Then we replace the 3-second polling loop
with a single check.  If this check fails, we'll see:

	"Hardware did not enter ACPI mode"

and the system will bail out of ACPI initialization
and likely fail to boot.  If we see that in practice,
we can restore the polling, but put it into acpi_enable.

This patch is important if acpi_enable() is used in
the resume from S3 path.  Many systems today are seen
coming back from S3 with SCI_EN off, and then failing
to set SCI_EN in response to acpi_enable().  Those systems
will take 3 seconds longer to resume due to this loop.

However, it is possible that we will not use acpi_enable()
in the S3 resume path, and bang SCI_EN directly, which
would make the loop harmless, as it would be invisible
to all systems except those that need it.

Signed-off-by: Len Brown <len.brown@intel.com>
2010-05-12 00:37:59 -04:00
..
accommon.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acconfig.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acdebug.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acdispat.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acevents.h Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-03-01 10:36:22 -08:00
acglobal.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
achware.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acinterp.h ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
aclocal.h Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-03-01 10:36:22 -08:00
acmacros.h ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
acnamesp.h ACPICA: Predefined name repair: fix NULL package elements 2010-01-22 12:30:06 -05:00
acobject.h Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-03-01 10:36:22 -08:00
acopcode.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acparser.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acpredef.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acresrc.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acstruct.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
actables.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
acutils.h ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
amlcode.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
amlresrc.h ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dsfield.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
dsinit.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dsmethod.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dsmthdat.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dsobject.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
dsopcode.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dsutils.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dswexec.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dswload.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dswscope.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
dswstate.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
evevent.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
evgpe.c ACPI / ACPICA: Do not check reference counters in acpi_ev_enable_gpe() 2010-03-23 00:22:49 -04:00
evgpeblk.c Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-03-01 10:36:22 -08:00
evmisc.c Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-03-01 10:36:22 -08:00
evregion.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
evrgnini.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
evsci.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
evxface.c Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2010-03-01 10:36:22 -08:00
evxfevnt.c ACPICA: simplify SCI_EN workaround 2010-05-12 00:37:59 -04:00
evxfregn.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exconfig.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exconvrt.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
excreate.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exdump.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exfield.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exfldio.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exmisc.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exmutex.c Merge branches 'battery-2.6.34', 'bugzilla-10805', 'bugzilla-14668', 'bugzilla-531916-power-state', 'ht-warn-2.6.34', 'pnp', 'processor-rename', 'sony-2.6.34', 'suse-bugzilla-531547', 'tz-check', 'video' and 'misc-2.6.34' into release 2010-03-14 21:30:17 -04:00
exnames.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exoparg1.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exoparg2.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exoparg3.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exoparg6.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exprep.c ACPI: EC: Limit burst to 64 bits 2010-04-16 15:36:54 -04:00
exregion.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exresnte.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exresolv.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exresop.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exstore.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exstoren.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exstorob.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
exsystem.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
exutils.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
hwacpi.c ACPICA: simplify SCI_EN workaround 2010-05-12 00:37:59 -04:00
hwgpe.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
hwregs.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
hwsleep.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
hwtimer.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
hwvalid.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
hwxface.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
Makefile ACPICA: Add repair for predefined methods that must return sorted lists 2009-11-24 21:31:10 -05:00
nsaccess.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsalloc.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsdump.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsdumpdv.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nseval.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsinit.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsload.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsnames.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsobject.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsparse.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nspredef.c ACPICA: Predefined name repair: fix NULL package elements 2010-01-22 12:30:06 -05:00
nsrepair2.c ACPICA: Predefined name repair: fix NULL package elements 2010-01-22 12:30:06 -05:00
nsrepair.c ACPICA: Predefined name repair: fix NULL package elements 2010-01-22 12:30:06 -05:00
nssearch.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsutils.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nswalk.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsxfeval.c ACPICA: AcpiGetDevices: Eliminate unnecessary _STA calls 2010-01-22 12:30:05 -05:00
nsxfname.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
nsxfobj.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psargs.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
psloop.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psopcode.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psparse.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psscope.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
pstree.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psutils.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
pswalk.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
psxface.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsaddr.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rscalc.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rscreate.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
rsdump.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsinfo.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsio.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsirq.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rslist.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsmemory.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsmisc.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsutils.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
rsxface.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
tbfadt.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
tbfind.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
tbinstal.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
tbutils.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
tbxface.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
tbxfroot.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utalloc.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utcopy.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utdebug.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
utdelete.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
uteval.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
utglobal.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
utids.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utinit.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utlock.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utmath.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
utmisc.c ACPICA: Remove obsolete ACPI_INTEGER (acpi_integer) type 2010-01-22 12:30:06 -05:00
utmutex.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utobject.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utresrc.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utstate.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00
utxface.c ACPICA: Update all ACPICA copyrights and signons to 2010 2010-01-22 12:30:05 -05:00