android_kernel_samsung_sm8650/drivers/acpi
Lv Zheng 3cb02aeb28 ACPI / EC: Fix EC_FLAGS_QUERY_HANDSHAKE platforms using new event clearing timing.
It is reported that on several platforms, EC firmware will not respond
non-expected QR_EC (see EC_FLAGS_QUERY_HANDSHAKE, only write QR_EC when
SCI_EVT is set).

Unfortunately, ACPI specification doesn't define when the SCI_EVT should be
cleared by the firmware, thus the original implementation queued up second
QR_EC right after writing QR_EC command and before reading the returned
event value as at that time the SCI_EVT is ensured not cleared. This
behavior is also based on the assumption that the firmware should be able
to return 0x00 to indicate "no outstanding event". This behavior did fix
issues on Samsung platforms where the spurious query value of 0x00 is
supported and didn't break platforms in my test queue.

But recently, specific Acer, Asus, Lenovo platforms keep on blaming this
change.

This patch changes the behavior to re-check the SCI_EVT a bit later and
removes EC_FLAGS_QUERY_HANDSHAKE quirks, hoping this is the Windows
compliant EC driver behavior.

In order to be robust to the possible regressions, instead of removing the
quirk directly, this patch keeps the quirk code, removes the quirk users
and keeps old behavior for Samsung platforms.

