Commit 9e5d86fe authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Mark Brown

ASoC: Pandora: Pass SRG input clock frequency to the OMAP McBSP DAI

Upcoming change to omap-mcbsp.c require that machine drivers using OMAP
as a DAI master to pass sample rate generator input clock frequency to
the omap-mcbsp.c DAI driver.

Pandora is using 256*Fs output from the TWL4030 codec as an input clock to
the McBSP sample rate generator.
Signed-off-by: default avatarJarkko Nikula <jhnikula@gmail.com>
Tested-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
Acked-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent c939e5c8
...@@ -40,9 +40,12 @@ ...@@ -40,9 +40,12 @@
#define PREFIX "ASoC omap3pandora: " #define PREFIX "ASoC omap3pandora: "
static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai, static int omap3pandora_cmn_hw_params(struct snd_pcm_substream *substream,
struct snd_soc_dai *cpu_dai, unsigned int fmt) struct snd_pcm_hw_params *params, unsigned int fmt)
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
int ret; int ret;
/* Set codec DAI configuration */ /* Set codec DAI configuration */
...@@ -68,7 +71,8 @@ static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai, ...@@ -68,7 +71,8 @@ static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai,
} }
/* Set McBSP clock to external */ /* Set McBSP clock to external */
ret = snd_soc_dai_set_sysclk(cpu_dai, OMAP_MCBSP_SYSCLK_CLKS_EXT, 0, ret = snd_soc_dai_set_sysclk(cpu_dai, OMAP_MCBSP_SYSCLK_CLKS_EXT,
256 * params_rate(params),
SND_SOC_CLOCK_IN); SND_SOC_CLOCK_IN);
if (ret < 0) { if (ret < 0) {
pr_err(PREFIX "can't set cpu system clock\n"); pr_err(PREFIX "can't set cpu system clock\n");
...@@ -87,11 +91,7 @@ static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai, ...@@ -87,11 +91,7 @@ static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai,
static int omap3pandora_out_hw_params(struct snd_pcm_substream *substream, static int omap3pandora_out_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params) struct snd_pcm_hw_params *params)
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; return omap3pandora_cmn_hw_params(substream, params,
struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
return omap3pandora_cmn_hw_params(codec_dai, cpu_dai,
SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_I2S |
SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_IB_NF |
SND_SOC_DAIFMT_CBS_CFS); SND_SOC_DAIFMT_CBS_CFS);
...@@ -100,11 +100,7 @@ static int omap3pandora_out_hw_params(struct snd_pcm_substream *substream, ...@@ -100,11 +100,7 @@ static int omap3pandora_out_hw_params(struct snd_pcm_substream *substream,
static int omap3pandora_in_hw_params(struct snd_pcm_substream *substream, static int omap3pandora_in_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params) struct snd_pcm_hw_params *params)
{ {
struct snd_soc_pcm_runtime *rtd = substream->private_data; return omap3pandora_cmn_hw_params(substream, params,
struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
return omap3pandora_cmn_hw_params(codec_dai, cpu_dai,
SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_I2S |
SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_NB_NF |
SND_SOC_DAIFMT_CBS_CFS); SND_SOC_DAIFMT_CBS_CFS);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment