ASoC: Intel: Skylake: Fix to update bit depth for module params
authorJeeja KP <jeeja.kp@intel.com>
Mon, 23 Nov 2015 16:56:25 +0000 (22:26 +0530)
committerMark Brown <broonie@kernel.org>
Wed, 25 Nov 2015 17:55:41 +0000 (17:55 +0000)
Module hw param fixup will change the valid bit depth based
on the fixup flag. If valid bit depth changes, need to set
the bit depth according to valid bit depth. This patch
fixes this issue of updating bit depth correctly.

Signed-off-by: Jeeja KP <jeeja.kp@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/skylake/skl-topology.c

index 0937ea2129c10b89cd69681c6784f4ff1917fed4..698c4aa03933ba91294964ee52445c007ad2783e 100644 (file)
@@ -147,8 +147,24 @@ static void skl_tplg_update_params(struct skl_module_fmt *fmt,
                fmt->s_freq = params->s_freq;
        if (fixup & SKL_CH_FIXUP_MASK)
                fmt->channels = params->ch;
-       if (fixup & SKL_FMT_FIXUP_MASK)
-               fmt->valid_bit_depth = params->s_fmt;
+       if (fixup & SKL_FMT_FIXUP_MASK) {
+               fmt->valid_bit_depth = skl_get_bit_depth(params->s_fmt);
+
+               /*
+                * 16 bit is 16 bit container whereas 24 bit is in 32 bit
+                * container so update bit depth accordingly
+                */
+               switch (fmt->valid_bit_depth) {
+               case SKL_DEPTH_16BIT:
+                       fmt->bit_depth = fmt->valid_bit_depth;
+                       break;
+
+               default:
+                       fmt->bit_depth = SKL_DEPTH_32BIT;
+                       break;
+               }
+       }
+
 }
 
 /*