McASP Configuration

Hi all,

I’m try to use TLV320AIC3254 Audio Codec with Beaglebone Black. I face some issues when I set the BCLK frequences. Below is hw_params:

static int tlv320aic32x4_hw_params(struct snd_pcm_substream *substream,
struct snd_pcm_hw_params *params)
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;
struct snd_soc_card *soc_card = rtd->card;
int ret = 0;
struct platform_device *pdev = to_platform_device(soc_card->dev);
unsigned int bclk_freq = evm_get_bclk(params);
unsigned sysclk = ((struct snd_soc_card_drvdata_davinci *)

printk(“TLV320AIC32X4 hw params\n”);
printk(“sysclk=%d\n”, sysclk);
printk(“bclk_freq=%d\n”, bclk_freq);
printk(“clkdiv=%d\n”, sysclk/bclk_freq);

/* set the CPU system clock */
ret = snd_soc_dai_set_sysclk(cpu_dai, 0, sysclk, SND_SOC_CLOCK_OUT);
if (ret < 0)
return ret;

/* set the codec system clock */
ret = snd_soc_dai_set_sysclk(codec_dai, 0, sysclk, SND_SOC_CLOCK_OUT);
if (ret < 0)
return ret;

return ret;

The setting default is 1,4112 MHz for 16 bit stereo. I want to set this value for 32 bit stereo, it’s 2,8224 MHz. I dont know how can I do that?

Many Thanks,

Hiep Nguyen