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?)