OSDN Git Service

ASoC: rsnd: ssi: 24bit data needs right-aligned settings
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Tue, 17 Nov 2015 08:28:11 +0000 (08:28 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 Aug 2017 08:19:28 +0000 (10:19 +0200)
commit f46a93b820eb3707faf238cd769a004e2504515f upstream.

Data left/right aligned is controlled by PDTA bit on SSICR.
But default is left-aligned. Thus 24bit sound will be very small sound
without this patch.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Thong Ho <thong.ho.px@rvc.renesas.com>
Signed-off-by: Nhan Nguyen <nhan.nguyen.yb@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/soc/sh/rcar/ssi.c

index 1427ec2..c62a294 100644 (file)
@@ -39,6 +39,7 @@
 #define        SCKP            (1 << 13)       /* Serial Bit Clock Polarity */
 #define        SWSP            (1 << 12)       /* Serial WS Polarity */
 #define        SDTA            (1 << 10)       /* Serial Data Alignment */
+#define        PDTA            (1 <<  9)       /* Parallel Data Alignment */
 #define        DEL             (1 <<  8)       /* Serial Data Delay */
 #define        CKDV(v)         (v <<  4)       /* Serial Clock Division Ratio */
 #define        TRMD            (1 <<  1)       /* Transmit/Receive Mode Select */
@@ -286,7 +287,7 @@ static int rsnd_ssi_init(struct rsnd_mod *mod,
        struct snd_pcm_runtime *runtime = rsnd_io_to_runtime(io);
        u32 cr;
 
-       cr = FORCE;
+       cr = FORCE | PDTA;
 
        /*
         * always use 32bit system word for easy clock calculation.