summaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-core.c
diff options
context:
space:
mode:
authorKristen Carlson Accardi2006-11-11 01:14:47 +0100
committerJeff Garzik2007-02-16 19:32:41 +0100
commit08573a86c8da1379b4f341ab4781bb7c8685d5b6 (patch)
tree23596bfef66a165d52d452ce57c9109971563278 /drivers/ata/libata-core.c
parent[PATCH] libata: ACPI _SDD support (diff)
downloadkernel-qcow2-linux-08573a86c8da1379b4f341ab4781bb7c8685d5b6.tar.gz
kernel-qcow2-linux-08573a86c8da1379b4f341ab4781bb7c8685d5b6.tar.xz
kernel-qcow2-linux-08573a86c8da1379b4f341ab4781bb7c8685d5b6.zip
[PATCH] libata: change order of _SDD/_GTF execution (resend #3)
Make the sdd call come before gtf. _SDD is used to provide input to the _GTF file, so it should be executed first. Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com> Signed-off-by: Jeff Garzik <jeff@garzik.org> (cherry picked from 89d74215e1e5b79ea084385b5c83d0e33cf2d655 commit)
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r--drivers/ata/libata-core.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 90081e5ea80e..e900c5edefc4 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1568,6 +1568,16 @@ int ata_dev_configure(struct ata_device *dev)
ata_dev_printk(dev, KERN_DEBUG, "%s: ENTER, host %u, dev %u\n",
__FUNCTION__, ap->id, dev->devno);
+ /* set _SDD */
+ rc = ata_acpi_push_id(ap, dev->devno);
+ if (rc) {
+ ata_dev_printk(dev, KERN_WARNING, "failed to set _SDD(%d)\n",
+ rc);
+ }
+
+ /* retrieve and execute the ATA task file of _GTF */
+ ata_acpi_exec_tfs(ap);
+
/* print device capabilities */
if (ata_msg_probe(ap))
ata_dev_printk(dev, KERN_DEBUG,
@@ -1737,14 +1747,6 @@ int ata_dev_configure(struct ata_device *dev)
if (ap->ops->dev_config)
ap->ops->dev_config(ap, dev);
- /* set _SDD */
- rc = ata_acpi_push_id(ap, dev->devno);
- if (rc) {
- ata_dev_printk(dev, KERN_WARNING, "failed to set _SDD(%d)\n",
- rc);
- goto err_out_nosup;
- }
-
if (ata_msg_probe(ap))
ata_dev_printk(dev, KERN_DEBUG, "%s: EXIT, drv_stat = 0x%x\n",
__FUNCTION__, ata_chk_status(ap));
@@ -1790,9 +1792,6 @@ int ata_bus_probe(struct ata_port *ap)
/* reset and determine device classes */
ap->ops->phy_reset(ap);
- /* retrieve and execute the ATA task file of _GTF */
- ata_acpi_exec_tfs(ap);
-
for (i = 0; i < ATA_MAX_DEVICES; i++) {
dev = &ap->device[i];