libata-sff: ata_sff_[dumb_]qc_prep are BMDMA specific
[safe/jmp/linux-2.6] / drivers / ata / pata_octeon_cf.c
index 8d9343a..3001109 100644 (file)
@@ -13,6 +13,7 @@
 #include <linux/module.h>
 #include <linux/libata.h>
 #include <linux/irq.h>
+#include <linux/slab.h>
 #include <linux/platform_device.h>
 #include <linux/workqueue.h>
 #include <scsi/scsi_host.h>
@@ -213,7 +214,7 @@ static void octeon_cf_set_dmamode(struct ata_port *ap, struct ata_device *dev)
         * This is tI, C.F. spec. says 0, but Sony CF card requires
         * more, we use 20 nS.
         */
-       dma_tim.s.dmack_s = ns_to_tim_reg(tim_mult, 20);;
+       dma_tim.s.dmack_s = ns_to_tim_reg(tim_mult, 20);
        dma_tim.s.dmack_h = ns_to_tim_reg(tim_mult, dma_ackh);
 
        dma_tim.s.dmarq = dma_arq;
@@ -488,9 +489,8 @@ static void octeon_cf_exec_command16(struct ata_port *ap,
        ata_wait_idle(ap);
 }
 
-static u8 octeon_cf_irq_on(struct ata_port *ap)
+static void octeon_cf_irq_on(struct ata_port *ap)
 {
-       return 0;
 }
 
 static void octeon_cf_irq_clear(struct ata_port *ap)
@@ -653,8 +653,6 @@ static irqreturn_t octeon_cf_interrupt(int irq, void *dev_instance)
 
                ap = host->ports[i];
                ocd = ap->dev->platform_data;
-               if (!ap || (ap->flags & ATA_FLAG_DISABLED))
-                       continue;
 
                ocd = ap->dev->platform_data;
                cf_port = ap->private_data;
@@ -665,8 +663,7 @@ static irqreturn_t octeon_cf_interrupt(int irq, void *dev_instance)
 
                qc = ata_qc_from_tag(ap, ap->link.active_tag);
 
-               if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING)) &&
-                   (qc->flags & ATA_QCFLAG_ACTIVE)) {
+               if (qc && !(qc->tf.flags & ATA_TFLAG_POLLING)) {
                        if (dma_int.s.done && !dma_cfg.s.en) {
                                if (!sg_is_last(qc->cursg)) {
                                        qc->cursg = sg_next(qc->cursg);
@@ -736,8 +733,7 @@ static void octeon_cf_delayed_finish(struct work_struct *work)
                goto out;
        }
        qc = ata_qc_from_tag(ap, ap->link.active_tag);
-       if (qc && (!(qc->tf.flags & ATA_TFLAG_POLLING)) &&
-           (qc->flags & ATA_QCFLAG_ACTIVE))
+       if (qc && !(qc->tf.flags & ATA_TFLAG_POLLING))
                octeon_cf_dma_finished(ap, qc);
 out:
        spin_unlock_irqrestore(&host->lock, flags);
@@ -840,7 +836,7 @@ static int __devinit octeon_cf_probe(struct platform_device *pdev)
        ocd = pdev->dev.platform_data;
 
        cs0 = devm_ioremap_nocache(&pdev->dev, res_cs0->start,
-                                  res_cs0->end - res_cs0->start + 1);
+                                  resource_size(res_cs0));
 
        if (!cs0)
                return -ENOMEM;
@@ -852,7 +848,7 @@ static int __devinit octeon_cf_probe(struct platform_device *pdev)
                        return -EINVAL;
 
                cs1 = devm_ioremap_nocache(&pdev->dev, res_cs1->start,
-                                          res_cs0->end - res_cs1->start + 1);
+                                          resource_size(res_cs1));
 
                if (!cs1)
                        return -ENOMEM;