I am configuring the ADV7513 HDMI transmitter for accepting the compressed audio stream over the I2S bus. I realized that I need to do remapping of the I2S input channels to obtain the desired stream on the HDMI output. I need to swap left and right channels inside each frame. According to the ADV7513 programming manual I can do that using the registers 0x0E - 0x11.
For normal I2S mode I remap the channels by setting the above registers to:
0x0E = 0x08 -> map 0 to 1, and 1 to 0
0x0F = 0x1a -> map 2 to 3 and 3 to 2
0x10 = 0x2c -> map 4 to 5 and 5 to 4
0x11 = 0x3e -> map 6 to 7 and 7 to 6
When the original stream results in the following HDMI packet
SP0: ch:0 ch:1
SP1: ch:2 ch:3
SP2: ch:4 ch:5
SP3: ch:6 ch:7
The above mapping works as expected giving me
SP0: ch:1 ch:0
SP1: ch:3 ch:2
SP2: ch:5 ch:4
SP3: ch:7 ch:6
However, when using HBR mode the same register settings have quite different effect on the stream. It seems that instead of swapping the left/right channels the pairs of channels are swapped instead. The resulting HDMI packet looks like this:
SP0: ch:2 ch:3
SP1: ch:0 ch:1
SP2: ch:6 ch:7
SP3: ch:4 ch:5
Is this expected behavior? How can I achieve the same mapping in HBR mode as in Normal I2S mode?
Thanks for your help.