i.mx6 DMA question!

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

i.mx6 DMA question!

1,937 Views
rclongyunteng
Contributor I

dear programmer:

        I bought a i.MX6Q board, Android version:4.4.2, Kernel version:3.0.35.

        Now, i test the DMA function and i found a question.

        After i finish the DMA init, i start DMA transfer. But i found the function(static void imxdma_issue_pending(struct dma_chan *chan)) is not be finished. It is a null function!

        How can i do it?

        Thank you.

0 Kudos
6 Replies

1,442 Views
igorpadykov
NXP Employee
NXP Employee

Hi yunteng

please check Chapter 3 Smart Direct Memory Access (SDMA) API

attached Linux Manual. Also may be useful to read

Chapter 29 Configuring the SDMA Driver iMX6_Firmware_Guide.pdf

included in baremetal sdk, which may be found on SMP Enable in IMX6 

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

0 Kudos

1,442 Views
rclongyunteng
Contributor I

Hi igor,

        Thank you for your reply.

        I think i configured the SDMA driver correctly.

        I want to make my SDMA work as external memory to internal memory. But i can not found it via the source codes except DMA_DEV_TO_MEM and DMA_MEM_TO_DEV.

        Then i read its datasheet, i found that it may be work through reusing Transfer Between Peripheral and External Memory. 

And it should be programmed in increamented mode.

        So i programed to set PSA register value  11000110 at address (0x0800 + 32 * channel + offset), to work at increamented mode. At the

same time, i set direction = DMA_DEV_TO_MEM.

        But it does not work after i programmed like that. 

        Would you give me some suggestions please? Thank you very much.

        Best Regards

0 Kudos

1,442 Views
igorpadykov
NXP Employee
NXP Employee

for memory to memory one can look at mxc_sdma_memcopy_test.c example

Index of /buildsources/i/imx-test/imx-test-3.0.35-4.0.0 

Best regards
igor

0 Kudos

1,442 Views
rclongyunteng
Contributor I

Hi igor,

        Thank you for your reply very much.

        I have test mxc_sdma_memcopy_test.c example. It is useful for transfer between internal memory and internal memory.

        But I want it work as copy data from EIM to Memory. I think the mode is the same sa transfer between external memory and

internal memory.

        I have mapped eim address like below:
               s_armaddr = ioremap_nocache(WEIM_ARB_BASE_ADDR, SDMA_BUF_SIZE );

       And then i set the source buf like below:

               sg_set_buf(&sg[0], s_armaddr + 0x16, SDMA_BUF_SIZE );

        But the data i read form eim is not what i want.

        Any other suggestions please? Thank you very much.

        Best Regards

0 Kudos

1,442 Views
hsl
Contributor I

Hi,yunteng long:

I am also working on the DMA driver. I am carrying the SSI data into the memory. Can you refer to your code?

There is no idea now.
thank you very much!

0 Kudos

1,442 Views
rclongyunteng
Contributor I

Hi, H SL:

I have deleted the SSI case in audio code.

0 Kudos