|
@@ -317,6 +317,10 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ regs->rcr2 &= ~(RPHASE | RFRLEN2(0x7f) | RWDLEN2(7));
|
|
|
+ regs->xcr2 &= ~(RPHASE | XFRLEN2(0x7f) | XWDLEN2(7));
|
|
|
+ regs->rcr1 &= ~(RFRLEN1(0x7f) | RWDLEN1(7));
|
|
|
+ regs->xcr1 &= ~(XFRLEN1(0x7f) | XWDLEN1(7));
|
|
|
format = mcbsp_data->fmt & SND_SOC_DAIFMT_FORMAT_MASK;
|
|
|
wpf = channels = params_channels(params);
|
|
|
if (channels == 2 && (format == SND_SOC_DAIFMT_I2S ||
|
|
@@ -369,6 +373,8 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
|
|
|
framesize = wlen * channels;
|
|
|
|
|
|
/* Set FS period and length in terms of bit clock periods */
|
|
|
+ regs->srgr2 &= ~FPER(0xfff);
|
|
|
+ regs->srgr1 &= ~FWID(0xff);
|
|
|
switch (format) {
|
|
|
case SND_SOC_DAIFMT_I2S:
|
|
|
case SND_SOC_DAIFMT_LEFT_J:
|
|
@@ -505,6 +511,7 @@ static int omap_mcbsp_dai_set_clkdiv(struct snd_soc_dai *cpu_dai,
|
|
|
return -ENODEV;
|
|
|
|
|
|
mcbsp_data->clk_div = div;
|
|
|
+ regs->srgr1 &= ~CLKGDV(0xff);
|
|
|
regs->srgr1 |= CLKGDV(div - 1);
|
|
|
|
|
|
return 0;
|
|
@@ -534,6 +541,8 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
|
|
|
return -EINVAL;
|
|
|
|
|
|
mcbsp_data->in_freq = freq;
|
|
|
+ regs->srgr2 &= ~CLKSM;
|
|
|
+ regs->pcr0 &= ~SCLKME;
|
|
|
|
|
|
switch (clk_id) {
|
|
|
case OMAP_MCBSP_SYSCLK_CLK:
|