diff options
author | Eric Miao <eric.miao@linaro.org> | 2011-09-26 10:46:27 +0800 |
---|---|---|
committer | Jason Liu <r64343@freescale.com> | 2012-01-09 20:23:52 +0800 |
commit | 4c5836f0778768ff29e0bf23e9763df7cfbc9864 (patch) | |
tree | 1d7c79134947dca92d58b4576a4afc9ecd8aa266 /sound | |
parent | c0a5032d33a78e328ce83cce40f7a598091e9527 (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.c | 16 |
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; } |