]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ata/pata_pdc202xx_old.c
Merge git://git.infradead.org/mtd-2.6
[linux-2.6-omap-h63xx.git] / drivers / ata / pata_pdc202xx_old.c
index ad691b9e77434d94bc5491ec250304eb573e970a..6dd63413a523475c82f45cd5c03746b9b13c01b2 100644 (file)
@@ -170,17 +170,17 @@ static void pdc2026x_bmdma_start(struct ata_queued_cmd *qc)
        struct ata_taskfile *tf = &qc->tf;
        int sel66 = ap->port_no ? 0x08: 0x02;
 
-       unsigned long master = ap->host->ports[0]->ioaddr.bmdma_addr;
-       unsigned long clock = master + 0x11;
-       unsigned long atapi_reg = master + 0x20 + (4 * ap->port_no);
+       void __iomem *master = ap->host->ports[0]->ioaddr.bmdma_addr;
+       void __iomem *clock = master + 0x11;
+       void __iomem *atapi_reg = master + 0x20 + (4 * ap->port_no);
 
        u32 len;
 
        /* Check we keep host level locking here */
        if (adev->dma_mode >= XFER_UDMA_2)
-               outb(inb(clock) | sel66, clock);
+               iowrite8(ioread8(clock) | sel66, clock);
        else
-               outb(inb(clock) & ~sel66, clock);
+               iowrite8(ioread8(clock) & ~sel66, clock);
 
        /* The DMA clocks may have been trashed by a reset. FIXME: make conditional
           and move to qc_issue ? */
@@ -189,17 +189,14 @@ static void pdc2026x_bmdma_start(struct ata_queued_cmd *qc)
        /* Cases the state machine will not complete correctly without help */
        if ((tf->flags & ATA_TFLAG_LBA48) ||  tf->protocol == ATA_PROT_ATAPI_DMA)
        {
-               if (tf->flags & ATA_TFLAG_LBA48)
-                       len = qc->nsect * 512;
-               else
-                       len = qc->nbytes;
+               len = qc->nbytes;
 
                if (tf->flags & ATA_TFLAG_WRITE)
                        len |= 0x06000000;
                else
                        len |= 0x05000000;
 
-               outl(len, atapi_reg);
+               iowrite32(len, atapi_reg);
        }
 
        /* Activate DMA */
@@ -222,19 +219,19 @@ static void pdc2026x_bmdma_stop(struct ata_queued_cmd *qc)
 
        int sel66 = ap->port_no ? 0x08: 0x02;
        /* The clock bits are in the same register for both channels */
-       unsigned long master = ap->host->ports[0]->ioaddr.bmdma_addr;
-       unsigned long clock = master + 0x11;
-       unsigned long atapi_reg = master + 0x20 + (4 * ap->port_no);
+       void __iomem *master = ap->host->ports[0]->ioaddr.bmdma_addr;
+       void __iomem *clock = master + 0x11;
+       void __iomem *atapi_reg = master + 0x20 + (4 * ap->port_no);
 
        /* Cases the state machine will not complete correctly */
        if (tf->protocol == ATA_PROT_ATAPI_DMA || ( tf->flags & ATA_TFLAG_LBA48)) {
-               outl(0, atapi_reg);
-               outb(inb(clock) & ~sel66, clock);
+               iowrite32(0, atapi_reg);
+               iowrite8(ioread8(clock) & ~sel66, clock);
        }
        /* Check we keep host level locking here */
        /* Flip back to 33Mhz for PIO */
        if (adev->dma_mode >= XFER_UDMA_2)
-               outb(inb(clock) & ~sel66, clock);
+               iowrite8(ioread8(clock) & ~sel66, clock);
 
        ata_bmdma_stop(qc);
 }
@@ -297,14 +294,14 @@ static struct ata_port_operations pdc2024x_port_ops = {
 
        .qc_prep        = ata_qc_prep,
        .qc_issue       = ata_qc_issue_prot,
-       .data_xfer      = ata_pio_data_xfer,
+       .data_xfer      = ata_data_xfer,
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
-       .port_stop      = ata_port_stop,
-       .host_stop      = ata_host_stop
 };
 
 static struct ata_port_operations pdc2026x_port_ops = {
@@ -331,14 +328,14 @@ static struct ata_port_operations pdc2026x_port_ops = {
 
        .qc_prep        = ata_qc_prep,
        .qc_issue       = ata_qc_issue_prot,
-       .data_xfer      = ata_pio_data_xfer,
+       .data_xfer      = ata_data_xfer,
 
        .irq_handler    = ata_interrupt,
        .irq_clear      = ata_bmdma_irq_clear,
+       .irq_on         = ata_irq_on,
+       .irq_ack        = ata_irq_ack,
 
        .port_start     = ata_port_start,
-       .port_stop      = ata_port_stop,
-       .host_stop      = ata_host_stop
 };
 
 static int pdc202xx_init_one(struct pci_dev *dev, const struct pci_device_id *id)