These seem interesting - could they be indicating some error in the i2s communication? However, these two registers are not used in code (only referenced during debug code), so it's impossible to tell how to fix it.
From what I can tell from code, the CH0 and CH1 registers seem to be used for input (and this was a playback test only), so probably these differences are irrelevant.
Again, from what I can tell from code, the CH0 and CH1 registers seem to be used for input (and this was a playback test only), so probably these differences are irrelevant.
Some analysis on the Tegra side using a diff between the two directories:
>diff -Nur playback- notworking2/ tegra30- ahub playback- working2/ tegra30- ahub notworking2/ tegra30- ahub 2012-11-07 16:59:10.000000000 +0100 working2/ tegra30- ahub 2012-11-07 17:02:23.000000000 +0100 AHUB_CHANNEL_ CLEAR[1] = 00000000 AHUB_CHANNEL_ CLEAR[2] = 00000000 AHUB_CHANNEL_ CLEAR[3] = 00000000 AHUB_CHANNEL_ STATUS[ 0] = 04070000 AHUB_CHANNEL_ STATUS[ 0] = 05010000 AHUB_CHANNEL_ STATUS[ 1] = 08080000 AHUB_CHANNEL_ STATUS[ 2] = 08080000 AHUB_CHANNEL_ STATUS[ 3] = 08080000
>--- playback-
>+++ playback-
>@@ -6,7 +6,7 @@
> TEGRA30_
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>+TEGRA30_
> TEGRA30_
> TEGRA30_
> TEGRA30_
TEGRA30_ AHUB_CHANNEL_ STATUS seems to vary during playback, maybe it's an indicator of where in the ring buffer you currently are. Probably nothing
>@@ -21,7 +21,7 @@ AHUB_CONFIG_ LINK_CTRL = 08008000 AHUB_MISC_ CTRL = 80000000 AHUB_APBDMA_ LIVE_STATUS = 01fe02fc AHUB_I2S_ LIVE_STATUS = 000033f3 AHUB_I2S_ LIVE_STATUS = 000033fb AHUB_DAM_ LIVE_STATUS[ 0] = 00000083 AHUB_DAM_ LIVE_STATUS[ 1] = 00000083 AHUB_DAM_ LIVE_STATUS[ 2] = 00000083 AHUB_DAM_ INT_MASK = 00939393 AHUB_SPDIF_ INT_MASK = 00008fff AHUB_APBIF_ INT_MASK = 0001ffff AHUB_I2S_ INT_STATUS = 0000000c AHUB_I2S_ INT_STATUS = 00000004 AHUB_DAM_ INT_STATUS = 00808080 AHUB_SPDIF_ INT_STATUS = 00000000 AHUB_APBIF_ INT_STATUS = 00000002
> TEGRA30_
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>+TEGRA30_
> TEGRA30_
> TEGRA30_
> TEGRA30_
>@@ -30,7 +30,7 @@
> TEGRA30_
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>+TEGRA30_
> TEGRA30_
> TEGRA30_
> TEGRA30_
These seem interesting - could they be indicating some error in the i2s communication? However, these two registers are not used in code (only referenced during debug code), so it's impossible to tell how to fix it.
>diff -Nur playback- notworking2/ tegra30- dam.0 playback- working2/ tegra30- dam.0 notworking2/ tegra30- dam.0 2012-11-07 16:59:10.000000000 +0100 working2/ tegra30- dam.0 2012-11-07 17:02:23.000000000 +0100 DAM_CLIP_ THRESHOLD = 007fff00 DAM_AUDIOCIF_ OUT_CTRL = 00001100 DAM_CH0_ CTRL = 12e20300 DAM_CH0_ CONV = 000038af DAM_CH0_ CTRL = 52e00300 DAM_CH0_ CONV = 000034bd DAM_AUDIOCIF_ CH0_CTRL = 00001104 DAM_CH1_ CTRL = 00000010 DAM_CH1_ CONV = 0000e565 DAM_CH1_ CONV = 0000e145 DAM_AUDIOCIF_ CH1_CTRL = 00001104
>--- playback-
>+++ playback-
>@@ -2,9 +2,9 @@
> TEGRA30_DAM_CLIP = 00000000
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>-TEGRA30_
>+TEGRA30_
>+TEGRA30_
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>+TEGRA30_
> TEGRA30_
From what I can tell from code, the CH0 and CH1 registers seem to be used for input (and this was a playback test only), so probably these differences are irrelevant.
>diff -Nur playback- notworking2/ tegra30- dam.1 playback- working2/ tegra30- dam.1 notworking2/ tegra30- dam.1 2012-11-07 16:59:10.000000000 +0100 working2/ tegra30- dam.1 2012-11-07 17:02:23.000000000 +0100
>--- playback-
>+++ playback-
>@@ -1,10 +1,10 @@
>-TEGRA30_DAM_CTRL = 00000060
>+TEGRA30_DAM_CTRL = 00000040
The TEGRA30_DAM_CTRL difference here corresponds to sample rate, I believe - but my guess is that we use dam.0 only, so probably irrelevant too?
> TEGRA30_DAM_CLIP = 00000000 DAM_CLIP_ THRESHOLD = 007fff00 DAM_AUDIOCIF_ OUT_CTRL = 00001100 DAM_CH0_ CTRL = 55cd0800 DAM_CH0_ CONV = 0000c038 DAM_CH0_ CTRL = 53cd0000 DAM_CH0_ CONV = 00008238 DAM_AUDIOCIF_ CH0_CTRL = 00001104 DAM_CH1_ CTRL = 00000010 DAM_CH1_ CONV = 0000102e DAM_CH1_ CONV = 0000f314 DAM_AUDIOCIF_ CH1_CTRL = 00001104 notworking2/ tegra30- dam.2 playback- working2/ tegra30- dam.2 notworking2/ tegra30- dam.2 2012-11-07 16:59:10.000000000 +0100 working2/ tegra30- dam.2 2012-11-07 17:02:23.000000000 +0100 DAM_CLIP_ THRESHOLD = 007fff00 DAM_AUDIOCIF_ OUT_CTRL = 00001100 DAM_CH0_ CTRL = a6c80400 DAM_CH0_ CONV = 0000df57 DAM_CH0_ CTRL = 4c080000 DAM_CH0_ CONV = 0000d845 DAM_AUDIOCIF_ CH0_CTRL = 00001104 DAM_CH1_ CTRL = 00000010 DAM_CH1_ CONV = 0000809a DAM_CH1_ CONV = 00000000 DAM_AUDIOCIF_ CH1_CTRL = 00001104
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>-TEGRA30_
>+TEGRA30_
>+TEGRA30_
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>+TEGRA30_
> TEGRA30_
>diff -Nur playback-
>--- playback-
>+++ playback-
>@@ -2,9 +2,9 @@
> TEGRA30_DAM_CLIP = 00000000
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>-TEGRA30_
>+TEGRA30_
>+TEGRA30_
> TEGRA30_
> TEGRA30_
>-TEGRA30_
>+TEGRA30_
> TEGRA30_
Again, from what I can tell from code, the CH0 and CH1 registers seem to be used for input (and this was a playback test only), so probably these differences are irrelevant.
>diff -Nur playback- notworking2/ tegra30- spdif playback- working2/ tegra30- spdif notworking2/ tegra30- spdif 2012-11-07 16:59:10.000000000 +0100 working2/ tegra30- spdif 2012-11-07 17:02:23.000000000 +0100 SPDIF_STROBE_ CTRL = 007f0000 SPDIF_CIF_ TXD_CTRL = 31013304 SPDIF_CIF_ TXD_CTRL = 00001104 SPDIF_CIF_ RXD_CTRL = 00001100 SPDIF_CIF_ TXU_CTRL = 00001104 SPDIF_CIF_ RXU_CTRL = 00001100
>--- playback-
>+++ playback-
>@@ -1,6 +1,6 @@
> TEGRA30_SPDIF_CTRL = 00000000
> TEGRA30_
>-TEGRA30_
>+TEGRA30_
> TEGRA30_
> TEGRA30_
> TEGRA30_
We're using I2S rather than SPDIF so likely this is also irrelevant?