summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorEric Miao <eric.miao@linaro.org>2011-09-26 10:46:27 +0800
committerJason Liu <r64343@freescale.com>2012-01-09 20:23:52 +0800
commit4c5836f0778768ff29e0bf23e9763df7cfbc9864 (patch)
tree1d7c79134947dca92d58b4576a4afc9ecd8aa266 /sound
parentc0a5032d33a78e328ce83cce40f7a598091e9527 (diff)
SAUCE: set correct rates before registering SPDIF codec DAI
BugLink: http://bugs.launchpad.net/bugs/855281 Playback/capture rates should be configured before the SPDIF codec DAI is registered, according to the parameters that passed in by the platform data. And this caused pulseaudio not working with the SPDIF sound card. Signed-off-by: Eric Miao <eric.miao@linaro.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/mxc_spdif.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/sound/soc/codecs/mxc_spdif.c b/sound/soc/codecs/mxc_spdif.c
index 6774ed954269..fbcd75494209 100644
--- a/sound/soc/codecs/mxc_spdif.c
+++ b/sound/soc/codecs/mxc_spdif.c
@@ -1152,7 +1152,13 @@ static int __devinit mxc_spdif_probe(struct platform_device *pdev)
mxc_spdif_codec_dai.playback.stream_name = "Playback";
mxc_spdif_codec_dai.playback.channels_min = 2;
mxc_spdif_codec_dai.playback.channels_max = 2;
- mxc_spdif_codec_dai.playback.rates = MXC_SPDIF_RATES_PLAYBACK;
+
+ if (plat_data->spdif_clk_44100 >= 0)
+ mxc_spdif_codec_dai.playback.rates |= SNDRV_PCM_RATE_44100;
+ if (plat_data->spdif_clk_48000 >= 0)
+ mxc_spdif_codec_dai.playback.rates |= SNDRV_PCM_RATE_32000 |
+ SNDRV_PCM_RATE_48000;
+
mxc_spdif_codec_dai.playback.formats = MXC_SPDIF_FORMATS_PLAYBACK;
}
@@ -1160,7 +1166,13 @@ static int __devinit mxc_spdif_probe(struct platform_device *pdev)
mxc_spdif_codec_dai.capture.stream_name = "Capture";
mxc_spdif_codec_dai.capture.channels_min = 2;
mxc_spdif_codec_dai.capture.channels_max = 2;
- mxc_spdif_codec_dai.capture.rates = MXC_SPDIF_RATES_CAPTURE;
+
+ if (plat_data->spdif_clk_44100 >= 0)
+ mxc_spdif_codec_dai.capture.rates |= SNDRV_PCM_RATE_44100;
+ if (plat_data->spdif_clk_48000 >= 0)
+ mxc_spdif_codec_dai.capture.rates |= SNDRV_PCM_RATE_32000 |
+ SNDRV_PCM_RATE_48000;
+
mxc_spdif_codec_dai.capture.formats = MXC_SPDIF_FORMATS_CAPTURE;
}