The dma_map and dma_unmap should have same parameter
passed otherwise we get the below warn.
ks8851 spi1.0: DMA-API: device driver tries to free DMA memory it has not allocated [device address=0x000000009f22]
[ 2.066925] Modules linked in:
[ 2.070312]
[ 2.071929] [<
c001c250>] (unwind_backtrace+0x0/0x130) from [<
c0043d84>] (warn_slowpath_common+0x4c/0x64)
[ 2.081909] [<
c0043d84>] (warn_slowpath_common+0x4c/0x64) from [<
c0043e30>] (warn_slowpath_fmt+0x30/0x40)
[ 2.091949] [<
c0043e30>] (warn_slowpath_fmt+0x30/0x40) from [<
c0293824>] (check_unmap+0x6d0/0x7b0)
[ 2.101348] [<
c0293824>] (check_unmap+0x6d0/0x7b0) from [<
c02939cc>] (debug_dma_unmap_page+0x64/0x70)
[ 2.111053] [<
c02939cc>] (debug_dma_unmap_page+0x64/0x70) from [<
c03519a4>] (omap2_mcspi_txrx_dma+0x2d8/0x4fc)
[ 2.121582] [<
c03519a4>] (omap2_mcspi_txrx_dma+0x2d8/0x4fc) from [<
c03524d8>] (omap2_mcspi_work.clone.4+0xf0/0x290)
[ 2.132537] [<
c03524d8>] (omap2_mcspi_work.clone.4+0xf0/0x290) from [<
c0352900>] (omap2_mcspi_transfer_one_message+0x288/0x438)
[ 2.144592] [<
c0352900>] (omap2_mcspi_transfer_one_message+0x288/0x438) from [<
c03503bc>] (spi_pump_messages+0x100/0x160)
[ 2.156127] [<
c03503bc>] (spi_pump_messages+0x100/0x160) from [<
c006635c>] (kthread_worker_fn+0xac/0x180)
[ 2.166168] [<
c006635c>] (kthread_worker_fn+0xac/0x180) from [<
c0066578>] (kthread+0x90/0x9c)
[ 2.175140] [<
c0066578>] (kthread+0x90/0x9c) from [<
c00157fc>] (kernel_thread_exit+0x0/0x8)
[ 2.183898] ---[ end trace
d1830ce6e44292f2 ]---
Fix the warn by changing the unmap parameter.
Reported-by: Russell King - ARM Linux <linux@arm.linux.org.uk>
Signed-off-by: Shubhrajyoti D <shubhrajyoti@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
if (tx != NULL) {
wait_for_completion(&mcspi_dma->dma_tx_completion);
- dma_unmap_single(&spi->dev, xfer->tx_dma, count, DMA_TO_DEVICE);
+ dma_unmap_single(mcspi->dev, xfer->tx_dma, count,
+ DMA_TO_DEVICE);
/* for TX_ONLY mode, be sure all words have shifted out */
if (rx == NULL) {
if (rx != NULL) {
wait_for_completion(&mcspi_dma->dma_rx_completion);
- dma_unmap_single(&spi->dev, xfer->rx_dma, count, DMA_FROM_DEVICE);
+ dma_unmap_single(mcspi->dev, xfer->rx_dma, count,
+ DMA_FROM_DEVICE);
omap2_mcspi_set_enable(spi, 0);
if (l & OMAP2_MCSPI_CHCONF_TURBO) {