]> err.no Git - linux-2.6/blobdiff - drivers/ata/pata_scc.c
sata_via: kill SATA_PATA_SHARING register handling
[linux-2.6] / drivers / ata / pata_scc.c
index 2d048ef25a5a11babbef2c2ef9f705adaf14e50d..941b72bec836ed9db1c09ea97e72ca3535583e3b 100644 (file)
@@ -612,7 +612,7 @@ static int scc_std_softreset (struct ata_port *ap, unsigned int *classes,
 
        DPRINTK("ENTER\n");
 
-       if (ata_port_offline(ap)) {
+       if (ata_link_offline(&ap->link)) {
                classes[0] = ATA_DEV_NONE;
                goto out;
        }
@@ -636,9 +636,11 @@ static int scc_std_softreset (struct ata_port *ap, unsigned int *classes,
        }
 
        /* determine by signature whether we have ATA or ATAPI devices */
-       classes[0] = ata_dev_try_classify(ap, 0, &err);
+       classes[0] = ata_dev_try_classify(&ap->link.device[0],
+                                         devmask & (1 << 0), &err);
        if (slave_possible && err != 0x81)
-               classes[1] = ata_dev_try_classify(ap, 1, &err);
+               classes[1] = ata_dev_try_classify(&ap->link.device[1],
+                                                 devmask & (1 << 1), &err);
 
  out:
        DPRINTK("EXIT, classes[0]=%u [1]=%u\n", classes[0], classes[1]);
@@ -785,7 +787,7 @@ static u8 scc_bmdma_status (struct ata_port *ap)
 static void scc_data_xfer (struct ata_device *adev, unsigned char *buf,
                           unsigned int buflen, int write_data)
 {
-       struct ata_port *ap = adev->ap;
+       struct ata_port *ap = adev->link->ap;
        unsigned int words = buflen >> 1;
        unsigned int i;
        u16 *buf16 = (u16 *) buf;
@@ -838,38 +840,6 @@ static u8 scc_irq_on (struct ata_port *ap)
        return tmp;
 }
 
-/**
- *     scc_irq_ack - Acknowledge a device interrupt.
- *     @ap: Port on which interrupts are enabled.
- *
- *     Note: Original code is ata_irq_ack().
- */
-
-static u8 scc_irq_ack (struct ata_port *ap, unsigned int chk_drq)
-{
-       unsigned int bits = chk_drq ? ATA_BUSY | ATA_DRQ : ATA_BUSY;
-       u8 host_stat, post_stat, status;
-
-       status = ata_busy_wait(ap, bits, 1000);
-       if (status & bits)
-               if (ata_msg_err(ap))
-                       printk(KERN_ERR "abnormal status 0x%X\n", status);
-
-       /* get controller status; clear intr, err bits */
-       host_stat = in_be32(ap->ioaddr.bmdma_addr + SCC_DMA_STATUS);
-       out_be32(ap->ioaddr.bmdma_addr + SCC_DMA_STATUS,
-                host_stat | ATA_DMA_INTR | ATA_DMA_ERR);
-
-       post_stat = in_be32(ap->ioaddr.bmdma_addr + SCC_DMA_STATUS);
-
-       if (ata_msg_intr(ap))
-               printk(KERN_INFO "%s: irq ack: host_stat 0x%X, new host_stat 0x%X, drv_stat 0x%X\n",
-                      __FUNCTION__,
-                      host_stat, post_stat, status);
-
-       return status;
-}
-
 /**
  *     scc_bmdma_freeze - Freeze BMDMA controller port
  *     @ap: port to freeze
@@ -1020,7 +990,6 @@ static struct scsi_host_template scc_sht = {
 };
 
 static const struct ata_port_operations scc_pata_ops = {
-       .port_disable           = ata_port_disable,
        .set_piomode            = scc_set_piomode,
        .set_dmamode            = scc_set_dmamode,
        .mode_filter            = scc_mode_filter,
@@ -1047,7 +1016,6 @@ static const struct ata_port_operations scc_pata_ops = {
 
        .irq_clear              = scc_bmdma_irq_clear,
        .irq_on                 = scc_irq_on,
-       .irq_ack                = scc_irq_ack,
 
        .port_start             = scc_port_start,
        .port_stop              = scc_port_stop,
@@ -1193,6 +1161,9 @@ static int scc_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
                return rc;
        host->iomap = pcim_iomap_table(pdev);
 
+       ata_port_pbar_desc(host->ports[0], SCC_CTRL_BAR, -1, "ctrl");
+       ata_port_pbar_desc(host->ports[0], SCC_BMID_BAR, -1, "bmid");
+
        rc = scc_host_init(host);
        if (rc)
                return rc;