diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/omap/omap-mcbsp.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c index 894f2f33f508..7f700610b3cb 100644 --- a/sound/soc/omap/omap-mcbsp.c +++ b/sound/soc/omap/omap-mcbsp.c | |||
@@ -317,6 +317,10 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream, | |||
317 | return 0; | 317 | return 0; |
318 | } | 318 | } |
319 | 319 | ||
320 | regs->rcr2 &= ~(RPHASE | RFRLEN2(0x7f) | RWDLEN2(7)); | ||
321 | regs->xcr2 &= ~(RPHASE | XFRLEN2(0x7f) | XWDLEN2(7)); | ||
322 | regs->rcr1 &= ~(RFRLEN1(0x7f) | RWDLEN1(7)); | ||
323 | regs->xcr1 &= ~(XFRLEN1(0x7f) | XWDLEN1(7)); | ||
320 | format = mcbsp_data->fmt & SND_SOC_DAIFMT_FORMAT_MASK; | 324 | format = mcbsp_data->fmt & SND_SOC_DAIFMT_FORMAT_MASK; |
321 | wpf = channels = params_channels(params); | 325 | wpf = channels = params_channels(params); |
322 | if (channels == 2 && (format == SND_SOC_DAIFMT_I2S || | 326 | if (channels == 2 && (format == SND_SOC_DAIFMT_I2S || |
@@ -369,6 +373,8 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream, | |||
369 | framesize = wlen * channels; | 373 | framesize = wlen * channels; |
370 | 374 | ||
371 | /* Set FS period and length in terms of bit clock periods */ | 375 | /* Set FS period and length in terms of bit clock periods */ |
376 | regs->srgr2 &= ~FPER(0xfff); | ||
377 | regs->srgr1 &= ~FWID(0xff); | ||
372 | switch (format) { | 378 | switch (format) { |
373 | case SND_SOC_DAIFMT_I2S: | 379 | case SND_SOC_DAIFMT_I2S: |
374 | case SND_SOC_DAIFMT_LEFT_J: | 380 | case SND_SOC_DAIFMT_LEFT_J: |
@@ -505,6 +511,7 @@ static int omap_mcbsp_dai_set_clkdiv(struct snd_soc_dai *cpu_dai, | |||
505 | return -ENODEV; | 511 | return -ENODEV; |
506 | 512 | ||
507 | mcbsp_data->clk_div = div; | 513 | mcbsp_data->clk_div = div; |
514 | regs->srgr1 &= ~CLKGDV(0xff); | ||
508 | regs->srgr1 |= CLKGDV(div - 1); | 515 | regs->srgr1 |= CLKGDV(div - 1); |
509 | 516 | ||
510 | return 0; | 517 | return 0; |
@@ -534,6 +541,8 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai, | |||
534 | return -EINVAL; | 541 | return -EINVAL; |
535 | 542 | ||
536 | mcbsp_data->in_freq = freq; | 543 | mcbsp_data->in_freq = freq; |
544 | regs->srgr2 &= ~CLKSM; | ||
545 | regs->pcr0 &= ~SCLKME; | ||
537 | 546 | ||
538 | switch (clk_id) { | 547 | switch (clk_id) { |
539 | case OMAP_MCBSP_SYSCLK_CLK: | 548 | case OMAP_MCBSP_SYSCLK_CLK: |