ACPI / EC: Reduce ec_poll() by referencing the last register access timestamp.
authorLv Zheng <lv.zheng@intel.com>
Thu, 5 Feb 2015 08:27:29 +0000 (16:27 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 5 Feb 2015 14:42:18 +0000 (15:42 +0100)
commit9e295ac14d6a59180beed0735e6a504c2ee87761
tree90268475ce9937bd908dfabb0cffde87381abe5c
parentca37bfdfbc8d0a3ec73e4b97bb26dcfa51d515aa
ACPI / EC: Reduce ec_poll() by referencing the last register access timestamp.

Timeout in the ec_poll() doesn't refer to the last register access time. It
thus can win the competition against the acpi_ec_gpe_handler() if a
transaction takes longer than 1ms but individual register accesses are less
than 1ms.  In some cases, it can make the following silicon bug easier to
be triggered:
 GPE EN is not wired to the GPE trigger line, so when GPE STS is already
 set when 1 is written to GPE EN, no GPE can be triggered.

This patch adds register access timestamp reference support for ec_poll()
to reduce the number of ec_poll() invocations.

Reported-by: Venkat Raghavulu <venkat.raghavulu@intel.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/ec.c