ASoC: pcm: Refactor soc_pcm_apply_msb for multicodecs
authorBenoit Cousson <bcousson@baylibre.com>
Tue, 1 Jul 2014 07:47:55 +0000 (09:47 +0200)
committerMark Brown <broonie@linaro.org>
Tue, 1 Jul 2014 17:20:07 +0000 (18:20 +0100)
Refactor the function to facilitate the migration to
multiple codecs.

Fix a trailing space in the header as well.

No functional change.

Signed-off-by: Benoit Cousson <bcousson@baylibre.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
sound/soc/soc-pcm.c

index 54d18f22a33e4716b05292f252b53e553d85f8ba..320a904b6b69149a8e54a74384949b0735a667d1 100644 (file)
@@ -7,7 +7,7 @@
  * Copyright (C) 2010 Texas Instruments Inc.
  *
  * Authors: Liam Girdwood <lrg@ti.com>
- *          Mark Brown <broonie@opensource.wolfsonmicro.com>       
+ *          Mark Brown <broonie@opensource.wolfsonmicro.com>
  *
  *  This program is free software; you can redistribute  it and/or modify it
  *  under  the terms of  the GNU General  Public License as published by the
@@ -284,15 +284,10 @@ static int sample_sizes[] = {
        24, 32,
 };
 
-static void soc_pcm_apply_msb(struct snd_pcm_substream *substream,
-                             struct snd_soc_dai *dai)
+static void soc_pcm_set_msb(struct snd_pcm_substream *substream,
+                           struct snd_soc_dai *dai, int bits)
 {
-       int ret, i, bits;
-
-       if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
-               bits = dai->driver->playback.sig_bits;
-       else
-               bits = dai->driver->capture.sig_bits;
+       int ret, i;
 
        if (!bits)
                return;
@@ -310,6 +305,25 @@ static void soc_pcm_apply_msb(struct snd_pcm_substream *substream,
        }
 }
 
+static void soc_pcm_apply_msb(struct snd_pcm_substream *substream)
+{
+       struct snd_soc_pcm_runtime *rtd = substream->private_data;
+       struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+       struct snd_soc_dai *codec_dai = rtd->codec_dai;
+       unsigned int bits = 0, cpu_bits;
+
+       if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
+               bits = codec_dai->driver->playback.sig_bits;
+               cpu_bits = cpu_dai->driver->playback.sig_bits;
+       } else {
+               bits = codec_dai->driver->capture.sig_bits;
+               cpu_bits = cpu_dai->driver->capture.sig_bits;
+       }
+
+       soc_pcm_set_msb(substream, codec_dai, bits);
+       soc_pcm_set_msb(substream, cpu_dai, cpu_bits);
+}
+
 static void soc_pcm_init_runtime_hw(struct snd_pcm_runtime *runtime,
        struct snd_soc_pcm_stream *codec_stream,
        struct snd_soc_pcm_stream *cpu_stream)
@@ -433,8 +447,7 @@ static int soc_pcm_open(struct snd_pcm_substream *substream)
                goto config_err;
        }
 
-       soc_pcm_apply_msb(substream, codec_dai);
-       soc_pcm_apply_msb(substream, cpu_dai);
+       soc_pcm_apply_msb(substream);
 
        /* Symmetry only applies if we've already got an active stream. */
        if (cpu_dai->active) {