Why SDMA is not working with I2C on iMX6 DualLite ?

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

Why SDMA is not working with I2C on iMX6 DualLite ?

2,341 Views
kishorbhayani
Contributor II

Hi,

We are using Linux kernel version 4.1 on technexion board. We have developed i2c client driver, that is working fine. Now our requirement is to use SDMA with i2c. We have enabled event 5 and 10 for i2c-1 to initiate DMA transfer. We are working on this since quite a few days but we could not find any proper solution.

We had tried different options for DMA transfer type, like: FIRI, External peripheral, Memory, ESAI, SAI. However, we could not transfer data using I2C-SDMA.

We had also refer few posts from NXP community : I2C with SDMA on i.MX6? , which says that SDMA is not working with i2c in official BSPs. Is this true ?

Can you please help us.

Thanks,

Kishor

Tags (2)
5 Replies

1,290 Views
igorpadykov
NXP Employee
NXP Employee

Hi Kishor

please refer to Chapter 4 Smart Direct Memory Access (SDMA) API

attached Linux Manual for supported by sdma modules. As for other modules developing

new sdma scripts may be required, such effort may require to follow NXP Professional Services

http://www.nxp.com/support/nxp-professional-services:PROFESSIONAL-SERVICE

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

1,290 Views
kishorbhayani
Contributor II

Hi igor,

 

Thanks for the information, I went through this Linux Manual.

 

I have few more queries,

1.   kernel source code has different options to transfer data using SDMA for different peripherals.

      For example, shp_2_mcu_addr, uart_2_mcu_addr, app_2_mcu_addr etc in "imx-sdma.c" .

      Is any of those transfer type supports I2C-SDMA ?

2.    If none of the above options is not available for I2C-SDMA then I need to develop a new script for I2C. I found that

      "imx/sdma/sdma-imx6q.bin" file reference is given in device tree file (i.e. "imx6qdl.dtsi") for SDMA scripts. As per my       understanding all scripts are defined in this file ("sdma-imx6q.bin").

      So, would you be able to provide us reference source code or reference material which I can refer to develop a new       script for I2C-SDMA.

 

Thanks for the support.

Thanks & Regards,

Kishor

0 Kudos

1,290 Views
igorpadykov
NXP Employee
NXP Employee

Hi Kishor

unfortunately current scripts do not support i2c.

As additional reading one can refer to attached sdk examples and pdf document

Chapter 29 Configuring the SDMA Driver (full sdk can be obtained creating service request).

Also may be useful

http://billauer.co.il/blog/2011/10/imx-sdma-howto-memory-map/

Best regards
igor

0 Kudos

1,290 Views
kishorbhayani
Contributor II

Hi i am trying to generate binary file using perl script which I have downloaded from below link,

Freescale i.MX SDMA tutorial (part IV) 
 

But I am getting below error. Can you please help.

——– Command ———–
  ./sdma_asm.pl  copydma.asm

——– Error Logs ———–
Can’t locate mx51_sdma_set.pm in @INC (you may need to install the mx51_sdma_set module) (@INC contains: . /etc/perl /usr/local/lib/perl/5.18.2 /usr/local/share/perl/5.18.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.18 /usr/share/perl/5.18 /usr/local/lib/site_perl) at ./sdma_asm.pl line 15.
BEGIN failed–compilation aborted at ./sdma_asm.pl line 15.

Thanks,

Kishor

0 Kudos

1,290 Views
kishorbhayani
Contributor II

Hi igor,

Thanks for sharing the SDK example and other information.

 

I would like to  know more about building/compiling the script.

Is it possible to use generic ARM tool chain instead of SDK ?

Or if not then can you please share customized tool chain for iMX6 for Linux environment.

As per my understanding the script "mcu_2_app" is a generic script to transfer data between memory location and any peripheral.

Then my doubt is, why this script is not working for I2C ?

 

Regards,

Kishor

0 Kudos