]> pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
[PATCH] libata: implement ata_std_probeinit()
authorTejun Heo <htejun@gmail.com>
Thu, 2 Feb 2006 09:20:00 +0000 (18:20 +0900)
committerJeff Garzik <jgarzik@pobox.com>
Thu, 9 Feb 2006 06:59:52 +0000 (01:59 -0500)
This patch implements the off-the-shelf probeinit component operation.
Currently, all it does is waking up the PHY if it's a SATA port.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
drivers/scsi/libata-core.c
include/linux/libata.h

index c36c5a9a4617615e1fdb84adb6bd52ab4752380d..14cdbb336dd501990cdf6b0e8ed2882988d51c3c 100644 (file)
@@ -2295,6 +2295,19 @@ static int sata_phy_resume(struct ata_port *ap)
        return -1;
 }
 
+/**
+ *     ata_std_probeinit - initialize probing
+ *     @ap: port to be probed
+ *
+ *     @ap is about to be probed.  Initialize it.  This function is
+ *     to be used as standard callback for ata_drive_probe_reset().
+ */
+extern void ata_std_probeinit(struct ata_port *ap)
+{
+       if (ap->flags & ATA_FLAG_SATA && ap->ops->scr_read)
+               sata_phy_resume(ap);
+}
+
 /**
  *     ata_std_softreset - reset host port via ATA SRST
  *     @ap: port to reset
@@ -2485,7 +2498,7 @@ int ata_std_probe_reset(struct ata_port *ap, unsigned int *classes)
        if (ap->flags & ATA_FLAG_SATA && ap->ops->scr_read)
                hardreset = sata_std_hardreset;
 
-       return ata_drive_probe_reset(ap, NULL,
+       return ata_drive_probe_reset(ap, ata_std_probeinit,
                                     ata_std_softreset, hardreset,
                                     ata_std_postreset, classes);
 }
@@ -5535,6 +5548,7 @@ EXPORT_SYMBOL_GPL(ata_port_probe);
 EXPORT_SYMBOL_GPL(sata_phy_reset);
 EXPORT_SYMBOL_GPL(__sata_phy_reset);
 EXPORT_SYMBOL_GPL(ata_bus_reset);
+EXPORT_SYMBOL_GPL(ata_std_probeinit);
 EXPORT_SYMBOL_GPL(ata_std_softreset);
 EXPORT_SYMBOL_GPL(sata_std_hardreset);
 EXPORT_SYMBOL_GPL(ata_std_postreset);
index e8f29cefc351f9f7cd965986605b76c15271da39..68b3fe6f9a4da7d23040f44e1ac1005065c801f3 100644 (file)
@@ -488,6 +488,7 @@ extern int ata_drive_probe_reset(struct ata_port *ap,
                        ata_probeinit_fn_t probeinit,
                        ata_reset_fn_t softreset, ata_reset_fn_t hardreset,
                        ata_postreset_fn_t postreset, unsigned int *classes);
+extern void ata_std_probeinit(struct ata_port *ap);
 extern int ata_std_softreset(struct ata_port *ap, int verbose,
                             unsigned int *classes);
 extern int sata_std_hardreset(struct ata_port *ap, int verbose,