]> err.no Git - linux-2.6/blobdiff - drivers/ide/mips/au1xxx-ide.c
ide: convert ide_hwif_t.mmio into flag (v2)
[linux-2.6] / drivers / ide / mips / au1xxx-ide.c
index 32431dcf5d8e51cf181ecd2f78b8cfa24fecc6c0..b431b990426d04bd4a5900520e6b48585659341e 100644 (file)
@@ -181,12 +181,6 @@ static int auide_tune_chipset (ide_drive_t *drive, u8 speed)
 {
        int mem_sttime;
        int mem_stcfg;
-       unsigned long mode;
-
-#ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
-       if (ide_use_dma(drive))
-               mode = ide_dma_speed(drive, 0);
-#endif
 
        mem_sttime = 0;
        mem_stcfg  = au_readl(MEM_STCFG2);
@@ -195,7 +189,7 @@ static int auide_tune_chipset (ide_drive_t *drive, u8 speed)
                auide_tune_drive(drive, speed - XFER_PIO_0);
                return 0;
        }
-             
+
        switch(speed) {
 #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
        case XFER_MW_DMA_2:
@@ -207,7 +201,6 @@ static int auide_tune_chipset (ide_drive_t *drive, u8 speed)
                mem_stcfg &= ~TOECS_MASK;
                mem_stcfg |= SBC_IDE_MDMA2_TCSOE | SBC_IDE_MDMA2_TOECS;
 
-               mode = XFER_MW_DMA_2;
                break;
        case XFER_MW_DMA_1:
                mem_sttime = SBC_IDE_TIMING(MDMA1);
@@ -218,7 +211,6 @@ static int auide_tune_chipset (ide_drive_t *drive, u8 speed)
                mem_stcfg &= ~TOECS_MASK;
                mem_stcfg |= SBC_IDE_MDMA1_TCSOE | SBC_IDE_MDMA1_TOECS;
 
-               mode = XFER_MW_DMA_1;
                break;
        case XFER_MW_DMA_0:
                mem_sttime = SBC_IDE_TIMING(MDMA0);
@@ -229,14 +221,13 @@ static int auide_tune_chipset (ide_drive_t *drive, u8 speed)
                mem_stcfg &= ~TOECS_MASK;
                mem_stcfg |= SBC_IDE_MDMA0_TCSOE | SBC_IDE_MDMA0_TOECS;
 
-               mode = XFER_MW_DMA_0;
                break;
 #endif
        default:
                return 1;
        }
-       
-       if (ide_config_drive_speed(drive, mode))
+
+       if (ide_config_drive_speed(drive, speed))
                return 1;
 
        au_writel(mem_sttime,MEM_STTIME2);
@@ -476,13 +467,13 @@ static int auide_dma_lostirq(ide_drive_t *drive)
        return 0;
 }
 
-static void auide_ddma_tx_callback(int irq, void *param, struct pt_regs *regs)
+static void auide_ddma_tx_callback(int irq, void *param)
 {
        _auide_hwif *ahwif = (_auide_hwif*)param;
        ahwif->drive->waiting_for_dma = 0;
 }
 
-static void auide_ddma_rx_callback(int irq, void *param, struct pt_regs *regs)
+static void auide_ddma_rx_callback(int irq, void *param)
 {
        _auide_hwif *ahwif = (_auide_hwif*)param;
        ahwif->drive->waiting_for_dma = 0;
@@ -674,6 +665,11 @@ static int au_ide_probe(struct device *dev)
                ret = -ENODEV;
                goto out;
        }
+       if (ahwif->irq < 0) {
+               pr_debug("%s %d: no IRQ\n", DRV_NAME, pdev->id);
+               ret = -ENODEV;
+               goto out;
+       }
 
        if (!request_mem_region (res->start, res->end-res->start, pdev->name)) {
                pr_debug("%s: request_mem_region failed\n", DRV_NAME);
@@ -712,7 +708,8 @@ static int au_ide_probe(struct device *dev)
 
        /* hold should be on in all cases */
        hwif->hold                      = 1;
-       hwif->mmio                      = 2;
+
+       hwif->mmio  = 1;
 
        /* If the user has selected DDMA assisted copies,
           then set up a few local I/O function entry points