instance->base, instance->irq,
                 instance->can_queue, instance->cmd_per_lun,
                 instance->sg_tablesize, instance->this_id,
-                hostdata->flags & FLAG_NO_DMA_FIXUP  ? "NO_DMA_FIXUP "  : "",
+                hostdata->flags & FLAG_DMA_FIXUP     ? "DMA_FIXUP "     : "",
                 hostdata->flags & FLAG_NO_PSEUDO_DMA ? "NO_PSEUDO_DMA " : "",
                 hostdata->flags & FLAG_TOSHIBA_DELAY ? "TOSHIBA_DELAY "  : "",
 #ifdef AUTOPROBE_IRQ
         * before the setting of DMA mode to after transfer of the last byte.
         */
 
-       if (hostdata->flags & FLAG_NO_DMA_FIXUP)
+       if (hostdata->flags & FLAG_DMA_FIXUP)
+               NCR5380_write(MODE_REG, MR_BASE | MR_DMA_MODE | MR_MONITOR_BSY);
+       else
                NCR5380_write(MODE_REG, MR_BASE | MR_DMA_MODE | MR_MONITOR_BSY |
                                        MR_ENABLE_EOP_INTR);
-       else
-               NCR5380_write(MODE_REG, MR_BASE | MR_DMA_MODE | MR_MONITOR_BSY);
 
        dprintk(NDEBUG_DMA, "scsi%d : mode reg = 0x%X\n", instance->host_no, NCR5380_read(MODE_REG));
 
 
        if (p & SR_IO) {
                foo = NCR5380_pread(instance, d,
-                       hostdata->flags & FLAG_NO_DMA_FIXUP ? c : c - 1);
-               if (!foo && !(hostdata->flags & FLAG_NO_DMA_FIXUP)) {
+                       hostdata->flags & FLAG_DMA_FIXUP ? c - 1 : c);
+               if (!foo && (hostdata->flags & FLAG_DMA_FIXUP)) {
                        /*
                         * The workaround was to transfer fewer bytes than we
                         * intended to with the pseudo-DMA read function, wait for
                }
        } else {
                foo = NCR5380_pwrite(instance, d, c);
-               if (!foo && !(hostdata->flags & FLAG_NO_DMA_FIXUP)) {
+               if (!foo && (hostdata->flags & FLAG_DMA_FIXUP)) {
                        /*
                         * Wait for the last byte to be sent.  If REQ is being asserted for
                         * the byte we're interested, we'll ACK it and it will go false.
 
                flags = 0;
                switch (overrides[current_override].board) {
                case BOARD_NCR5380:
-                       flags = FLAG_NO_PSEUDO_DMA;
-                       break;
-               case BOARD_NCR53C400:
-                       flags = FLAG_NO_DMA_FIXUP;
+                       flags = FLAG_NO_PSEUDO_DMA | FLAG_DMA_FIXUP;
                        break;
                case BOARD_NCR53C400A:
-                       flags = FLAG_NO_DMA_FIXUP;
                        ports = ncr_53c400a_ports;
                        magic = ncr_53c400a_magic;
                        break;
                case BOARD_HP_C2502:
-                       flags = FLAG_NO_DMA_FIXUP;
                        ports = ncr_53c400a_ports;
                        magic = hp_c2502_magic;
                        break;
                case BOARD_DTC3181E:
-                       flags = FLAG_NO_DMA_FIXUP;
                        ports = dtc_3181e_ports;
                        magic = ncr_53c400a_magic;
                        break;