u32 dtran_mode = DTRAN_MODE_BUS_WID_TH | DTRAN_MODE_ADDR_MODE;
        enum dma_data_direction dir;
        int ret;
-       u32 irq_mask;
 
        /* This DMAC cannot handle if sg_len is not 1 */
        WARN_ON(host->sg_len > 1);
        if (data->flags & MMC_DATA_READ) {
                dtran_mode |= DTRAN_MODE_CH_NUM_CH1;
                dir = DMA_FROM_DEVICE;
-               irq_mask = TMIO_STAT_RXRDY;
        } else {
                dtran_mode |= DTRAN_MODE_CH_NUM_CH0;
                dir = DMA_TO_DEVICE;
-               irq_mask = TMIO_STAT_TXRQ;
        }
 
        ret = dma_map_sg(&host->pdev->dev, sg, host->sg_len, dir);
 
        renesas_sdhi_internal_dmac_enable_dma(host, true);
 
-       /* disable PIO irqs to avoid "PIO IRQ in DMA mode!" */
-       tmio_mmc_disable_mmc_irqs(host, irq_mask);
-
        /* set dma parameters */
        renesas_sdhi_internal_dmac_dm_write(host, DM_CM_DTRAN_MODE,
                                            dtran_mode);
 
                return;
        }
 
-       tmio_mmc_disable_mmc_irqs(host, TMIO_STAT_RXRDY);
-
        /* The only sg element can be unaligned, use our bounce buffer then */
        if (!aligned) {
                sg_init_one(&host->bounce_sg, host->bounce_buf, sg->length);
                return;
        }
 
-       tmio_mmc_disable_mmc_irqs(host, TMIO_STAT_TXRQ);
-
        /* The only sg element can be unaligned, use our bounce buffer then */
        if (!aligned) {
                unsigned long flags;
 
         */
        if (host->data && (!cmd->error || cmd->error == -EILSEQ)) {
                if (host->data->flags & MMC_DATA_READ) {
-                       if (host->force_pio || !host->chan_rx)
+                       if (host->force_pio || !host->chan_rx) {
                                tmio_mmc_enable_mmc_irqs(host, TMIO_MASK_READOP);
-                       else
+                       } else {
+                               tmio_mmc_disable_mmc_irqs(host,
+                                                         TMIO_MASK_READOP);
                                tasklet_schedule(&host->dma_issue);
+                       }
                } else {
-                       if (host->force_pio || !host->chan_tx)
+                       if (host->force_pio || !host->chan_tx) {
                                tmio_mmc_enable_mmc_irqs(host, TMIO_MASK_WRITEOP);
-                       else
+                       } else {
+                               tmio_mmc_disable_mmc_irqs(host,
+                                                         TMIO_MASK_WRITEOP);
                                tasklet_schedule(&host->dma_issue);
+                       }
                }
        } else {
                schedule_work(&host->done);
        _host->sdcard_irq_mask = sd_ctrl_read16_and_16_as_32(_host, CTL_IRQ_MASK);
        tmio_mmc_disable_mmc_irqs(_host, TMIO_MASK_ALL);
 
-       /* Unmask the IRQs we want to know about */
-       if (!_host->chan_rx)
-               irq_mask |= TMIO_MASK_READOP;
-       if (!_host->chan_tx)
-               irq_mask |= TMIO_MASK_WRITEOP;
-
        _host->sdcard_irq_mask &= ~irq_mask;
 
        if (_host->native_hotplug)