Commit graph

87 commits

Author SHA1 Message Date
Adrian Bunk
07ddf768d8 ACPI: EC: acpi_ec_remove(): fix use-after-free
This patch fixes an obvious use-after-free introduced by
commit 837012ede1.

Spotted by the Coverity checker.

Signed-off-by: Adrian Bunk <bunk@stusta.de>
Acked-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-08-03 22:28:11 -04:00
Alexey Starikovskiy
7c010de750 ACPI: EC: Switch from boot_ec as soon as we find its desc in DSDT.
Some ASUS laptops fail to use boot time EC
and need to eventually switch to one described in DSDT.

http://bugzilla.kernel.org/show_bug.cgi?id=8709

Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-08-03 17:57:53 -04:00
Len Brown
52fe4bdf40 ACPI: EC: fix build warning
drivers/acpi/ec.c:657: warning: ‘acpi_ec_register_query_methods’ defined but not used

Signed-off-by: Len Brown <len.brown@intel.com>
2007-08-03 17:55:53 -04:00
Alexey Starikovskiy
cd8c93a4e0 ACPI: EC: If ECDT is not found, look up EC in DSDT.
Some ASUS laptops access EC space from device _INI methods, but do not
provide ECDT for early EC setup. In order to make them function properly,
there is a need to find EC is DSDT before any _INI is called.

Similar functionality was turned on by acpi_fake_ecdt=1 command line
before. Now it is on all the time.

http://bugzilla.kernel.org/show_bug.cgi?id=8598

Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-08-03 17:52:48 -04:00
Alexey Starikovskiy
f1cd1fe61b ACPI: EC: Remove noisy debug printk fron EC driver.
ACPI: EC: Handler for query 0x57 is not found!

Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-08-03 17:28:17 -04:00
Thomas Renninger
1ba90e3a87 ACPI: autoload modules - Create __mod_acpi_device_table symbol for all ACPI drivers
modpost is going to use these to create e.g. acpi:ACPI0001
in modules.alias.

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-07-23 13:56:42 -04:00
Alexey Starikovskiy
837012ede1 ACPI EC: Add support for non-AML EC query handlers
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-06-23 15:55:13 -04:00
Alexey Starikovskiy
4350933a74 ACPI EC: drop usage of ACPI_DEBUG_PRINT as too heavy weight
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-06-23 15:55:06 -04:00
Alexey Starikovskiy
5b7734b440 ACPI EC: Re-factor EC space handler to avoid using label/goto for cycle.
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-06-23 15:54:56 -04:00
Lennart Poettering
00eb43a189 acpi,msi-laptop: Fall back to EC polling mode for MSI laptop specific EC commands
The ACPI EC that is used in MSI laptops knows some non-standard
commands for changing the screen brighntess and a few other things,
which are used by the msi-laptop.c driver. Unfortunately for these
commands no GPE events for IBF and OBF are triggered. Since nowadays
the EC code uses the ec_intr=1 mode by default, this causes these
operations to timeout, although they don't fail. In result, all
operations that you can do with the msi-laptop.c driver take more or
less 1s to complete, which is awfully slow.

In one of the more recent kernels (2.6.20?) the EC subsystem has been
revamped. With that change the EC timeout has been increased. before
that increase the MSI EC accesses were slow -- but not *that* slow,
hence I took notice of this limitation of the MSI EC hardware only very
recently.

The standard EC operations on the MSI EC as defined in the ACPI spec
support GPE events properly.

The following patch adds a new argument "force_poll" to the
ec_transaction() function (and friends). If set to 1, the function
will poll for IBF/OBF even if ec_intr=1 is enabled. If set to 0 the
current behaviour is used. The msi-laptop driver is modified to make
use of this new flag, so that OBF/IBF is polled for the special MSI EC
transactions -- but only for them.

