On Mon, Mar 04, 2013 at 15:56:47, Yegor Yefremov wrote: [...]
I found this passage in 22.3.8.3.2 of the "AM335x ARM® Cortex™-A8 Microprocessors (MPUs) Technical Reference Manual" Literature Number: SPRUH73G
The DIT transmitter only works in the following configuration: • In transmit frame control register (AFSXCTL): – Internally-generated transmit frame sync, FSXM = 1. – Rising-edge frame sync, FSXP = 0. – Bit-width frame sync, FXWID = 0. – 384-slot TDM, XMOD = 1 1000 0000b. • In transmit clock control register (ACLKXCTL), ASYNC = 1. • In transmit bitstream format register (XFMT), XSSZ = 1111 (32-bit slot size).
So slot size does matter for DIT mode. On the same page you have frame format description. It says that two following rotation settings are valid for DIT XROT = 010 and XROT = 000, but the only one working with right-aligned data is 0x6 i.e. 24-bit rotation. This value was used in the davinci-mcasp.c driver source.
Ok. Since you seem to have a h/w handy, if you have time to spare, could you please try out a config which sets the slot size to 16 instead of 32 and let us know whether it works? Depending on the test result we'll know for sure whether the original code ever worked.
Regards, Vaibhav