memset(&cfg, 0, sizeof(cfg));
        cfg.direction = DMA_MEM_TO_DEV;
-       cfg.dst_addr = (dma_addr_t)FLDTFIFO(flctl);
+       cfg.dst_addr = flctl->fifo;
        cfg.src_addr = 0;
        ret = dmaengine_slave_config(flctl->chan_fifo0_tx, &cfg);
        if (ret < 0)
 
        cfg.direction = DMA_DEV_TO_MEM;
        cfg.dst_addr = 0;
-       cfg.src_addr = (dma_addr_t)FLDTFIFO(flctl);
+       cfg.src_addr = flctl->fifo;
        ret = dmaengine_slave_config(flctl->chan_fifo0_rx, &cfg);
        if (ret < 0)
                goto err;
        flctl->reg = devm_ioremap_resource(&pdev->dev, res);
        if (IS_ERR(flctl->reg))
                return PTR_ERR(flctl->reg);
+       flctl->fifo = res->start + 0x24; /* FLDTFIFO */
 
        irq = platform_get_irq(pdev, 0);
        if (irq < 0) {