diff options
author | Wallace Wang <r59996@freescale.com> | 2009-12-04 13:19:17 +0800 |
---|---|---|
committer | Justin Waters <justin.waters@timesys.com> | 2010-03-25 14:01:31 -0400 |
commit | e9ab41cf3f79139d6b552c981a813e74b260022a (patch) | |
tree | 0bed7fc6bce5d438facd1a2d8c5bf872d6ebe03d /sound | |
parent | f5f236e487f24b3d2ab0da43fd7d159a349391c1 (diff) |
ENGR00119005 ASRC: Remove unsupported sample rates from mixer
ASRC minmal output sample rate is 32000. When ASRC
is used as ASRC-ESAI per_2_per mode, the unsupported
sample rates should not be included in ASRC mixer.
Signed-off-by: Wallace Wang <r59996@freescale.com>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/imx/imx-3stack-wm8580.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/sound/soc/imx/imx-3stack-wm8580.c b/sound/soc/imx/imx-3stack-wm8580.c index 4e468132f406..631571ddb5ef 100644 --- a/sound/soc/imx/imx-3stack-wm8580.c +++ b/sound/soc/imx/imx-3stack-wm8580.c @@ -78,7 +78,7 @@ static int imx_3stack_startup(struct snd_pcm_substream *substream) { clk_state.lr_clk_active++; #if defined(CONFIG_MXC_ASRC) || defined(CONFIG_MXC_ASRC_MODULE) - if (asrc_esai_data.output_sample_rate != 0) { + if (asrc_esai_data.output_sample_rate >= 32000) { struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_dai_link *pcm_link = rtd->dai; struct snd_soc_dai *cpu_dai = pcm_link->cpu_dai; @@ -102,7 +102,7 @@ static void imx_3stack_shutdown(struct snd_pcm_substream *substream) struct snd_soc_dai *codec_dai = pcm_link->codec_dai; #if defined(CONFIG_MXC_ASRC) || defined(CONFIG_MXC_ASRC_MODULE) - if (asrc_esai_data.output_sample_rate != 0) { + if (asrc_esai_data.output_sample_rate >= 32000) { struct snd_soc_dai *cpu_dai = pcm_link->cpu_dai; codec_dai->playback.rates = asrc_esai_data.codec_dai_rates; cpu_dai->playback.rates = asrc_esai_data.cpu_dai_rates; @@ -133,7 +133,7 @@ static int imx_3stack_surround_hw_params(struct snd_pcm_substream *substream, return 0; #if defined(CONFIG_MXC_ASRC) || defined(CONFIG_MXC_ASRC_MODULE) - if (asrc_esai_data.output_sample_rate != 0) { + if (asrc_esai_data.output_sample_rate >= 32000) { unsigned int asrc_input_rate = rate; struct mxc_runtime_data *pcm_data = substream->runtime->private_data; @@ -279,12 +279,12 @@ static const struct snd_soc_dapm_route audio_map[] = { static int asrc_func; static const char *asrc_function[] = - { "disable", "8KHz", "11.025KHz", "16KHz", "22.05KHz", "32KHz", "44.1KHz", + { "disable", "32KHz", "44.1KHz", "48KHz", "64KHz", "88.2KHz", "96KHz", "176.4KHz", "192KHz" }; static const struct soc_enum asrc_enum[] = { - SOC_ENUM_SINGLE_EXT(13, asrc_function), + SOC_ENUM_SINGLE_EXT(9, asrc_function), }; static int asrc_get_rate(struct snd_kcontrol *kcontrol, @@ -301,7 +301,7 @@ static int asrc_set_rate(struct snd_kcontrol *kcontrol, return 0; asrc_func = ucontrol->value.enumerated.item[0]; - asrc_esai_data.output_sample_rate = asrc_rates[asrc_func]; + asrc_esai_data.output_sample_rate = asrc_rates[asrc_func + 4]; return 1; } @@ -325,7 +325,7 @@ static int imx_3stack_wm8580_init(struct snd_soc_codec *codec) if (ret < 0) return ret; } - asrc_esai_data.output_sample_rate = asrc_rates[asrc_func]; + asrc_esai_data.output_sample_rate = asrc_rates[asrc_func + 4]; #endif snd_soc_dapm_new_controls(codec, imx_3stack_dapm_widgets, |