@ -486,8 +486,7 @@ static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai,
mcasp_set_bits ( base + DAVINCI_MCASP_ACLKRCTL_REG , ACLKRE ) ;
mcasp_set_bits ( base + DAVINCI_MCASP_RXFMCTL_REG , AFSRE ) ;
mcasp_set_bits ( base + DAVINCI_MCASP_PDIR_REG ,
ACLKX | AHCLKX | AFSX ) ;
mcasp_set_bits ( base + DAVINCI_MCASP_PDIR_REG , ACLKX | AFSX ) ;
break ;
case SND_SOC_DAIFMT_CBM_CFS :
/* codec is clock master and frame slave */
@ -584,6 +583,24 @@ static int davinci_mcasp_set_clkdiv(struct snd_soc_dai *dai, int div_id, int div
return 0 ;
}
static int davinci_mcasp_set_sysclk ( struct snd_soc_dai * dai , int clk_id ,
unsigned int freq , int dir )
{
struct davinci_audio_dev * dev = snd_soc_dai_get_drvdata ( dai ) ;
if ( dir = = SND_SOC_CLOCK_OUT ) {
mcasp_set_bits ( dev - > base + DAVINCI_MCASP_AHCLKXCTL_REG , AHCLKXE ) ;
mcasp_set_bits ( dev - > base + DAVINCI_MCASP_AHCLKRCTL_REG , AHCLKRE ) ;
mcasp_set_bits ( dev - > base + DAVINCI_MCASP_PDIR_REG , AHCLKX ) ;
} else {
mcasp_clr_bits ( dev - > base + DAVINCI_MCASP_AHCLKXCTL_REG , AHCLKXE ) ;
mcasp_clr_bits ( dev - > base + DAVINCI_MCASP_AHCLKRCTL_REG , AHCLKRE ) ;
mcasp_clr_bits ( dev - > base + DAVINCI_MCASP_PDIR_REG , AHCLKX ) ;
}
return 0 ;
}
static int davinci_config_channel_size ( struct davinci_audio_dev * dev ,
int channel_size )
{
@ -739,8 +756,6 @@ static void davinci_hw_param(struct davinci_audio_dev *dev, int stream)
if ( stream = = SNDRV_PCM_STREAM_PLAYBACK ) {
/* bit stream is MSB first with no delay */
/* DSP_B mode */
mcasp_set_bits ( dev - > base + DAVINCI_MCASP_AHCLKXCTL_REG ,
AHCLKXE ) ;
mcasp_set_reg ( dev - > base + DAVINCI_MCASP_TXTDM_REG , mask ) ;
mcasp_set_bits ( dev - > base + DAVINCI_MCASP_TXFMT_REG , TXORD ) ;
@ -756,8 +771,6 @@ static void davinci_hw_param(struct davinci_audio_dev *dev, int stream)
/* bit stream is MSB first with no delay */
/* DSP_B mode */
mcasp_set_bits ( dev - > base + DAVINCI_MCASP_RXFMT_REG , RXORD ) ;
mcasp_set_bits ( dev - > base + DAVINCI_MCASP_AHCLKRCTL_REG ,
AHCLKRE ) ;
mcasp_set_reg ( dev - > base + DAVINCI_MCASP_RXTDM_REG , mask ) ;
if ( ( dev - > tdm_slots > = 2 ) & & ( dev - > tdm_slots < = 32 ) )
@ -911,6 +924,7 @@ static const struct snd_soc_dai_ops davinci_mcasp_dai_ops = {
. hw_params = davinci_mcasp_hw_params ,
. set_fmt = davinci_mcasp_set_dai_fmt ,
. set_clkdiv = davinci_mcasp_set_clkdiv ,
. set_sysclk = davinci_mcasp_set_sysclk ,
} ;
# define DAVINCI_MCASP_PCM_FMTS (SNDRV_PCM_FMTBIT_S8 | \