Signed-off-by: Lennart Poettering <mzxreary@0pointer.de>
Acked-by: Alexey Starikovskiy <aystarik@gmail.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-05-10 03:52:22 -04:00
Alexey Starikovskiy
9fd9f8e8bd ACPI: EC: Block queries until EC is fully initialized
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:29 -05:00
Alexey Starikovskiy
01f2246269 ACPI: EC: Cleanup of EC initialization
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:29 -05:00
Alexey Starikovskiy
d033879c98 ACPI: EC: first_ec is better to be acpi_ec than acpi_device.
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:28 -05:00
Alexey Starikovskiy
d66d969df8 ACPI: EC: Rename ec_ecdt to more informative boot_ec
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:28 -05:00
Alexey Starikovskiy
c0900c3512 ACPI: EC: Clean ECDT and namespace parsing.
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:28 -05:00
Alexey Starikovskiy
e828432104 ACPI: EC: Put install handlers into separate function.
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:28 -05:00
Alexey Starikovskiy
3d02b90be2 ACPI: EC: Remove casts to/from void* from ec.c
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:28 -05:00
Alexey Starikovskiy
c45aac43fe ACPI: EC: enable burst functionality in EC.
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:28 -05:00
Alexey Starikovskiy
33c7a0738c ACPI: EC: "Fake ECDT" workaround is not needed any longer.
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:28 -05:00
Alexey Starikovskiy
a5f8dee2d3 ACPI: EC: Don't use Global Lock if not asked to do so
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:27:27 -05:00
Alexey Starikovskiy
9e19721960 ACPI: ec: fix race in status register access
Delay the read of the EC status register until
after the event that caused it occurs -- otherwise
it is possible to read and act on stale status that was
associated with the previous event.

Do this with a perpetually incrementing "event_count" to detect
when a new event occurs and it is safe to read status.

There is no workaround for polling mode -- it is inherently
exposed to reading and acting on stale status, since it
doesn't have an interrupt to tell it the event completed.

http://bugzilla.kernel.org/show_bug.cgi?id=8110

Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-03-09 23:16:23 -05:00
Len Brown
c0cd79d114 Pull fluff into release branch
Conflicts:

	arch/x86_64/pci/mmconfig.c
	drivers/acpi/bay.c

Signed-off-by: Len Brown <len.brown@intel.com>
2007-02-16 22:10:32 -05:00
Alexey Starikovskiy
c24e912b61 ACPI: ec: add unlock in error path
Signed-off-by: Alexey Starikovskiy <alexey.y.starikovskiy@linux.intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
2007-02-16 12:51:53 -05:00
Len Brown
7cda93e008 ACPI: delete extra #defines in /drivers/acpi/ drivers
Cosmetic only.

Except in a single case, #define ACPI_*_DRIVER_NAME
were invoked 0 or 1 times.

Signed-off-by: Len Brown <len.brown@intel.com>
2007-02-12 23:50:52 -05:00
Len Brown
c2b6705b75 ACPI: fix acpi_driver.name usage
It was erroneously used as a description rather than a name.

ie. turn this:

lenb@se7525gp2:/sys> ls bus/acpi/drivers
ACPI AC Adapter Driver  ACPI Embedded Controller Driver  ACPI Power Resource Driver
ACPI Battery Driver     ACPI Fan Driver                  ACPI Processor Driver
ACPI Button Driver      ACPI PCI Interrupt Link Driver   ACPI Thermal Zone Driver
ACPI container driver   ACPI PCI Root Bridge Driver      hpet

into this:

lenb@se7525gp2:~> ls /sys/bus/acpi/drivers
ac  battery  button  container  ec  fan  hpet  pci_link  pci_root  power  processor  thermal

Signed-off-by: Len Brown <len.brown@intel.com>
2007-02-12 23:33:40 -05:00
Len Brown
f52fd66d2e ACPI: clean up ACPI_MODULE_NAME() use
cosmetic only

Make "module name" actually match the file name.
Invoke with ';' as leaving it off confuses Lindent and gcc doesn't care.
Fix indentation where Lindent did get confused.

