On 14/04/14 14:50, jorge.araujo.vent...@gmail.com wrote: > I am using spi-omap2-mcspi to drive a network card based on enc28j60 and > everything works perfect if I define > DMA_MIN_BYTES = 0 (force to use DMA only) or DMA_MIN_BYTES = 99999 > (force to use PIO only). > But if I use the original value of 160, the board can send out 10 to 20 > pings approximately > and if any time the drive switch from PIO to DMA what will be decided by > the size of data, > some workqueue tasks hung and the card stops. > > I am using the kernel 3.13.6 patched to beaglebone and did test also > with the mainline 3.14.0 and the problem is exactly the same. > > I am running with "lockdep" and "detect hung tasks" and I can see that > four tasks are stopped, > three from enc28j60 and one from spi-omap2-mcspi. > > The mcspi is stopped in spi-omap2.mcspi.c:480 to wait the completion of > omap2_mcspi_rx_callback > that it never happens. > > |468 ||if| |(tx) { | > |469 tx->callback = omap2_mcspi_rx_callback; | > |470 tx->callback_param = spi; | > |471 dmaengine_submit(tx); | > |472 } ||else| |{ | > |473 ||/* FIXME: fall back to PIO? */||| > |474 } | > |475 } | > |476 | > |477 dma_async_issue_pending(mcspi_dma->dma_rx); | > |478 omap2_mcspi_set_dma_req(spi, 1, 1); | > |479 | > |480 wait_for_completion(&mcspi_dma->dma_rx_completion); | > |481 dma_unmap_single(mcspi->dev, xfer->rx_dma, count, | > |482 DMA_FROM_DEVICE);| > > > Any help/suggestion is welcome. Need more information, please let me > know, I have more details. > > Thank you. >
You might want to also try sending this to the linux-omap list as it's a bug in mainline too. I know TI are shouting from the rooftops about using the mainline kernel at the moment so you might be able to leverage that to get some help. Good luck! Cheers, -- Jack Mitchell (j...@embed.me.uk) Embedded Systems Engineer Cambridgeshire, UK http://www.embed.me.uk -- -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to beagleboard+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.