Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e2a9752a21df4407a2094fb3345878d18a6c6d68
Commit:     e2a9752a21df4407a2094fb3345878d18a6c6d68
Parent:     2e41e8e67af4cb0917793922fc8f55d3eeb6fa43
Author:     Alan Cox <[EMAIL PROTECTED]>
AuthorDate: Thu Mar 8 23:06:47 2007 +0000
Committer:  Jeff Garzik <[EMAIL PROTECTED]>
CommitDate: Sat Apr 28 14:15:57 2007 -0400

    sata_promise: Switch to cable method, clean up some bits as a result
    
    Signed-off-by: Alan Cox <[EMAIL PROTECTED]>
    Signed-off-by: Jeff Garzik <[EMAIL PROTECTED]>
---
 drivers/ata/sata_promise.c |   30 ++++++++++++------------------
 1 files changed, 12 insertions(+), 18 deletions(-)

diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c
index 2339813..78df546 100644
--- a/drivers/ata/sata_promise.c
+++ b/drivers/ata/sata_promise.c
@@ -45,7 +45,7 @@
 #include "sata_promise.h"
 
 #define DRV_NAME       "sata_promise"
-#define DRV_VERSION    "2.00"
+#define DRV_VERSION    "2.01"
 
 
 enum {
@@ -131,7 +131,7 @@ static void pdc_freeze(struct ata_port *ap);
 static void pdc_thaw(struct ata_port *ap);
 static void pdc_error_handler(struct ata_port *ap);
 static void pdc_post_internal_cmd(struct ata_queued_cmd *qc);
-
+static int pdc_cable_detect(struct ata_port *ap);
 
 static struct scsi_host_template pdc_ata_sht = {
        .module                 = THIS_MODULE,
@@ -166,6 +166,7 @@ static const struct ata_port_operations pdc_sata_ops = {
        .thaw                   = pdc_thaw,
        .error_handler          = pdc_error_handler,
        .post_internal_cmd      = pdc_post_internal_cmd,
+       .cable_detect           = pdc_cable_detect,
        .data_xfer              = ata_data_xfer,
        .irq_handler            = pdc_interrupt,
        .irq_clear              = pdc_irq_clear,
@@ -374,18 +375,18 @@ static void pdc_reset_port(struct ata_port *ap)
        readl(mmio);    /* flush */
 }
 
-static void pdc_pata_cbl_detect(struct ata_port *ap)
+static int pdc_cable_detect(struct ata_port *ap)
 {
        u8 tmp;
        void __iomem *mmio = (void __iomem *) ap->ioaddr.cmd_addr + PDC_CTLSTAT 
+ 0x03;
 
-       tmp = readb(mmio);
-
-       if (tmp & 0x01) {
-               ap->cbl = ATA_CBL_PATA40;
-               ap->udma_mask &= ATA_UDMA_MASK_40C;
-       } else
-               ap->cbl = ATA_CBL_PATA80;
+       if (!sata_scr_valid(ap)) {
+               tmp = readb(mmio);
+               if (tmp & 0x01)
+                       return ATA_CBL_PATA40;
+               return ATA_CBL_PATA80;
+       }
+       return ATA_CBL_SATA;
 }
 
 static u32 pdc_sata_scr_read (struct ata_port *ap, unsigned int sc_reg)
@@ -555,13 +556,6 @@ static void pdc_thaw(struct ata_port *ap)
        readl(mmio + PDC_CTLSTAT); /* flush */
 }
 
-static int pdc_pre_reset(struct ata_port *ap)
-{
-       if (!sata_scr_valid(ap))
-               pdc_pata_cbl_detect(ap);
-       return ata_std_prereset(ap);
-}
-
 static void pdc_error_handler(struct ata_port *ap)
 {
        ata_reset_fn_t hardreset;
@@ -574,7 +568,7 @@ static void pdc_error_handler(struct ata_port *ap)
                hardreset = sata_std_hardreset;
 
        /* perform recovery */
-       ata_do_eh(ap, pdc_pre_reset, ata_std_softreset, hardreset,
+       ata_do_eh(ap, ata_std_prereset, ata_std_softreset, hardreset,
                  ata_std_postreset);
 }
 
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to