summaryrefslogtreecommitdiffstats
path: root/samples
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-12-15 15:05:02 +0900
committerJeff Garzik <jeff@garzik.org>2007-12-17 20:33:14 -0500
commitc05e6ff035c1b25d17364a685432b33937d3dc23 (patch)
tree08c9171d024b6659b29a4f9f7d95318430b75b6a /samples
parent562f0c2d771ee7be6b37fe015f94a929f8056120 (diff)
downloadop-kernel-dev-c05e6ff035c1b25d17364a685432b33937d3dc23.zip
op-kernel-dev-c05e6ff035c1b25d17364a685432b33937d3dc23.tar.gz
libata-acpi: implement and use ata_acpi_init_gtm()
_GTM fetches currently configured transfer mode while _STM configures controller according to _GTM parameter and prepares transfer mode configuration TFs for _GTF. In many cases _GTM and _STM implementations are quite brittle and can't cope with configuration changed by libata. libata does not depend on ATA ACPI to configure devices. The only reason libata performs _GTM and _STM are to make _GTF evaluation succeed and libata also doesn't care about how _GTF TFs configure transfer mode. It overrides that configuration anyway, so from libata's POV, it doesn't matter what value is feeded to _STM as long as evaluation succeeds for _STM and following _GTF. This patch adds dev->__acpi_init_gtm and store initial _GTM values on host initialization before modified by reset and mode configuration. If the field is valid, ata_acpi_init_gtm() returns pointer to the saved _GTM structure; otherwise, NULL. This saved value is used for _STM during resume and peek at BIOS/firmware programmed initial timing for later use. The accessor is there to make building w/o ACPI easy as dev->__acpi_init doesn't exist if ACPI is not enabled. On driver detach, the initial BIOS configuration is restored by executing _STM with the initial _GTM values such that the next driver can also use the initial BIOS configured values. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'samples')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud