linux/drivers/ata
Tejun Heo 6746544c3b libata: reimplement ACPI invocation
This patch reimplements ACPI invocation such that, instead of
exporting ACPI details to the rest of libata, ACPI event handlers -
ata_acpi_on_resume() and ata_acpi_on_devcfg() - are used.  These two
functions are responsible for determining whether specific ACPI method
is used and when.

On resume, _GTF is scheduled by setting ATA_DFLAG_ACPI_PENDING device
flag.  This is done this way to avoid performing the action on wrong
device device (device swapping while suspended).

On every ata_dev_configure(), ata_acpi_on_devcfg() is called, which
performs _SDD and _GTF.  _GTF is performed only after resuming and, if
SATA, hardreset as the ACPI spec specifies.  As _GTF may contain
arbitrary commands, IDENTIFY page is re-read after _GTF taskfiles are
executed.

If one of ACPI methods fails, ata_acpi_on_devcfg() retries on the
first failure.  If it fails again on the second try, ACPI is disabled
on the device.  Note that successful configuration clears ACPI failed
status.

With all feature checks moved to the above two functions,
do_drive_set_taskfiles() is trivial and thus collapsed into
ata_acpi_exec_tfs(), which is now static and converted to return the
number of executed taskfiles to be used by ata_acpi_on_resume().  As
failures are handled properly, ata_acpi_push_id() now returns -errno
on errors instead of unconditional zero.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-07-09 12:17:31 -04:00
..
ahci.c ahci: fix PORTS_IMPL override 2007-06-20 19:56:21 -04:00
ata_generic.c ata_generic: Check the right register for the DMA enabled flags 2007-07-03 10:09:29 -04:00
ata_piix.c ata_piix: add short 40c quirk for Acer Aspire 2030, take #2 2007-05-24 20:34:48 -04:00
Kconfig scsi disk help file is not complete 2007-07-02 10:12:34 -04:00
libata-acpi.c libata: reimplement ACPI invocation 2007-07-09 12:17:31 -04:00
libata-core.c libata: reimplement ACPI invocation 2007-07-09 12:17:31 -04:00
libata-eh.c libata: reimplement ACPI invocation 2007-07-09 12:17:31 -04:00
libata-scsi.c libata: call ata_check_atapi_dma() with qc better prepared 2007-06-27 02:50:08 -04:00
libata-sff.c libata: fix assigned IRQ reporting 2007-07-03 10:06:35 -04:00
libata.h libata: reimplement ACPI invocation 2007-07-09 12:17:31 -04:00
Makefile libata-acpi: s/CONFIG_SATA_ACPI/CONFIG_ATA_ACPI/ 2007-05-11 18:12:42 -04:00
pata_ali.c pata_ali: fix UDMA settings 2007-07-03 10:06:45 -04:00
pata_amd.c PATA: Add the MCP73/77 support to PATA driver 2007-06-20 19:56:21 -04:00
pata_artop.c pata: Trivia 2007-05-25 17:29:59 -04:00
pata_atiixp.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_cmd64x.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_cmd640.c libata: Trim trailing whitespace 2007-05-21 20:14:23 -04:00
pata_cs5520.c libata: fix assigned IRQ reporting 2007-07-03 10:06:35 -04:00
pata_cs5530.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_cs5535.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_cypress.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_efar.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_hpt3x2n.c hpt3x2n: Correct revision boundary 2007-05-24 20:34:47 -04:00
pata_hpt3x3.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_hpt37x.c HPT374 is UDMA100 not UDMA133 2007-06-27 02:44:18 -04:00
pata_hpt366.c pata_hpt366: Enable bits are unreliable so don't use them 2007-05-21 20:00:43 -04:00
pata_icside.c [ARM] pata_icside: fix build errors 2007-05-11 17:19:07 +01:00
pata_isapnp.c remove unused variable in pata_isapnp 2007-06-09 22:40:27 -04:00
pata_it821x.c pata_it821x: fix section mismatch warning 2007-06-27 02:44:21 -04:00
pata_it8213.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_ixp4xx_cf.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_jmicron.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_legacy.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_marvell.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_mpc52xx.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
pata_mpiix.c libata: reimplement suspend/resume support using sdev->manage_start_stop 2007-05-11 18:01:03 -04:00
pata_netcell.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_ns87410.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_oldpiix.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_opti.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_optidma.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_pcmcia.c pata_pcmcia: Switch to ata_sff_port_start 2007-07-03 11:31:06 -04:00
pata_pdc202xx_old.c pata_pdc202xx_old: Correct cable detect logic 2007-07-03 10:11:12 -04:00
pata_pdc2027x.c libata: pata_pdc2027x PLL input clock fix 2007-07-02 10:12:34 -04:00
pata_platform.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_qdi.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_radisys.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_rz1000.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_sc1200.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_scc.c Fix build failure for drivers/ata/pata_scc.c 2007-05-25 04:17:31 -04:00
pata_serverworks.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_sil680.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_sis.c libata: PATA-mode fixes for sis_sata 2007-07-02 10:17:42 -04:00
pata_sl82c105.c libata: bump versions 2007-05-21 20:26:38 -04:00
pata_triflex.c libata: clean up SFF init mess 2007-05-11 18:09:18 -04:00
pata_via.c libata: always use polling SETXFER 2007-06-04 16:48:34 -04:00
pata_winbond.c libata: bump versions 2007-05-21 20:26:38 -04:00
pdc_adma.c libata: bump versions 2007-05-21 20:26:38 -04:00
sata_inic162x.c sata_inic162x: disable LBA48 devices 2007-07-02 10:12:34 -04:00
sata_mv.c sata_mv: PCI-ID for Adaptec 1430SA SATA Controller 2007-07-03 10:06:35 -04:00
sata_nv.c [libata] sata_nv: undo merge error 2007-07-02 18:12:19 -04:00
sata_promise.c sata_promise: use TF interface for polling NODATA commands 2007-06-08 17:23:33 -07:00
sata_promise.h Move libata to drivers/ata. 2006-08-10 07:31:37 -04:00
sata_qstor.c libata: bump versions 2007-05-21 20:26:38 -04:00
sata_sil24.c libata: bump versions 2007-05-21 20:26:38 -04:00
sata_sil.c libata: Trim trailing whitespace 2007-05-21 20:14:23 -04:00
sata_sis.c libata: PATA-mode fixes for sis_sata 2007-07-02 10:17:42 -04:00
sata_svw.c libata: bump versions 2007-05-21 20:26:38 -04:00
sata_sx4.c libata: bump versions 2007-05-21 20:26:38 -04:00
sata_uli.c libata: bump versions 2007-05-21 20:26:38 -04:00
sata_via.c [libata] sata_via, pata_via: Add PCI IDs. 2007-05-25 05:02:06 -04:00
sata_vsc.c libata: bump versions 2007-05-21 20:26:38 -04:00
sis.h libata: PATA-mode fixes for sis_sata 2007-07-02 10:17:42 -04:00