return -ENOMEM;
        }
 
-       dma->rx_addr = dma_map_single(dma->rx_chan->device->dev, dma->rx_buf,
+       dma->rx_addr = dma_map_single(p->port.dev, dma->rx_buf,
                                dma->rx_size, DMA_FROM_DEVICE);
 
        spin_lock_irqsave(&p->port.lock, flags);
 
        /* TX buffer */
-       dma->tx_addr = dma_map_single(dma->tx_chan->device->dev,
-                               p->port.state->xmit.buf,
+       dma->tx_addr = dma_map_single(p->port.dev, p->port.state->xmit.buf,
                                UART_XMIT_SIZE, DMA_TO_DEVICE);
 
        spin_unlock_irqrestore(&p->port.lock, flags);
 
        if (dma->rx_chan) {
                dmaengine_terminate_all(dma->rx_chan);
-               dma_unmap_single(dma->rx_chan->device->dev, dma->rx_addr,
+               dma_unmap_single(p->port.dev, dma->rx_addr,
                                dma->rx_size, DMA_FROM_DEVICE);
                kfree(dma->rx_buf);
                dma_release_channel(dma->rx_chan);
 
        if (dma->tx_chan) {
                dmaengine_terminate_all(dma->tx_chan);
-               dma_unmap_single(dma->tx_chan->device->dev, dma->tx_addr,
+               dma_unmap_single(p->port.dev, dma->tx_addr,
                                UART_XMIT_SIZE, DMA_TO_DEVICE);
                dma_release_channel(dma->tx_chan);
                dma->tx_chan = NULL;