ASoC: wm8962: Support mono playback and record
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 8 Feb 2012 19:02:24 +0000 (19:02 +0000)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Wed, 8 Feb 2012 19:49:54 +0000 (19:49 +0000)
Make sure we generate enough BCLKs for I2S style modes by always having
a minimum of two channels worth of clocks for the BCLK.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/wm8962.c

index 25b6baed3a29003459329f8e0c68902c555d1b3f..5e3795d7cdb89a7a0e1c90f102b64d84662a8219 100644 (file)
@@ -2634,6 +2634,9 @@ static int wm8962_hw_params(struct snd_pcm_substream *substream,
        int adctl3 = 0;
 
        wm8962->bclk = snd_soc_params_to_bclk(params);
+       if (params_channels(params) == 1)
+               wm8962->bclk *= 2;
+
        wm8962->lrclk = params_rate(params);
 
        for (i = 0; i < ARRAY_SIZE(sr_vals); i++) {
@@ -3008,14 +3011,14 @@ static struct snd_soc_dai_driver wm8962_dai = {
        .name = "wm8962",
        .playback = {
                .stream_name = "Playback",
-               .channels_min = 2,
+               .channels_min = 1,
                .channels_max = 2,
                .rates = WM8962_RATES,
                .formats = WM8962_FORMATS,
        },
        .capture = {
                .stream_name = "Capture",
-               .channels_min = 2,
+               .channels_min = 1,
                .channels_max = 2,
                .rates = WM8962_RATES,
                .formats = WM8962_FORMATS,