This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP5910: I2C and DMA

Other Parts Discussed in Thread: OMAP-L138, OMAP5910

I'm appologize in advance if this is wrong forum to ask but I did not found any better forum.

I'm trying to setup DMA to write to I2C RTC clock but no luck with it. The documentation is very bad and I cannot find any good example to start with. Sometimes it works, sometimes it fails and I don't have a good idea how to debug it.

Initially I tested with I2C interrupt mode and the hardware works, now I'm trying to rewrite it using DMA.

The SPRU681A says that setting XDMA_EN bit in I2C_BUF disables interrupt from transmitter (XRDY_IE cleared) but I still receive interrupts. Errata says nothing about it. OK, disabled it, though it's first mark that TI probably not tested it well.

Am I right that the only difference between DMA mode and interrupt mode from the terms of setting up I2C subsystem is setting I2C_BUF register?

From SPRU674 it's very inobvious what value should DMA_CSDP have.

This is how DMA subsystem is set up:

1) GCR sets AUTOGATING_ON and FREE

2) CSDP sets TIPB mode (is it correct?) for destination and EMIFF for source (data lies in DDR memory), DATA_TYPE 16-bit (should I use PACK and 8 bit?)

3) CCR sets CONST mode for destination and POST for source, high priority and sync from I2C TX

4) CICR sets FRAME_IE

5) CSSA_L, CSSA_U is the source address

6) CDSA_L,  CDSA_U is the I2C_DATA address

7) CEN is the size in bytes

8) CFN set to 1

9) CFI and CEI initialized to 0 (should I touch them at all?)