libata-acpi: implement dev->gtf_cache and evaluate _GTF right after _STM during resume
authorTejun Heo <htejun@gmail.com>
Sat, 15 Dec 2007 06:05:03 +0000 (15:05 +0900)
committerJeff Garzik <jeff@garzik.org>
Tue, 18 Dec 2007 01:33:14 +0000 (20:33 -0500)
commit398e07826b24cbeb5ff2f0a178367fc9d24cd475
tree78191583f2e1e5bb0aba9fbee8016e72285f4b31
parentc05e6ff035c1b25d17364a685432b33937d3dc23
libata-acpi: implement dev->gtf_cache and evaluate _GTF right after _STM during resume

On certain implementations, _GTF evaluation depends on preceding _STM
and both can be pretty picky about the configuration.  Using _GTM
result cached during controller initialization satisfies the most
neurotic _STM implementation.  However, libata evaluates _GTF after
reset during device configuration and the hardware state can be
different from what _GTF expects and can cause evaluation failure.

This patch adds dev->gtf_cache and updates ata_dev_get_GTF() such that
it uses the cached value if available.  Cache is cleared with a call
to ata_acpi_clear_gtf().

Because for SATA ACPI nodes _GTF must be evaluated after _SDD which
can't be done till IDENTIFY is complete, _GTF caching from
ata_acpi_on_resume() is used only for IDE ACPI nodes.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/ata/libata-acpi.c
include/linux/libata.h