Signed-off-by: Len Brown <len.brown@intel.com>
2007-02-12 22:42:12 -05:00
Alexey Starikovskiy
15a58ed121 ACPICA: Remove duplicate table definitions (non-conflicting), cont
Signed-off-by: Len Brown <len.brown@intel.com>
2007-02-02 21:14:29 -05:00
Alexey Starikovskiy
ad363f80c3 ACPICA: Remove duplicate table definitions.
Signed-off-by: Len Brown <len.brown@intel.com>
2007-02-02 21:14:28 -05:00
Alexey Starikovskiy
ad71860a17 ACPICA: minimal patch to integrate new tables into Linux
Signed-off-by: Len Brown <len.brown@intel.com>
2007-02-02 21:14:22 -05:00
Len Brown
723fe2ca82 ACPI: ec: enable printk on cmdline use
if somebody uses "ec_intr=", lets be sure to
capture that in the dmesg even in the non-debug case.

Signed-off-by: Len Brown <len.brown@intel.com>
2007-01-06 00:02:07 -05:00
Guillaume Chazarain
c6e19194b6 ACPI: EC: move verbose printk to debug build only
The recent EC cleanup left a printk enabled on handler evaluation
resulting in a bunch of messages on normal operation, like so:

ACPI: EC: evaluating _Q60

Signed-off-by: Len Brown <len.brown@intel.com>
2007-01-02 00:12:19 -05:00
Burman Yan
36bcbec7ce ACPI: replace kmalloc+memset with kzalloc
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-20 16:54:54 -05:00
Len Brown
706b75ddbe Pull ec into test branch 2006-12-20 02:52:33 -05:00
Adrian Bunk
a854e08a5a ACPI: make drivers/acpi/ec.c:ec_ecdt static
Signed-off-by: Adrian Bunk <bunk@stusta.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-20 00:44:39 -05:00
Len Brown
463e7c7cf9 Pull trivial into test branch
Conflicts:

	drivers/acpi/ec.c
2006-12-16 00:45:07 -05:00
Alexey Starikovskiy
6ccedb10e3 ACPI: ec: Lindent once again
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:09 -05:00
Alexey Starikovskiy
3261ff4db3 ACPI: ec: Change #define to enums there possible.
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:09 -05:00
Alexey Starikovskiy
78d0af3392 ACPI: ec: Style changes.
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:07 -05:00
Alexey Starikovskiy
523953b41e ACPI: ec: Acquire Global Lock under EC mutex.
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:07 -05:00
Alexey Starikovskiy
50c1e1138c ACPI: ec: Drop udelay() from poll mode. Loop by reading status field instead.
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:07 -05:00
Alexey Starikovskiy
a86e277259 ACPI: ec: Rename gpe_bit to gpe
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:07 -05:00
Alexey Starikovskiy
c787a8551e ACPI: ec: Change semaphore to mutex.
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:07 -05:00
Alexey Starikovskiy
5d0c288b73 ACPI: ec: Query only single query at a time.
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:06 -05:00
Alexey Starikovskiy
e41334c0a6 ACPI: ec: Remove calls to clear_gpe() and enable_gpe(), as these are handled at
dispatch_gpe() level.

Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:06 -05:00
Alexey Starikovskiy
af3fd1404f ACPI: ec: Remove expect_event and all races around it.
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:06 -05:00
Alexey Starikovskiy
bec5a1e060 ACPI: ec: Read status register from check_status() function
Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:06 -05:00
Alexey Starikovskiy
5c4064124a ACPI: ec: Increase timeout from 50 to 500 ms to handle old slow machines.
http://bugzilla.kernel.org/show_bug.cgi?id=7466

Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:05 -05:00
Alexey Starikovskiy
5d57a6a55e ACPI: ec: Enable EC GPE at beginning of transaction
Temporary measure until resume sequence is right.

Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:05 -05:00
Alexey Starikovskiy
d91df1aaa9 ACPI: ec: Allow for write semantics in any command.
Check for transaction attributes, not command index to decide on event to
expect.

Signed-off-by: Len Brown <len.brown@intel.com>
2006-12-08 02:56:04 -05:00
Randy Dunlap
616362de2f ACPI: make ec_transaction not extern
Fix sparse warning:
drivers/acpi/ec.c:372:12: warning: function 'ec_transaction' with external linkage has definition

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Len Brown <len.brown@intel.com>
2006-10-27 01:47:34 -04:00