Cc: 3.16+ <stable@vger.kernel.org> # 3.16+
Link: https://bugzilla.kernel.org/show_bug.cgi?id=94411
Link: https://bugzilla.kernel.org/show_bug.cgi?id=97381
Link: https://bugzilla.kernel.org/show_bug.cgi?id=98111
Reported-and-tested-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Reported-and-tested-by: Tigran Gabrielyan <tigrangab@gmail.com>
Reported-and-tested-by: Adrien D <ghbdtn@openmailbox.org>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-06-15 14:35:59 +02:00
..
acpica Revert "ACPICA: Permanently set _REV to the value '2'." 2015-05-13 00:44:14 +02:00
apei When checking addresses in APEI action entries for validity, allow 2015-01-15 11:30:57 +01:00
pmic ACPI/PMIC: Fix typo in MODULE_DESCRIPTION in intel_pmic_crc.c 2015-03-26 21:34:51 +01:00
ac.c power_supply: Change ownership from driver to core 2015-03-13 23:15:51 +01:00
acpi_apd.c ACPI: add AMD ACPI2Platform device support for x86 system 2015-02-06 15:42:16 +01:00
acpi_cmos_rtc.c ACPI / RTC: Fix CMOS RTC opregion handler accesses to wrong addresses 2014-09-08 15:38:41 +02:00
acpi_extlog.c ACPI and power management updates for 3.17-rc1 2014-08-06 20:34:19 -07:00
acpi_ipmi.c ACPI / IPMI: Cleanup coding styles 2013-09-30 19:46:13 +02:00
acpi_lpat.c ACPI / LPAT: Common table processing functions 2015-01-29 21:02:10 +08:00
acpi_lpss.c ACPI / LPSS: provide con_id for the clkdev 2015-03-10 00:28:43 +01:00
acpi_memhotplug.c ACPICA: Resources: Provide common part for struct acpi_resource_address structures. 2015-01-26 16:09:56 +01:00
acpi_pad.c ACPI/PAD: Use explicit broadcast oneshot control function 2015-04-03 08:44:34 +02:00
acpi_platform.c driver core / ACPI: Represent ACPI companions using fwnode_handle 2015-03-16 23:49:03 +01:00
acpi_pnp.c ACPI / PNP: add two IDs to list for PNPACPI device enumeration 2015-05-04 16:03:12 +02:00
acpi_processor.c ACPI / processor: Introduce phys_cpuid_t for CPU hardware ID 2015-03-26 15:12:51 +00:00
battery.c Power management and ACPI updates for v4.1-rc1 2015-04-14 20:21:54 -07:00
battery.h ACPI / battery: move some ACPI_BATTERY_* definitions to header 2014-03-19 01:57:46 +01:00
bgrt.c acpi: bgrt: fix build error due to attribute change 2013-08-22 08:34:39 -07:00
blacklist.c ACPI / blacklist: Disable Vista compatibility for Sony VGN-SR19XN. 2015-03-16 15:14:50 +01:00
bus.c ARM64 / ACPI: Introduce ACPI_IRQ_MODEL_GIC and register device's gsi 2015-03-26 15:13:07 +00:00
button.c ACPI / button: Do not propagate wakeup-from-suspend events 2014-07-23 00:59:04 +02:00
cm_sbs.c ACPI: Revert "ACPI: Remove CONFIG_ACPI_PROCFS_POWER and cm_sbsc.c" 2014-05-06 01:52:09 +02:00
container.c ACPI / hotplug: Generate online uevents for ACPI containers 2014-09-21 02:58:18 +02:00
custom_method.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
debugfs.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
device_pm.c ACPI / PM: Remove unneeded nested #ifdef 2015-02-08 23:45:58 +01:00
dock.c driver core / ACPI: Represent ACPI companions using fwnode_handle 2015-03-16 23:49:03 +01:00
ec_sys.c ACPI / EC: Mark the function acpi_ec_add_debugfs() as static in ec_sys.c 2014-01-06 00:13:22 +01:00
ec.c ACPI / EC: Fix EC_FLAGS_QUERY_HANDSHAKE platforms using new event clearing timing. 2015-06-15 14:35:59 +02:00
event.c netlink: make nlmsg_end() and genlmsg_end() void 2015-01-18 01:03:45 -05:00
fan.c ACPI / Fan: Use bus id as the name for non PNP0C0B (Fan) devices 2014-12-11 00:29:02 +01:00
glue.c ACPI: Introduce has_acpi_companion() 2015-03-16 23:49:08 +01:00
gsi.c ACPI: move arm64 GSI IRQ model to generic GSI IRQ layer 2015-03-26 15:13:09 +00:00
hed.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
int340x_thermal.c ACPI/int340x_thermal: enumerate INT3401 for Intel SoC DTS thermal driver 2015-01-06 08:17:14 +08:00
internal.h ACPI / EC: Convert event handling work queue into loop style. 2015-06-15 14:35:59 +02:00
ioapic.c x86/irq, ACPI: Implement ACPI driver to support IOAPIC hotplug 2015-02-05 15:09:26 +01:00
Kconfig ACPI: move arm64 GSI IRQ model to generic GSI IRQ layer 2015-03-26 15:13:09 +00:00
Makefile ACPI: move arm64 GSI IRQ model to generic GSI IRQ layer 2015-03-26 15:13:09 +00:00
numa.c ACPI / table: remove duplicate NULL check for the handler of acpi_table_parse() 2015-02-06 01:34:47 +01:00
nvs.c ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem. 2014-05-27 18:13:08 +02:00
osl.c ACPI / init: Fix the ordering of acpi_reserve_resources() 2015-05-07 21:19:39 +02:00
pci_irq.c Revert "x86/PCI: Refine the way to release PCI IRQ resources" 2015-03-20 14:56:19 +01:00
pci_link.c ACPI: Remove duplicate definitions of PREFIX 2014-03-19 02:01:57 +01:00
pci_root.c PCI: Don't clear ASPM bits when the FADT declares it's unsupported 2015-04-09 14:20:11 -05:00
pci_slot.c ACPI / PCI: Include appropriate header file in pci_slot.c 2014-01-06 00:13:22 +01:00
power.c ACPI: Remove duplicate definitions of PREFIX 2014-03-19 02:01:57 +01:00
proc.c ACPI / proc: remove unneeded NULL check 2014-02-05 01:06:21 +01:00
processor_core.c ACPI / processor: Make it possible to get CPU hardware ID via GICC 2015-03-26 15:13:07 +00:00
processor_driver.c ACPI / processor: Make acpi_cpu_soft_notify() process CPU FROZEN events 2014-08-06 22:22:03 +02:00
processor_idle.c Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-04-13 11:08:28 -07:00
processor_pdc.c ACPI / processor: Introduce ARCH_MIGHT_HAVE_ACPI_PDC 2014-07-21 13:50:58 +02:00
processor_perflib.c ACPI / processor: use acpi_evaluate_ost() to replace open-coded version 2014-02-21 00:27:47 +01:00
processor_thermal.c ACPI: correct minor typos 2013-12-07 01:38:45 +01:00
processor_throttling.c ACPI / processor: Rework processor throttling with work_on_cpu() 2014-02-27 00:21:05 +01:00
property.c ACPI / property: Drop size_prop from acpi_dev_get_property_reference() 2014-11-05 20:48:06 +01:00
reboot.c Revert "ACPI: ignore FADT reset-reg-sup flag" 2012-04-20 11:19:35 -07:00
resource.c x86/PCI/ACPI: Make all resources except [io 0xcf8-0xcff] available on PCI bus 2015-04-30 22:17:34 +02:00
sbs.c ACPI / SBS: Enable battery manager when present 2015-04-29 00:04:29 +02:00
sbshc.c ACPI / SBS: Add 5 us delay to fix SBS hangs on MacBook 2015-04-30 23:18:11 +02:00
sbshc.h ACPI: SBS: Ignore alarms coming from unknown devices 2007-12-14 15:14:06 -05:00
scan.c ACPI / scan: Add a scan handler for PRP0001 2015-04-24 02:18:01 +02:00
sleep.c ACPI / PM: Enable all wakeup GPEs in suspend-to-idle 2015-03-30 01:52:02 +02:00
sleep.h ACPI / sleep: Drop acpi_suspend() which is not used 2015-03-18 12:53:21 +01:00
sysfs.c ACPI / sysfs: Treat the count field of counter_show() as unsigned 2015-03-10 01:03:30 +01:00
tables.c ACPI / table: Print GIC information when MADT is parsed 2015-03-25 11:49:31 +00:00
thermal.c Thermal: move the KELVIN_TO_MILLICELSIUS macro to thermal.h 2014-10-10 13:57:15 +08:00
utils.c Merge branches 'acpi-scan', 'acpi-utils' and 'acpi-pm' 2014-12-18 18:42:56 +01:00
video_detect.c ACPI / video: Add force native backlight quirk for Lenovo Ideapad Z570 2015-03-22 22:02:51 +01:00
video.c ACPI / video: Add force native backlight quirk for Lenovo Ideapad Z570 2015-03-22 22:02:51 +01:00
wakeup.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00