]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/scsi/pdc_adma.c
Merge branch 'upstream-fixes'
[linux-2.6-omap-h63xx.git] / drivers / scsi / pdc_adma.c
index 78b4ff117af65b1229875d94257a9566ba79ad5c..3a6bf58dc37b9affdd3e506371fe13c87dc19018 100644 (file)
@@ -131,7 +131,7 @@ static void adma_host_stop(struct ata_host_set *host_set);
 static void adma_port_stop(struct ata_port *ap);
 static void adma_phy_reset(struct ata_port *ap);
 static void adma_qc_prep(struct ata_queued_cmd *qc);
-static int adma_qc_issue(struct ata_queued_cmd *qc);
+static unsigned int adma_qc_issue(struct ata_queued_cmd *qc);
 static int adma_check_atapi_dma(struct ata_queued_cmd *qc);
 static void adma_bmdma_stop(struct ata_queued_cmd *qc);
 static u8 adma_bmdma_status(struct ata_port *ap);
@@ -190,7 +190,7 @@ static struct ata_port_info adma_port_info[] = {
        },
 };
 
-static struct pci_device_id adma_ata_pci_tbl[] = {
+static const struct pci_device_id adma_ata_pci_tbl[] = {
        { PCI_VENDOR_ID_PDC, 0x1841, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
          board_1841_idx },
 
@@ -419,7 +419,7 @@ static inline void adma_packet_start(struct ata_queued_cmd *qc)
        writew(aPIOMD4 | aGO, chan + ADMA_CONTROL);
 }
 
-static int adma_qc_issue(struct ata_queued_cmd *qc)
+static unsigned int adma_qc_issue(struct ata_queued_cmd *qc)
 {
        struct adma_port_priv *pp = qc->ap->private_data;
 
@@ -464,14 +464,12 @@ static inline unsigned int adma_intr_pkt(struct ata_host_set *host_set)
                        continue;
                qc = ata_qc_from_tag(ap, ap->active_tag);
                if (qc && (!(qc->tf.ctl & ATA_NIEN))) {
-                       unsigned int err_mask = 0;
-
                        if ((status & (aPERR | aPSD | aUIRQ)))
-                               err_mask = AC_ERR_OTHER;
+                               qc->err_mask |= AC_ERR_OTHER;
                        else if (pp->pkt[0] != cDONE)
-                               err_mask = AC_ERR_OTHER;
+                               qc->err_mask |= AC_ERR_OTHER;
 
-                       ata_qc_complete(qc, err_mask);
+                       ata_qc_complete(qc);
                }
        }
        return handled;
@@ -501,7 +499,8 @@ static inline unsigned int adma_intr_mmio(struct ata_host_set *host_set)
                
                                /* complete taskfile transaction */
                                pp->state = adma_state_idle;
-                               ata_qc_complete(qc, ac_err_mask(status));
+                               qc->err_mask |= ac_err_mask(status);
+                               ata_qc_complete(qc);
                                handled = 1;
                        }
                }