rk30:modify dma_free_coherent operation for spim
authorlw <lw@rock-chips.com>
Wed, 29 Feb 2012 09:36:39 +0000 (17:36 +0800)
committerlw <lw@rock-chips.com>
Wed, 29 Feb 2012 09:36:39 +0000 (17:36 +0800)
drivers/spi/rk29_spim.c

index 4086470f73a7c5858609781ad920308cda9fb52e..606c53fd4c264c4c3030a93316380656ecd01eae 100755 (executable)
@@ -1988,8 +1988,6 @@ err_diable_hw:
        free_irq(dws->irq, dws);\r
 err_free_master:\r
        spi_master_put(master);\r
-       dma_free_coherent(&pdev->dev, DMA_BUFFER_SIZE, dws->buffer_tx_dma, dws->tx_dma);        \r
-       dma_free_coherent(&pdev->dev, DMA_BUFFER_SIZE, dws->buffer_rx_dma, dws->rx_dma);\r
        iounmap(dws->regs);\r
 exit:\r
        return ret;\r
@@ -2006,8 +2004,9 @@ static void __exit rk29xx_spim_remove(struct platform_device *pdev)
        rk29xx_spim_cpufreq_deregister(dws);\r
        mrst_spi_debugfs_remove(dws);\r
 \r
-       \r
-       dma_free_coherent(&pdev->dev, DMA_BUFFER_SIZE, dws->buffer_tx_dma, dws->tx_dma);        \r
+       if(dws->buffer_tx_dma)\r
+       dma_free_coherent(&pdev->dev, DMA_BUFFER_SIZE, dws->buffer_tx_dma, dws->tx_dma);\r
+       if(dws->buffer_rx_dma)\r
        dma_free_coherent(&pdev->dev, DMA_BUFFER_SIZE, dws->buffer_rx_dma, dws->rx_dma);\r
        release_dma(dws);\r
 \r