static int ide_dma_check(ide_drive_t *drive)
 {
        ide_hwif_t *hwif = drive->hwif;
-       int vdma = (hwif->host_flags & IDE_HFLAG_VDMA)? 1 : 0;
 
-       if (!vdma && ide_tune_dma(drive))
+       if (ide_tune_dma(drive))
                return 0;
 
        /* TODO: always do PIO fallback */
 
        ide_set_max_pio(drive);
 
-       return vdma ? 0 : -1;
+       return -1;
 }
 
 int ide_id_dma_bug(ide_drive_t *drive)
 
        struct pci_dev *pdev = to_pci_dev(hwif->dev);
        int controller = drive->dn > 1 ? 1 : 0;
 
-       /* FIXME: if DMA = 1 do we need to set the DMA bit here ? */
-
        /* 8bit CAT/CRT - 8bit command timing for channel */
        pci_write_config_byte(pdev, 0x62 + controller, 
                (cs5520_pio_clocks[pio].recovery << 4) |
        cs5520_set_pio_mode(drive, 0);
 }
 
-/*
- *     We wrap the DMA activate to set the vdma flag. This is needed
- *     so that the IDE DMA layer issues PIO not DMA commands over the
- *     DMA channel
- *
- *     ATAPI is harder so disable it for now using IDE_HFLAG_NO_ATAPI_DMA
- */
-
-static void cs5520_dma_host_set(ide_drive_t *drive, int on)
-{
-       drive->vdma = on;
-       ide_dma_host_set(drive, on);
-}
-
 static const struct ide_port_ops cs5520_port_ops = {
        .set_pio_mode           = cs5520_set_pio_mode,
        .set_dma_mode           = cs5520_set_dma_mode,
 };
 
-static const struct ide_dma_ops cs5520_dma_ops = {
-       .dma_host_set           = cs5520_dma_host_set,
-       .dma_setup              = ide_dma_setup,
-       .dma_exec_cmd           = ide_dma_exec_cmd,
-       .dma_start              = ide_dma_start,
-       .dma_end                = __ide_dma_end,
-       .dma_test_irq           = ide_dma_test_irq,
-       .dma_lost_irq           = ide_dma_lost_irq,
-       .dma_timeout            = ide_dma_timeout,
-};
-
-/* FIXME: VDMA is disabled because it caused system hangs */
 #define DECLARE_CS_DEV(name_str)                               \
        {                                                       \
                .name           = name_str,                     \
                .port_ops       = &cs5520_port_ops,             \
-               .dma_ops        = &cs5520_dma_ops,              \
                .host_flags     = IDE_HFLAG_ISA_PORTS |         \
                                  IDE_HFLAG_CS5520 |            \
-                                 IDE_HFLAG_NO_ATAPI_DMA |      \
                                  IDE_HFLAG_ABUSE_SET_DMA_MODE, \
                .pio_mask       = ATA_PIO4,                     \
        }
 
        unsigned nodma          : 1;    /* disallow DMA */
        unsigned remap_0_to_1   : 1;    /* 0=noremap, 1=remap 0->1 (for EZDrive) */
        unsigned blocked        : 1;    /* 1=powermanagment told us not to do anything, so sleep nicely */
-       unsigned vdma           : 1;    /* 1=doing PIO over DMA 0=doing normal DMA */
        unsigned scsi           : 1;    /* 0=default, 1=ide-scsi emulation */
        unsigned sleeping       : 1;    /* 1=sleeping & sleep field valid */
        unsigned post_reset     : 1;
        IDE_HFLAG_NO_IO_32BIT           = (1 << 30),
        /* never unmask IRQs */
        IDE_HFLAG_NO_UNMASK_IRQS        = (1 << 31),
-       /* host uses VDMA (disabled for now) */
-       IDE_HFLAG_VDMA                  = 0,
 };
 
 #ifdef CONFIG_BLK_DEV_OFFBOARD