aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Miao <eric.miao@linaro.org>2011-09-26 10:46:27 +0800
committerEric Miao <eric.miao@linaro.org>2011-11-15 16:28:21 +0800
commitf6d40da915de5c450dcbdbb28990d3eb8cbb036c (patch)
treeffb97d5eef96dd02e9b246189f27105ff660986b
parentb0b89f6b375da726211aa314a2abaa727ca206b2 (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>
-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 6774ed95426..fbcd7549420 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;
}