ASoC: Intel: load hw_defaults in hw_params of ssp be
authorVinod Koul <vinod.koul@intel.com>
Wed, 6 May 2015 16:36:42 +0000 (22:06 +0530)
committerMark Brown <broonie@kernel.org>
Wed, 6 May 2015 18:50:22 +0000 (19:50 +0100)
We have the SSP defaults now and we need to load then in hw_params callback
of BE SSP DAI ops.

Signed-off-by: Praveen Diwakar <praveen.diwakar@intel.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/atom/sst-atom-controls.h
sound/soc/intel/atom/sst-mfld-platform-pcm.c

index eea715605130ac34c6eca0507e421f4f63b9caef..da13f6fa7d1c62001bc00b3a4e101216f11a15f9 100644 (file)
@@ -869,4 +869,6 @@ struct sst_enum {
        SOC_DAPM_ENUM(SST_MUX_CTL_NAME(xpname, xinstance), \
                          SST_SSP_MUX_ENUM(xreg, xshift, xtexts))
 
+void sst_fill_ssp_defaults(struct snd_soc_dai *dai);
+
 #endif
index 2fbaf2c75d1709e517a5fb1b1d8012f58865992c..1fb2448e0fed05e0f547ac0c28e28dbe3008688d 100644 (file)
@@ -434,13 +434,22 @@ static int sst_enable_ssp(struct snd_pcm_substream *substream,
 
        if (!dai->active) {
                ret = sst_handle_vb_timer(dai, true);
-               if (ret)
-                       return ret;
-               ret = send_ssp_cmd(dai, dai->name, 1);
+               sst_fill_ssp_defaults(dai);
        }
        return ret;
 }
 
+static int sst_be_hw_params(struct snd_pcm_substream *substream,
+                               struct snd_pcm_hw_params *params,
+                               struct snd_soc_dai *dai)
+{
+       int ret = 0;
+
+       if (dai->active == 1)
+               ret = send_ssp_cmd(dai, dai->name, 1);
+       return ret;
+}
+
 static void sst_disable_ssp(struct snd_pcm_substream *substream,
                        struct snd_soc_dai *dai)
 {
@@ -465,6 +474,7 @@ static struct snd_soc_dai_ops sst_compr_dai_ops = {
 
 static struct snd_soc_dai_ops sst_be_dai_ops = {
        .startup = sst_enable_ssp,
+       .hw_params = sst_be_hw_params,
        .shutdown = sst_disable_ssp,
 };