AnsweredAssumed Answered

DMA conflict in Linux and MQX in SPI0

Question asked by carlo val gocela on Apr 23, 2015
Latest reply on Jul 28, 2015 by Timesys Support

I encountered an issue with DMA running in SPI0.
Currently in  MQX, I'm running an application that gathers data via SPI0 DMA.

Data gathering should not be interrupted. Its function is gather data all the time.

 

 

During the data gathering i got an error see below:


IO_IOCTL_SPI_READ_WRITE ... drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (49)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (48)
drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (48)

 

 

I already disabled the DMA for SPI0 in Linux  by disabling CONFIG_SPI_MVF_DSPI_EDMA.

Still the issue occurred.

 

I added some code to display the address, irq,dev_id and intr when the issue occurs.

 

Here is the result:

----------------------------------------------------------------------------------------------------------------------

drivers/dma/mvf_edma.c:mcf_

drivers/dma/mvf_edma.c:mcf_edma_isr: Invalid channel 49. addr=0xf20b8000, irq=42, dev_id=8a000000, intr=0x00020000

 

drivers/dma/mvf_edma.c:mcf_edma_isr:  No handler for DMA channel (31)

drivers/dma/mvf_edma.c:mcf_edma_isr: Invalid channel 31. addr=0xf20b8000, irq=42, dev_id=8a000000, intr=0x00000000

-------------------------------------------------------------------------------------------------------------------------

 

also i tried to display the interrupts trying to get who are using the irq 42

 

 

cat /proc/interrupts

 

           CPU0

36:          0       GIC  mvf_sema4_handler

40:          0       GIC  mcf_edma

41:          0       GIC  mcf_edma

42:          0       GIC  mcf_edma

43:          0       GIC  mcf_edma

Outcomes