sata_mv errata workaround for sata25 part 1
[safe/jmp/linux-2.6] / drivers / ata / sata_inic162x.c
index 6e6fca4..d27bb9a 100644 (file)
@@ -222,7 +222,7 @@ static void inic_bmdma_setup(struct ata_queued_cmd *qc)
        writeb(pp->cached_prdctl, port_base + PORT_PRD_CTL);
 
        /* issue r/w command */
-       ap->ops->exec_command(ap, &qc->tf);
+       ap->ops->sff_exec_command(ap, &qc->tf);
 }
 
 static void inic_bmdma_start(struct ata_queued_cmd *qc)
@@ -267,14 +267,14 @@ static void inic_host_intr(struct ata_port *ap)
                        ata_qc_from_tag(ap, ap->link.active_tag);
 
                if (unlikely(!qc || (qc->tf.flags & ATA_TFLAG_POLLING))) {
-                       ap->ops->check_status(ap); /* clear ATA interrupt */
+                       ap->ops->sff_check_status(ap); /* clear ATA interrupt */
                        return;
                }
 
                if (likely(ata_sff_host_intr(ap, qc)))
                        return;
 
-               ap->ops->check_status(ap); /* clear ATA interrupt */
+               ap->ops->sff_check_status(ap); /* clear ATA interrupt */
                ata_port_printk(ap, KERN_WARNING, "unhandled "
                                "interrupt, irq_stat=%x\n", irq_stat);
                return;
@@ -351,7 +351,7 @@ static unsigned int inic_qc_issue(struct ata_queued_cmd *qc)
         */
        if (unlikely(qc->tf.command == ATA_CMD_ID_ATA ||
                     qc->tf.command == ATA_CMD_ID_ATAPI)) {
-               u8 stat = ap->ops->check_status(ap);
+               u8 stat = ap->ops->sff_check_status(ap);
                if (stat == 0x7f || stat == 0xff)
                        return AC_ERR_HSM;
        }
@@ -365,7 +365,7 @@ static void inic_freeze(struct ata_port *ap)
 
        __inic_set_pirq_mask(ap, PIRQ_MASK_FREEZE);
 
-       ap->ops->check_status(ap);
+       ap->ops->sff_check_status(ap);
        writeb(0xff, port_base + PORT_IRQ_STAT);
 
        readb(port_base + PORT_IRQ_STAT); /* flush */
@@ -375,7 +375,7 @@ static void inic_thaw(struct ata_port *ap)
 {
        void __iomem *port_base = inic_port_base(ap);
 
-       ap->ops->check_status(ap);
+       ap->ops->sff_check_status(ap);
        writeb(0xff, port_base + PORT_IRQ_STAT);
 
        __inic_set_pirq_mask(ap, PIRQ_MASK_OTHER);
@@ -417,10 +417,8 @@ static int inic_hardreset(struct ata_link *link, unsigned int *class,
        if (ata_link_online(link)) {
                struct ata_taskfile tf;
 
-               /* wait a while before checking status */
-               ata_sff_wait_after_reset(ap, deadline);
-
-               rc = ata_sff_wait_ready(ap, deadline);
+               /* wait for link to become ready */
+               rc = ata_sff_wait_after_reset(link, 1, deadline);
                /* link occupied, -ENODEV too is an error */
                if (rc) {
                        ata_link_printk(link, KERN_WARNING, "device not ready "
@@ -430,8 +428,6 @@ static int inic_hardreset(struct ata_link *link, unsigned int *class,
 
                ata_sff_tf_read(ap, &tf);
                *class = ata_dev_classify(&tf);
-               if (*class == ATA_DEV_UNKNOWN)
-                       *class = ATA_DEV_NONE;
        }
 
        return 0;