ASoC: rsnd: add detail explanation of L/R conversion timing
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Fri, 9 Jun 2017 00:34:09 +0000 (00:34 +0000)
committerMark Brown <broonie@kernel.org>
Tue, 13 Jun 2017 20:38:42 +0000 (21:38 +0100)
Renesas Sound device *Hardware* L/R and Linux *Software* L/R are
inverted. Because of this background, it needs to convert L/R.
Then, DVC needs *Hardware* L/R, and Linux needs *Software* L/R.
Because Playback/Capture needs different timing, and there is no
explanation about it on source code / git log, this patch adds it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rcar/core.c

index 7c68f9d4a0ed125218411bcdd0b9fffbe2d36e50..1bf261d677b7818f32140426f2b88a14c23430a0 100644 (file)
@@ -310,6 +310,24 @@ u32 rsnd_get_dalign(struct rsnd_mod *mod, struct rsnd_dai_stream *io)
        u32 val = 0x76543210;
        u32 mask = ~0;
 
+       /*
+        * *Hardware* L/R and *Software* L/R are inverted.
+        * We need to care about inversion timing to control
+        * Playback/Capture correctly.
+        * The point is [DVC] needs *Hardware* L/R, [MEM] needs *Software* L/R
+        *
+        * sL/R : software L/R
+        * hL/R : hardware L/R
+        * (*)  : conversion timing
+        *
+        * Playback
+        *           sL/R (*) hL/R     hL/R     hL/R      hL/R     hL/R
+        *      [MEM] -> [SRC] -> [DVC] -> [CMD] -> [SSIU] -> [SSI] -> codec
+        *
+        * Capture
+        *           hL/R     hL/R      hL/R     hL/R     hL/R (*) sL/R
+        *      codec -> [SSI] -> [SSIU] -> [SRC] -> [DVC] -> [CMD] -> [MEM]
+        */
        if (rsnd_io_is_play(io)) {
                struct rsnd_mod *src = rsnd_io_to_mod_src(io);