]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/ide/pci/sgiioc4.c
video: remove unused sh_mobile_lcdc platform data
[linux-2.6-omap-h63xx.git] / drivers / ide / pci / sgiioc4.c
index 681306c9d79be56e8fa1c44decf2bc2a29b950c4..dd634541ce361a62a4789484cdf89fe6a85584f3 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2003-2006 Silicon Graphics, Inc.  All Rights Reserved.
+ * Copyright (C) 2008 MontaVista Software, Inc.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of version 2 of the GNU General Public License
@@ -22,7 +23,6 @@
 #include <linux/types.h>
 #include <linux/pci.h>
 #include <linux/delay.h>
-#include <linux/hdreg.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
 #include <linux/ioport.h>
@@ -151,7 +151,7 @@ sgiioc4_clearirq(ide_drive_t * drive)
                int count = 0;
 
                stat = sgiioc4_read_status(hwif);
-               while ((stat & 0x80) && (count++ < 100)) {
+               while ((stat & ATA_BUSY) && (count++ < 100)) {
                        udelay(1);
                        stat = sgiioc4_read_status(hwif);
                }
@@ -311,7 +311,7 @@ static u8 sgiioc4_read_status(ide_hwif_t *hwif)
        u8 reg = (u8) readb((void __iomem *) port);
 
        if ((port & 0xFFF) == 0x11C) {  /* Status register of IOC4 */
-               if (reg & 0x51) {       /* Not busy...check for interrupt */
+               if (!(reg & ATA_BUSY)) { /* Not busy... check for interrupt */
                        unsigned long other_ir = port - 0x110;
                        unsigned int intr_reg = (u32) readl((void __iomem *) other_ir);
 
@@ -339,35 +339,31 @@ ide_dma_sgiioc4(ide_hwif_t *hwif, const struct ide_port_info *d)
        if (dma_base == 0)
                return -1;
 
-       printk(KERN_INFO "%s: BM-DMA at 0x%04lx-0x%04lx\n", hwif->name,
-              dma_base, dma_base + num_ports - 1);
+       printk(KERN_INFO "    %s: MMIO-DMA\n", hwif->name);
 
-       if (!request_mem_region(dma_base, num_ports, hwif->name)) {
-               printk(KERN_ERR
-                      "%s(%s) -- ERROR, Addresses 0x%p to 0x%p "
-                      "ALREADY in use\n",
-                      __func__, hwif->name, (void *) dma_base,
-                      (void *) dma_base + num_ports - 1);
+       if (request_mem_region(dma_base, num_ports, hwif->name) == NULL) {
+               printk(KERN_ERR "%s(%s) -- ERROR: addresses 0x%08lx to 0x%08lx "
+                      "already in use\n", __func__, hwif->name,
+                      dma_base, dma_base + num_ports - 1);
                return -1;
        }
 
        virt_dma_base = ioremap(dma_base, num_ports);
        if (virt_dma_base == NULL) {
-               printk(KERN_ERR
-                      "%s(%s) -- ERROR, Unable to map addresses 0x%lx to 0x%lx\n",
-                      __func__, hwif->name, dma_base, dma_base + num_ports - 1);
+               printk(KERN_ERR "%s(%s) -- ERROR: unable to map addresses "
+                      "0x%lx to 0x%lx\n", __func__, hwif->name,
+                      dma_base, dma_base + num_ports - 1);
                goto dma_remap_failure;
        }
        hwif->dma_base = (unsigned long) virt_dma_base;
 
-       hwif->dmatable_cpu = pci_alloc_consistent(dev,
-                                         IOC4_PRD_ENTRIES * IOC4_PRD_BYTES,
-                                         &hwif->dmatable_dma);
+       hwif->sg_max_nents = IOC4_PRD_ENTRIES;
 
-       if (!hwif->dmatable_cpu)
-               goto dma_pci_alloc_failure;
+       hwif->prd_max_nents = IOC4_PRD_ENTRIES;
+       hwif->prd_ent_size = IOC4_PRD_BYTES;
 
-       hwif->sg_max_nents = IOC4_PRD_ENTRIES;
+       if (ide_allocate_dma_engine(hwif))
+               goto dma_pci_alloc_failure;
 
        pad = pci_alloc_consistent(dev, IOC4_IDE_CACHELINE_SIZE,
                                   (dma_addr_t *)&hwif->extra_base);
@@ -376,13 +372,11 @@ ide_dma_sgiioc4(ide_hwif_t *hwif, const struct ide_port_info *d)
                return 0;
        }
 
-       pci_free_consistent(dev, IOC4_PRD_ENTRIES * IOC4_PRD_BYTES,
-                           hwif->dmatable_cpu, hwif->dmatable_dma);
-       printk(KERN_INFO
-              "%s() -- Error! Unable to allocate DMA Maps for drive %s\n",
+       ide_release_dma_engine(hwif);
+
+       printk(KERN_ERR "%s(%s) -- ERROR: Unable to allocate DMA maps\n",
               __func__, hwif->name);
-       printk(KERN_INFO
-              "Changing from DMA to PIO mode for Drive %s\n", hwif->name);
+       printk(KERN_INFO "%s: changing from DMA to PIO mode", hwif->name);
 
 dma_pci_alloc_failure:
        iounmap(virt_dma_base);
@@ -618,14 +612,12 @@ sgiioc4_ide_setup_pci_device(struct pci_dev *dev)
        irqport = (unsigned long) virt_base + IOC4_INTR_OFFSET;
 
        cmd_phys_base = bar0 + IOC4_CMD_OFFSET;
-       if (!request_mem_region(cmd_phys_base, IOC4_CMD_CTL_BLK_SIZE,
-           DRV_NAME)) {
-               printk(KERN_ERR
-                       "%s %s: -- ERROR, Addresses "
-                       "0x%p to 0x%p ALREADY in use\n",
-                      DRV_NAME, pci_name(dev), (void *)cmd_phys_base,
-                      (void *) cmd_phys_base + IOC4_CMD_CTL_BLK_SIZE);
-               return -ENOMEM;
+       if (request_mem_region(cmd_phys_base, IOC4_CMD_CTL_BLK_SIZE,
+                              DRV_NAME) == NULL) {
+               printk(KERN_ERR "%s %s -- ERROR: addresses 0x%08lx to 0x%08lx "
+                      "already in use\n", DRV_NAME, pci_name(dev),
+                      cmd_phys_base, cmd_phys_base + IOC4_CMD_CTL_BLK_SIZE);
+               return -EBUSY;
        }
 
        /* Initialize the IO registers */