]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/ide/au1xxx-ide.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-next-2.6
[net-next-2.6.git] / drivers / ide / au1xxx-ide.c
index 87cef0c440ad32f625fe7bd55e368b8a427afcf4..b26c23416fa775c715eaede8f5cca4b551440b4f 100644 (file)
@@ -56,8 +56,8 @@ static inline void auide_insw(unsigned long port, void *addr, u32 count)
        chan_tab_t *ctp;
        au1x_ddma_desc_t *dp;
 
-       if(!put_dest_flags(ahwif->rx_chan, (void*)addr, count << 1, 
-                          DDMA_FLAGS_NOIE)) {
+       if (!au1xxx_dbdma_put_dest(ahwif->rx_chan, virt_to_phys(addr),
+                                  count << 1, DDMA_FLAGS_NOIE)) {
                printk(KERN_ERR "%s failed %d\n", __func__, __LINE__);
                return;
        }
@@ -74,8 +74,8 @@ static inline void auide_outsw(unsigned long port, void *addr, u32 count)
        chan_tab_t *ctp;
        au1x_ddma_desc_t *dp;
 
-       if(!put_source_flags(ahwif->tx_chan, (void*)addr,
-                            count << 1, DDMA_FLAGS_NOIE)) {
+       if (!au1xxx_dbdma_put_source(ahwif->tx_chan, virt_to_phys(addr),
+                                    count << 1, DDMA_FLAGS_NOIE)) {
                printk(KERN_ERR "%s failed %d\n", __func__, __LINE__);
                return;
        }
@@ -99,12 +99,11 @@ static void au1xxx_output_data(ide_drive_t *drive, struct ide_cmd *cmd,
 }
 #endif
 
-static void au1xxx_set_pio_mode(ide_drive_t *drive, const u8 pio)
+static void au1xxx_set_pio_mode(ide_hwif_t *hwif, ide_drive_t *drive)
 {
        int mem_sttime = 0, mem_stcfg = au_readl(MEM_STCFG2);
 
-       /* set pio mode! */
-       switch(pio) {
+       switch (drive->pio_mode - XFER_PIO_0) {
        case 0:
                mem_sttime = SBC_IDE_TIMING(PIO0);
 
@@ -161,11 +160,11 @@ static void au1xxx_set_pio_mode(ide_drive_t *drive, const u8 pio)
        au_writel(mem_stcfg,MEM_STCFG2);
 }
 
-static void auide_set_dma_mode(ide_drive_t *drive, const u8 speed)
+static void auide_set_dma_mode(ide_hwif_t *hwif, ide_drive_t *drive)
 {
        int mem_sttime = 0, mem_stcfg = au_readl(MEM_STCFG2);
 
-       switch(speed) {
+       switch (drive->dma_mode) {
 #ifdef CONFIG_BLK_DEV_IDE_AU1XXX_MDMA2_DBDMA
        case XFER_MW_DMA_2:
                mem_sttime = SBC_IDE_TIMING(MDMA2);
@@ -246,17 +245,14 @@ static int auide_build_dmatable(ide_drive_t *drive, struct ide_cmd *cmd)
                                flags = DDMA_FLAGS_NOIE;
 
                        if (iswrite) {
-                               if(!put_source_flags(ahwif->tx_chan, 
-                                                    (void*) sg_virt(sg),
-                                                    tc, flags)) { 
+                               if (!au1xxx_dbdma_put_source(ahwif->tx_chan,
+                                       sg_phys(sg), tc, flags)) {
                                        printk(KERN_ERR "%s failed %d\n", 
                                               __func__, __LINE__);
                                }
-                       } else 
-                       {
-                               if(!put_dest_flags(ahwif->rx_chan, 
-                                                  (void*) sg_virt(sg),
-                                                  tc, flags)) { 
+                       } else  {
+                               if (!au1xxx_dbdma_put_dest(ahwif->rx_chan,
+                                       sg_phys(sg), tc, flags)) {
                                        printk(KERN_ERR "%s failed %d\n", 
                                               __func__, __LINE__);
                                }
@@ -300,8 +296,8 @@ static int auide_dma_test_irq(ide_drive_t *drive)
         */
        drive->waiting_for_dma++;
        if (drive->waiting_for_dma >= DMA_WAIT_TIMEOUT) {
-               printk(KERN_WARNING "%s: timeout waiting for ddma to \
-                                     complete\n", drive->name);
+               printk(KERN_WARNING "%s: timeout waiting for ddma to complete\n",
+                      drive->name);
                return 1;
        }
        udelay(10);