IMX6Q SDMA issue when porting Android 7.1.1

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IMX6Q SDMA issue when porting Android 7.1.1

1,250 Views
starying
Contributor I

Dear Programmers:

         IMX6Q SDMA does not work, with Kernel 4.1.15, in Android 7.1.1 system. SDMA firmware name is sdma-imx6q.bin, whose version is 3.3.

         Here I want to use SDMA for Audio Subsystem SSI.

        PCM Stream to platform DAI mapping relation:

pcmC0D0c ---> 2028000.ssi

pcmC0D0p  ---> 2028000.ssi
pcmC0D1c  ---> 202c000.ssi
pcmC0D1p ---> 202c000.ssi
pcmC0D2c ---> 2030000.ssi
pcmC0D2p ---> 2030000.ssi
pcmC0D3c ---> 2024000.esai
pcmC0D3p ---> 2024000.esai

      I tested pcmC0D0p  device node with "tinyplay" . Testing command line is "tinyplay source.wav -D 0 -d 0",and result is "Error playing sample".  Something is wrong.

     SDMA interrupt info:

     284:          4          0       GPC   2 Level     sdma

     SDMA DTS Configuration:

sdma: sdma@020ec000 {                                 
 compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma";    
 reg = <0x020ec000 0x4000>;                          
 interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>;             
 clocks = <&clks IMX6QDL_CLK_SDMA>,                  
   <&clks IMX6QDL_CLK_SDMA>;                        
 clock-names = "ipg", "ahb";                         
 #dma-cells = <3>;                                   
 fsl,sdma-ram-script-name = "imx/sdma/sdma-imx6q.bin";

status="okay";
};               

      

SSI DTS Configuration:

ssi1: ssi@02028000 {                     
 #sound-dai-cells = <0>;                
 compatible = "fsl,imx6q-ssi",          
   "fsl,imx51-ssi";                   
 reg = <0x02028000 0x4000>;             
 interrupts = <0 46 IRQ_TYPE_LEVEL_HIGH>;
 clocks = <&clks IMX6QDL_CLK_SSI1_IPG>, 
   <&clks IMX6QDL_CLK_SSI1>;           
 clock-names = "ipg", "baud";           
 dmas = <&sdma 37 22 0>,                
        <&sdma 38 22 0>;                
 dma-names = "rx", "tx";                
 fsl,fifo-depth = <15>;                 
 status = "okay";                   
};         

After a preliminary investigation, I found that during tinyplay testing, DMA call back function void imx_pcm_dma_complete(void *arg) does not occur at all, and SDMA interrupt does not increase.

If anyone knows what is going on, please tell me. Thanks a lot.

Best regards.                                                              

Labels (4)
2 Replies

589 Views
fuchao
Contributor I

I have also encountered the same problem.

Use the tinplay command to play music,and result the error message.

Error Message:

   Error playing sample
   errno=5
   Mesage:I/O error

SDMA has  time out in the snd_pcm_lib_write1 function.

Error log:

   playback write error (DMA or IRQ trouble?)

0 Kudos

589 Views
igorpadykov
NXP Employee
NXP Employee

Hi Star

sdma is used on i.MX6Q Sabre SD by wm8962 with ssi2, pelase look at imx6qdl-sabresd.dtsi, imx6qdl.dtsi :
http://git.freescale.com/git/cgit.cgi/imx/linux-imx.git/tree/arch/arm/boot/dts/imx6qdl-sabresd.dtsi?...
and use test described in sect.28.5.1 Stereo Codec Unit Test attached Linux Manual

Best regards
igor
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------