From 6b647d6ae1e9f1c6448d455f7a42d0857365d500 Mon Sep 17 00:00:00 2001 From: Grazvydas Ignotas Date: Mon, 14 Apr 2014 03:23:41 +0300 Subject: [PATCH] ASoC: pandora: set divider correctly for higher bit depths --- sound/soc/omap/omap3pandora.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c index 891f5306af07..796484d6e4f4 100644 --- a/sound/soc/omap/omap3pandora.c +++ b/sound/soc/omap/omap3pandora.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -49,6 +50,7 @@ static int omap3pandora_hw_params(struct snd_pcm_substream *substream, struct snd_soc_pcm_runtime *rtd = substream->private_data; struct snd_soc_dai *codec_dai = rtd->codec_dai; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; + int divider; int ret; /* Set the codec system clock for DAC and ADC */ @@ -68,9 +70,13 @@ static int omap3pandora_hw_params(struct snd_pcm_substream *substream, return ret; } - ret = snd_soc_dai_set_clkdiv(cpu_dai, OMAP_MCBSP_CLKGDV, 8); + divider = 8; + if (snd_pcm_format_physical_width(params_format(params)) > 16) + divider = 4; + + ret = snd_soc_dai_set_clkdiv(cpu_dai, OMAP_MCBSP_CLKGDV, divider); if (ret < 0) { - pr_err(PREFIX "can't set SRG clock divider\n"); + pr_err(PREFIX "can't set SRG clock divider to %d\n", divider); return ret; } -- 2.39.5