您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ snd_soc_dai_set_clkdiv函数代码示例

51自学网 2021-06-03 08:02:58
  C++
这篇教程C++ snd_soc_dai_set_clkdiv函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中snd_soc_dai_set_clkdiv函数的典型用法代码示例。如果您正苦于以下问题:C++ snd_soc_dai_set_clkdiv函数的具体用法?C++ snd_soc_dai_set_clkdiv怎么用?C++ snd_soc_dai_set_clkdiv使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了snd_soc_dai_set_clkdiv函数的24个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: iphone_wm8991_link_hw_params

static int iphone_wm8991_link_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->dai->codec_dai;	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;	int ret;	ret = snd_soc_dai_set_clkdiv(codec_dai, WM8991_MCLK_DIV, WM8991_MCLK_DIV_2);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_clkdiv(codec_dai, WM8991_BCLK_DIV, WM8991_BCLK_DIV_8);	if (ret < 0)		return ret;	// this forces N = 7, K = 0x85FC for wm8991.	ret = snd_soc_dai_set_pll(codec_dai, 0, 0, 0x0785FC);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM);	if (ret < 0)		return ret;	return 0;}
开发者ID:fergy,项目名称:iPhone_kernel_26,代码行数:30,


示例2: sdp4430_dmic_hw_params

static int sdp4430_dmic_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 *cpu_dai = rtd->cpu_dai;	int ret = 0;	if (!rtd->dai_link->no_pcm)		ret = snd_soc_dai_set_sysclk(cpu_dai,				OMAP_DMIC_SYSCLK_SYNC_MUX_CLKS, 24000000,				SND_SOC_CLOCK_IN);	else		ret = snd_soc_dai_set_sysclk(cpu_dai,				OMAP_DMIC_SYSCLK_PAD_CLKS, 19200000,				SND_SOC_CLOCK_IN);	if (ret < 0) {		printk(KERN_ERR "can't set DMIC cpu system clock/n");		return ret;	}	if (!rtd->dai_link->no_pcm)		ret = snd_soc_dai_set_clkdiv(cpu_dai, OMAP_DMIC_CLKDIV, 10);	else		ret = snd_soc_dai_set_clkdiv(cpu_dai, OMAP_DMIC_CLKDIV, 8);	if (ret < 0) {		printk(KERN_ERR "can't set DMIC cpu clock divider/n");		return ret;	}	return 0;}
开发者ID:achaykin,项目名称:android_kernel_huawei_viva,代码行数:32,


示例3: smdk_wm8580_pcm_hw_params

static int smdk_wm8580_pcm_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;	int rfs, ret;	switch (params_rate(params)) {	case 8000:		break;	default:		printk(KERN_ERR "%s:%d Sampling Rate %u not supported!/n",		__func__, __LINE__, params_rate(params));		return -EINVAL;	}	rfs = mclk_freq / params_rate(params) / 2;	if (mclk_freq == xtal_freq) {		ret = snd_soc_dai_set_sysclk(codec_dai, WM8580_CLKSRC_MCLK,						mclk_freq, SND_SOC_CLOCK_IN);		if (ret < 0)			return ret;		ret = snd_soc_dai_set_clkdiv(codec_dai, WM8580_MCLK,						WM8580_CLKSRC_MCLK);		if (ret < 0)			return ret;	} else {		ret = snd_soc_dai_set_sysclk(codec_dai, WM8580_CLKSRC_PLLA,						mclk_freq, SND_SOC_CLOCK_IN);		if (ret < 0)			return ret;		ret = snd_soc_dai_set_clkdiv(codec_dai, WM8580_MCLK,						WM8580_CLKSRC_PLLA);		if (ret < 0)			return ret;		ret = snd_soc_dai_set_pll(codec_dai, WM8580_PLLA, 0,						xtal_freq, mclk_freq);		if (ret < 0)			return ret;	}	/* Set PCM source clock on CPU */	ret = snd_soc_dai_set_sysclk(cpu_dai, S3C_PCM_CLKSRC_MUX,					mclk_freq, SND_SOC_CLOCK_IN);	if (ret < 0)		return ret;	/* Set SCLK_DIV for making bclk */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C_PCM_SCLK_PER_FS, rfs);	if (ret < 0)		return ret;	return 0;}
开发者ID:acton393,项目名称:linux,代码行数:59,


示例4: jive_hw_params

static int jive_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 s3c_i2sv2_rate_calc div;	unsigned int clk = 0;	int ret = 0;	switch (params_rate(params)) {	case 8000:	case 16000:	case 48000:	case 96000:		clk = 12288000;		break;	case 11025:	case 22050:	case 44100:		clk = 11289600;		break;	}	s3c_i2sv2_iis_calc_rate(&div, NULL, params_rate(params),				s3c_i2sv2_get_clock(cpu_dai));	/* set codec DAI configuration */	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |				  SND_SOC_DAIFMT_NB_NF |				  SND_SOC_DAIFMT_CBS_CFS);	if (ret < 0)		return ret;	/* set cpu DAI configuration */	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |				  SND_SOC_DAIFMT_NB_NF |				  SND_SOC_DAIFMT_CBS_CFS);	if (ret < 0)		return ret;	/* set the codec system clock for DAC and ADC */	ret = snd_soc_dai_set_sysclk(codec_dai, WM8750_SYSCLK, clk,				     SND_SOC_CLOCK_IN);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C2412_DIV_RCLK, div.fs_div);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C2412_DIV_PRESCALER,				     div.clk_div - 1);	if (ret < 0)		return ret;	return 0;}
开发者ID:mikuhatsune001,项目名称:linux2.6.32,代码行数:58,


示例5: hdmi_i2s_hifi_hw_params

static int hdmi_i2s_hifi_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 *cpu_dai = rtd->cpu_dai;	unsigned int pll_out = 0, dai_fmt = rtd->dai_link->dai_fmt;	int div_bclk,div_mclk;	int ret;	DBG("Enter::%s----%d/n", __FUNCTION__, __LINE__);	/* set cpu DAI configuration */	ret = snd_soc_dai_set_fmt(cpu_dai, dai_fmt);	if (ret < 0) {		printk("%s():failed to set the format for cpu side/n", __FUNCTION__);		return ret;	}	switch(params_rate(params)) {		case 8000:		case 16000:		case 24000:		case 32000:		case 48000:		case 96000:			pll_out = 12288000;			break;		case 11025:		case 22050:		case 44100:		case 88200:			pll_out = 11289600;			break;		case 176400:			pll_out = 11289600*2;			break;		case 192000:			pll_out = 12288000*2;			break;		default:			printk("Enter:%s, %d, Error rate=%d/n", __FUNCTION__, __LINE__, params_rate(params));			return -EINVAL;			break;	}	DBG("Enter:%s, %d, rate=%d/n", __FUNCTION__, __LINE__, params_rate(params));	div_bclk = 63;	div_mclk = pll_out/(params_rate(params)*64) - 1;	snd_soc_dai_set_sysclk(cpu_dai, 0, pll_out, 0);	snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_BCLK,div_bclk);	snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_MCLK, div_mclk);	DBG("Enter:%s, %d, pll_out/4/params_rate(params) = %d , div_mclk:%d/n", __FUNCTION__, __LINE__, (pll_out/4)/params_rate(params), div_mclk);	return 0;}
开发者ID:jasonleeee,项目名称:Firefly_OC,代码行数:57,


示例6: rx1950_hw_params

static int rx1950_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 *cpu_dai = rtd->cpu_dai;	int div;	int ret;	unsigned int rate = params_rate(params);	int clk_source, fs_mode;	switch (rate) {	case 16000:	case 48000:		clk_source = S3C24XX_CLKSRC_PCLK;		fs_mode = S3C2410_IISMOD_256FS;		div = s3c24xx_i2s_get_clockrate() / (256 * rate);		if (s3c24xx_i2s_get_clockrate() % (256 * rate) > (128 * rate))			div++;		break;	case 44100:	case 88200:		clk_source = S3C24XX_CLKSRC_MPLL;		fs_mode = S3C2410_IISMOD_384FS;		div = 1;		break;	default:		printk(KERN_ERR "%s: rate %d is not supported/n",			__func__, rate);		return -EINVAL;	}	/* select clock source */	ret = snd_soc_dai_set_sysclk(cpu_dai, clk_source, rate,			SND_SOC_CLOCK_OUT);	if (ret < 0)		return ret;	/* set MCLK division for sample rate */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK,		fs_mode);	if (ret < 0)		return ret;	/* set BCLK division for sample rate */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_BCLK,		S3C2410_IISMOD_32FS);	if (ret < 0)		return ret;	/* set prescaler division for sample rate */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER,		S3C24XX_PRESCALE(div, div));	if (ret < 0)		return ret;	return 0;}
开发者ID:020gzh,项目名称:linux,代码行数:57,


示例7: rt3261_voice_hw_params

static int rt3261_voice_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;	unsigned int pll_out = 0;	int ret;	DBG("Enter::%s----%d/n",__FUNCTION__,__LINE__);           	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A |		SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_CBS_CFS ); 	switch(params_rate(params)) {		case 8000:		case 16000:		case 24000:		case 32000:		case 48000:			pll_out = 12288000;			break;		case 11025:		case 22050:		case 44100:			pll_out = 11289600;			break;		default:			DBG("Enter:%s, %d, Error rate=%d/n", __FUNCTION__, __LINE__, params_rate(params));			return -EINVAL;			break;	}	DBG("Enter:%s, %d, rate=%d/n", __FUNCTION__, __LINE__, params_rate(params));	/*Set the system clk for codec*/	snd_soc_dai_set_pll(codec_dai, 0, RT3261_PLL1_S_MCLK, pll_out, 24576000); 	ret = snd_soc_dai_set_sysclk(codec_dai, RT3261_SCLK_S_PLL1, 24576000, SND_SOC_CLOCK_IN);	if (ret < 0) {		printk("rk29_hw_params_rt3261:failed to set the sysclk for codec side/n"); 		return ret;	}	snd_soc_dai_set_sysclk(cpu_dai, 0, pll_out, 0);	snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_BCLK, (pll_out/4)/params_rate(params)-1);	snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_MCLK, 3);	DBG("Enter:%s, %d, pll_out/4/params_rate(params) = %d /n", __FUNCTION__, __LINE__, (pll_out/4)/params_rate(params)); 	return 0;}
开发者ID:cubelibre,项目名称:rk3x_kernel_3.0.36,代码行数:54,


示例8: rk29_hw_params

static int rk29_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;        unsigned int pll_out = 0, dai_fmt = rtd->card->dai_link->dai_fmt;        int ret;        DBG("Enter::%s----%d/n",__FUNCTION__,__LINE__);    	/* set codec DAI configuration */	ret = snd_soc_dai_set_fmt(codec_dai, dai_fmt);	if (ret < 0) {		printk("%s():failed to set the format for codec side/n", __FUNCTION__);		return ret;	}	/* set cpu DAI configuration */	ret = snd_soc_dai_set_fmt(cpu_dai, dai_fmt);	if (ret < 0) {		printk("%s():failed to set the format for cpu side/n", __FUNCTION__);		return ret;	}        switch(params_rate(params)) {        case 8000:        case 16000:        case 24000:        case 32000:        case 48000:                pll_out = 12288000;                break;        case 11025:        case 22050:        case 44100:                pll_out = 11289600;                break;        default:                DBG("Enter:%s, %d, Error rate=%d/n",__FUNCTION__,__LINE__,params_rate(params));                return -EINVAL;                break;        }        DBG("Enter:%s, %d, rate=%d/n",__FUNCTION__,__LINE__,params_rate(params));		if ((dai_fmt & SND_SOC_DAIFMT_MASTER_MASK) == SND_SOC_DAIFMT_CBS_CFS) {		snd_soc_dai_set_sysclk(cpu_dai, 0, pll_out, 0);		snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_BCLK, (pll_out/4)/params_rate(params)-1);		snd_soc_dai_set_clkdiv(cpu_dai, ROCKCHIP_DIV_MCLK, 3);	}        DBG("Enter:%s, %d, LRCK=%d/n",__FUNCTION__,__LINE__,(pll_out/4)/params_rate(params));	  return 0;}
开发者ID:jack-ma,项目名称:popmetal-android-kernel-3.10,代码行数:54,


示例9: zylonite_voice_hw_params

static int zylonite_voice_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;	unsigned int pll_out = 0;	unsigned int wm9713_div = 0;	int ret = 0;	int rate = params_rate(params);	int width = snd_pcm_format_physical_width(params_format(params));	/* Only support ratios that we can generate neatly from the AC97	 * based master clock - in particular, this excludes 44.1kHz.	 * In most applications the voice DAC will be used for telephony	 * data so multiples of 8kHz will be the common case.	 */	switch (rate) {	case 8000:		wm9713_div = 12;		break;	case 16000:		wm9713_div = 6;		break;	case 48000:		wm9713_div = 2;		break;	default:		/* Don't support OSS emulation */		return -EINVAL;	}	/* Add 1 to the width for the leading clock cycle */	pll_out = rate * (width + 1) * 8;	ret = snd_soc_dai_set_sysclk(cpu_dai, PXA_SSP_CLK_AUDIO, 0, 1);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_pll(cpu_dai, 0, 0, 0, pll_out);	if (ret < 0)		return ret;	if (clk_pout)		ret = snd_soc_dai_set_clkdiv(codec_dai, WM9713_PCMCLK_PLL_DIV,					     WM9713_PCMDIV(wm9713_div));	else		ret = snd_soc_dai_set_clkdiv(codec_dai, WM9713_PCMCLK_DIV,					     WM9713_PCMDIV(wm9713_div));	if (ret < 0)		return ret;	return 0;}
开发者ID:ReneNyffenegger,项目名称:linux,代码行数:54,


示例10: h1940_hw_params

static int h1940_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 *cpu_dai = rtd->cpu_dai;	int div;	int ret;	unsigned int rate = params_rate(params);	switch (rate) {	case 11025:	case 22050:	case 44100:		div = s3c24xx_i2s_get_clockrate() / (384 * rate);		if (s3c24xx_i2s_get_clockrate() % (384 * rate) > (192 * rate))			div++;		break;	default:		dev_err(rtd->dev, "%s: rate %d is not supported/n",			__func__, rate);		return -EINVAL;	}	/* select clock source */	ret = snd_soc_dai_set_sysclk(cpu_dai, S3C24XX_CLKSRC_PCLK, rate,			SND_SOC_CLOCK_OUT);	if (ret < 0)		return ret;	/* set MCLK division for sample rate */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_MCLK,		S3C2410_IISMOD_384FS);	if (ret < 0)		return ret;	/* set BCLK division for sample rate */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_BCLK,		S3C2410_IISMOD_32FS);	if (ret < 0)		return ret;	/* set prescaler division for sample rate */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER,		S3C24XX_PRESCALE(div, div));	if (ret < 0)		return ret;	return 0;}
开发者ID:AlexShiLucky,项目名称:linux,代码行数:49,


示例11: omap3pandora_hw_params

static int omap3pandora_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;	int ret;	/* Set the codec system clock for DAC and ADC */	ret = snd_soc_dai_set_sysclk(codec_dai, 0, 26000000,					    SND_SOC_CLOCK_IN);	if (ret < 0) {		pr_err(PREFIX "can't set codec system clock/n");		return ret;	}	/* Set McBSP clock to external */	ret = snd_soc_dai_set_sysclk(cpu_dai, OMAP_MCBSP_SYSCLK_CLKS_EXT,				     256 * params_rate(params),				     SND_SOC_CLOCK_IN);	if (ret < 0) {		pr_err(PREFIX "can't set cpu system clock/n");		return ret;	}	ret = snd_soc_dai_set_clkdiv(cpu_dai, OMAP_MCBSP_CLKGDV, 8);	if (ret < 0) {		pr_err(PREFIX "can't set SRG clock divider/n");		return ret;	}	return 0;}
开发者ID:AiWinters,项目名称:linux,代码行数:33,


示例12: playpaq_wm8510_init

static int playpaq_wm8510_init(struct snd_soc_codec *codec){	int i;	/*	 * Add DAPM widgets	 */	for (i = 0; i < ARRAY_SIZE(playpaq_dapm_widgets); i++)		snd_soc_dapm_new_control(codec, &playpaq_dapm_widgets[i]);	/*	 * Setup audio path interconnects	 */	for (i = 0; intercon[i][0] != NULL; i++) {		snd_soc_dapm_connect_input(codec,					   intercon[i][0],					   intercon[i][1], intercon[i][2]);	}	/* always connected pins */	snd_soc_dapm_enable_pin(codec, "Int Mic");	snd_soc_dapm_enable_pin(codec, "Ext Spk");	snd_soc_dapm_sync(codec);	/* Make CSB show PLL rate */	snd_soc_dai_set_clkdiv(codec->dai, WM8510_OPCLKDIV,				       WM8510_OPCLKDIV_1 | 4);	return 0;}
开发者ID:maraz,项目名称:linux-2.6,代码行数:35,


示例13: sun7i_sndpcm_hw_params

//set mclk and bclk divisionstatic int sun7i_sndpcm_hw_params(struct snd_pcm_substream *substream,					struct snd_pcm_hw_params *params){	int ret  = 0;	u32 freq = 22579200;	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;	unsigned long sample_rate = params_rate(params);	switch (sample_rate) {		case 8000:		case 16000:		case 32000:		case 64000:		case 128000:		case 12000:		case 24000:		case 48000:		case 96000:		case 192000:			freq = 24576000;			break;	}	ret = snd_soc_dai_set_sysclk(cpu_dai, 0 , freq, i2s_pcm_select);	if (ret < 0) {		return ret;	}	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A |			SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_CBM_CFM);	if (ret < 0)		return ret;	/*	* codec clk & FRM master. AP as slave	*/	ret = snd_soc_dai_set_fmt(cpu_dai, (audio_format | (signal_inversion<<8) | (pcm_master<<12)));	if (ret < 0) {		return ret;	}			ret = snd_soc_dai_set_clkdiv(cpu_dai, 0, sample_rate);	if (ret < 0) {		return ret;	}			/*	*	audio_format == SND_SOC_DAIFMT_DSP_A	*	signal_inversion<<8 == SND_SOC_DAIFMT_IB_NF	*	i2s_master<<12 == SND_SOC_DAIFMT_CBM_CFM	*/	I2S_DBG("%s,line:%d,audio_format:%d,SND_SOC_DAIFMT_DSP_A:%d/n",/			__func__, __LINE__, audio_format, SND_SOC_DAIFMT_DSP_A);	I2S_DBG("%s,line:%d,signal_inversion:%d,signal_inversion<<8:%d,SND_SOC_DAIFMT_IB_NF:%d/n",/			__func__, __LINE__, signal_inversion, signal_inversion<<8, SND_SOC_DAIFMT_IB_NF);	I2S_DBG("%s,line:%d,i2s_master:%d,i2s_master<<12:%d,SND_SOC_DAIFMT_CBM_CFM:%d/n",/			__func__, __LINE__, pcm_master, pcm_master<<12, SND_SOC_DAIFMT_CBM_CFM);	return 0;}
开发者ID:mfkiwl,项目名称:PhoenixA20_linux_sourcecode,代码行数:61,


示例14: playpaq_wm8510_init

static int playpaq_wm8510_init(struct snd_soc_pcm_runtime *rtd){	struct snd_soc_codec *codec = rtd->codec;	struct snd_soc_dapm_context *dapm = &codec->dapm;	int i;	/*	 * Add DAPM widgets	 */	for (i = 0; i < ARRAY_SIZE(playpaq_dapm_widgets); i++)		snd_soc_dapm_new_control(dapm, &playpaq_dapm_widgets[i]);	/*	 * Setup audio path interconnects	 */	snd_soc_dapm_add_routes(dapm, intercon, ARRAY_SIZE(intercon));	/* always connected pins */	snd_soc_dapm_enable_pin(dapm, "Int Mic");	snd_soc_dapm_enable_pin(dapm, "Ext Spk");	snd_soc_dapm_sync(dapm);	/* Make CSB show PLL rate */	snd_soc_dai_set_clkdiv(rtd->codec_dai, WM8510_OPCLKDIV,				       WM8510_OPCLKDIV_1 | 4);	return 0;}
开发者ID:1yankeedt,项目名称:D710BST_FL24_Kernel,代码行数:34,


示例15: sunxi_snddaudio_hw_params

static int sunxi_snddaudio_hw_params(struct snd_pcm_substream *substream,					struct snd_pcm_hw_params *params){	int ret  = 0;	u32 freq_in = 24000000;	u32 freq_out = 22579200;	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;	int sample_rate = params_rate(params);	switch (sample_rate) {		case 8000:		case 16000:		case 32000:		case 64000:		case 128000:		case 12000:		case 24000:		case 48000:		case 96000:		case 192000:			freq_out = 24576000;			break;	}	pr_debug("%s,line:%d,freq_in:%d,daudio_pcm_select:%d,audio_format:%d,signal_inversion:%d/n",__func__,__LINE__,			freq_in,daudio_pcm_select,audio_format,signal_inversion);	/* set the codec FLL */	ret = snd_soc_dai_set_pll(codec_dai, AC100_MCLK1, 0, freq_in, freq_out);	if (ret < 0) {		return ret;	}	/*set cpu_dai clk*/	ret = snd_soc_dai_set_sysclk(cpu_dai, 0 , freq_out, daudio_pcm_select);	if (ret < 0) {		return ret;	}	/*set codec_dai clk*/	ret = snd_soc_dai_set_sysclk(codec_dai, AIF1_CLK , freq_out, daudio_pcm_select);	if (ret < 0) {		return ret;	}	/*	* ac100: master. AP: slave	*/	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);	if (ret < 0) {		return ret;	}	ret = snd_soc_dai_set_fmt(cpu_dai, (audio_format | (signal_inversion<<8) | SND_SOC_DAIFMT_CBM_CFM));	if (ret < 0) {		return ret;	}	ret = snd_soc_dai_set_clkdiv(cpu_dai, 0, sample_rate);	if (ret < 0) {		return ret;	}	return 0;}
开发者ID:xwliu,项目名称:Cubietruck_Plus-kernel-source,代码行数:60,


示例16: adonisuniv_hifi_hw_params

static int adonisuniv_hifi_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 *cpu_dai = rtd->cpu_dai;	struct snd_soc_dai *codec_dai = rtd->codec_dai;	int ret;	/* Set the codec DAI configuration */	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S				| SND_SOC_DAIFMT_NB_NF				| SND_SOC_DAIFMT_CBM_CFM);	if (ret < 0)		return ret;	/* Set the cpu DAI configuration */	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S				| SND_SOC_DAIFMT_NB_NF				| SND_SOC_DAIFMT_CBM_CFM);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_clkdiv(codec_dai, MC_ASOC_BCLK_MULT,				MC_ASOC_LRCK_X32);	if (ret < 0)		return ret;	return 0;}
开发者ID:android-armv7a-belalang-tempur,项目名称:Adam-Kernel-GS4,代码行数:30,


示例17: map_fe_hw_params

static int map_fe_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;	u32 freq_in, freq_out, sspa_mclk, sysclk, sspa_div;	u32 srate = params_rate(params);	codec_dai->stream = substream->stream;	cpu_dai->stream = substream->stream;	freq_in = 26000000;	if (params_rate(params) > 11025) {		freq_out = params_rate(params) * 512;		sysclk = 11289600;		sspa_mclk = params_rate(params) * 64;	} else {		freq_out = params_rate(params) * 1024;		sysclk = 11289600;		sspa_mclk = params_rate(params) * 64;	}	sspa_div = freq_out;	do_div(sspa_div, sspa_mclk);#if 1	/* For i2s2(voice call) and i2s3(bt-audio), the dai format is pcm */	if (codec_dai->id == 2) {		snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A |			    SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);		snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_A |			    SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);	} else if (codec_dai->id == 5) {		snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_A |			    SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_CBM_CFM);		snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_A |			    SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_CBM_CFM);	} else {		snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |			   SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_CBM_CFM);		snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |			   SND_SOC_DAIFMT_NB_IF | SND_SOC_DAIFMT_CBM_CFM);	}#else	snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |			    SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);	snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |			    SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);#endif	/* SSPA clock ctrl register changes, and can't use previous API */	snd_soc_dai_set_sysclk(cpu_dai, AUDIO_PLL, freq_out, 0);	snd_soc_dai_set_clkdiv(cpu_dai, 0, 0);	/* set i2s1/2/3/4 sysclk */	snd_soc_dai_set_sysclk(codec_dai, APLL_32K, srate, 0);	return 0;}
开发者ID:acorn-marvell,项目名称:brillo_pxa_kernel,代码行数:59,


示例18: smdk_wm8994_pcm_hw_params

static int smdk_wm8994_pcm_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;	unsigned long mclk_freq;	int rfs, ret;	switch(params_rate(params)) {	case 8000:		rfs = 512;		break;	default:		dev_err(cpu_dai->dev, "%s:%d Sampling Rate %u not supported!/n",		__func__, __LINE__, params_rate(params));		return -EINVAL;	}	mclk_freq = params_rate(params) * rfs;	/*                                 */	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B				| SND_SOC_DAIFMT_IB_NF				| SND_SOC_DAIFMT_CBS_CFS);	if (ret < 0)		return ret;	/*                               */	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_B				| SND_SOC_DAIFMT_IB_NF				| SND_SOC_DAIFMT_CBS_CFS);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_FLL1,					mclk_freq, SND_SOC_CLOCK_IN);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_pll(codec_dai, WM8994_FLL1, WM8994_FLL_SRC_MCLK1,					SMDK_WM8994_FREQ, mclk_freq);	if (ret < 0)		return ret;	/*                             */	ret = snd_soc_dai_set_sysclk(cpu_dai, S3C_PCM_CLKSRC_MUX,					mclk_freq, SND_SOC_CLOCK_IN);	if (ret < 0)		return ret;	/*                              */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C_PCM_SCLK_PER_FS, rfs);	if (ret < 0)		return ret;	return 0;}
开发者ID:romanbb,项目名称:android_kernel_lge_d851,代码行数:58,


示例19: daudio0_set_clk

static int daudio0_set_clk(void){	int ret  = 0;	u32 freq = 22579200;	unsigned int pll_out = 11289600;	struct snd_soc_pcm_runtime *rtd = runtime;	struct snd_soc_dai *codec_dai = rtd->codec_dai;	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;	unsigned long sample_rate = 44100;	switch (sample_rate) {		case 8000:		case 16000:		case 32000:		case 64000:		case 128000:		case 12000:		case 24000:		case 48000:		case 96000:		case 192000:			freq = 24576000;			pll_out = 12288000;			break;	}	/*set system clock source freq and set the mode as daudio or pcm*/	ret = snd_soc_dai_set_sysclk(cpu_dai, 0 , freq, daudio_pcm_select);	if (ret < 0) {		return ret;	}	ret = codec_dai->driver->ops->set_sysclk(codec_dai, 0, pll_out,			SND_SOC_CLOCK_IN);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);	if (ret < 0) {		pr_err("%s, line:%d/n", __func__, __LINE__);		return ret;	}	/*	* codec clk & FRM master. AP as slave	*/	ret = snd_soc_dai_set_fmt(cpu_dai, (audio_format | (signal_inversion<<8) | (daudio_master<<12)));	if (ret < 0) {		return ret;	}	ret = snd_soc_dai_set_clkdiv(cpu_dai, 0, sample_rate);	if (ret < 0) {		return ret;	}	return 0;}
开发者ID:xwliu,项目名称:Cubietruck_Plus-kernel-source,代码行数:57,


示例20: mehmet_pcm_hw_params

static int mehmet_pcm_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 *cpu_dai = rtd->cpu_dai;	unsigned long epll_out_rate;	int rfs, ret;	switch (params_rate(params)) {	case 8000:	case 16000:		epll_out_rate = 49152000;		break;	default:		printk(KERN_ERR "%s:%d Sampling Rate %u not supported!/n",			__func__, __LINE__, params_rate(params));		return -EINVAL;	}	switch (params_rate(params)) {	case 16000:		rfs = 128;		break;	case 8000:		rfs = 256;		break;		break;	default:		printk(KERN_ERR "%s:%d Sampling Rate %u not supported!/n",			__func__, __LINE__, params_rate(params));		return -EINVAL;	}	/* Set the cpu DAI configuration */	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_A				| SND_SOC_DAIFMT_IB_NF				| SND_SOC_DAIFMT_CBS_CFS);	if (ret < 0)		return ret;	/* Set EPLL clock rate */	ret = set_epll_rate(epll_out_rate);	if (ret < 0)		return ret;	/* 8kHz * 256(16bits * 16slots, frame sync) = 2048kHz Clock Out */	ret = snd_soc_dai_set_sysclk(cpu_dai, S3C_PCM_CLKSRC_MUX,				params_rate(params)*rfs,				SND_SOC_CLOCK_OUT);	/* Set SCLK_DIV for making bclk */	ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C_PCM_SCLK_PER_FS, rfs);	if (ret < 0)		return ret;	return 0;}
开发者ID:ugur2323,项目名称:Whispermehmet_VE,代码行数:57,


示例21: sun6i_sndspdif_hw_params

static int sun6i_sndspdif_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 *cpu_dai = rtd->cpu_dai;	int ret = 0;	unsigned long rate = params_rate(params);	unsigned int fmt = 0;	u32 mclk_div=0, mpll=0, bclk_div=0, mult_fs=0;	get_clock_divder(rate, 32, &mclk_div, &mpll, &bclk_div, &mult_fs);		if (ret < 0)		return ret;	/*add the pcm and raw data select interface*/	switch(params_channels(params)) {		case 1:/*pcm mode*/		case 2:			fmt = 0;			break;		case 4:/*raw data mode*/			fmt = 1;			break;		default:			return -EINVAL;	}	ret = snd_soc_dai_set_fmt(cpu_dai, fmt);//0:pcm,1:raw data	if (ret < 0)		return ret;	ret = snd_soc_dai_set_sysclk(cpu_dai, 0 , mpll, 0);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_clkdiv(cpu_dai, SUN6I_DIV_MCLK, mclk_div);	if (ret < 0)		return ret;			ret = snd_soc_dai_set_clkdiv(cpu_dai, SUN6I_DIV_BCLK, bclk_div);	if (ret < 0)		return ret;	return 0;}
开发者ID:BPI-SINOVOIP,项目名称:BPI-M2-bsp,代码行数:44,


示例22: sun5i_sndi2s_hw_params

static int sun5i_sndi2s_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;	int ret = 0;	unsigned long rate = params_rate(params);	u32 mclk_div=0, mpll=0, bclk_div=0, mult_fs=0;	get_clock_divder(rate, 32, &mclk_div, &mpll, &bclk_div, &mult_fs);		ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |			SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);	if (ret < 0)		return ret;	ret = snd_soc_dai_set_sysclk(cpu_dai, 0 , mpll, 0);	if (ret < 0)		return ret;			ret = snd_soc_dai_set_sysclk(codec_dai, 0 , mpll, 0);	if (ret < 0)		return ret;			ret = snd_soc_dai_set_clkdiv(cpu_dai, SUN5I_DIV_MCLK, mclk_div);	if (ret < 0)		return ret;			ret = snd_soc_dai_set_clkdiv(cpu_dai, SUN5I_DIV_BCLK, bclk_div);	if (ret < 0)		return ret;			ret = snd_soc_dai_set_clkdiv(codec_dai, 0, mult_fs);	if (ret < 0)		return ret;	return 0;}
开发者ID:pocketbook,项目名称:U7,代码行数:44,


示例23: mapasoc_fe_hw_params

static int mapasoc_fe_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;	int freq_in, freq_out, sspa_mclk, sysclk, sspa_div;	freq_in = 26000000;	if (params_rate(params) > 11025) {		freq_out = params_rate(params) * 512;		sysclk = 11289600;		sspa_mclk = params_rate(params) * 64;	} else {		freq_out = params_rate(params) * 1024;		sysclk = 11289600;		sspa_mclk = params_rate(params) * 64;	}	sspa_div = freq_out;	do_div(sspa_div, sspa_mclk);#if 1	snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |			    SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);	snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |			    SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM);#else	snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |			    SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);	snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |			    SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS);#endif	/* SSPA clock ctrl register changes, and can't use previous API */	snd_soc_dai_set_sysclk(cpu_dai, AUDIO_PLL, freq_out, 0);	snd_soc_dai_set_clkdiv(cpu_dai, 0, 0);	/* set i2s1/2/3/4 sysclk */	snd_soc_dai_set_sysclk(codec_dai, AUDIO_PLL, freq_out, 0);	/* set the interface to 44.1k sample rate */	snd_soc_dai_set_clkdiv(codec_dai, 0, 0x13721fbd);	return 0;}
开发者ID:GalaxyTab4,项目名称:maxicm_kernel_samsung_degaswifi,代码行数:44,


示例24: simtec_hw_params

/** * simtec_hw_params - update hardware parameters * @substream: The audio substream instance. * @params: The parameters requested. * * Update the codec data routing and configuration  settings * from the supplied data. */static int simtec_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->dai->codec_dai;	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;	int ret;	/* Set the CODEC as the bus clock master, I2S */	ret = snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_I2S |				  SND_SOC_DAIFMT_NB_NF |				  SND_SOC_DAIFMT_CBM_CFM);	if (ret) {		pr_err("%s: failed set cpu dai format/n", __func__);		return ret;	}	/* Set the CODEC as the bus clock master */	ret = snd_soc_dai_set_fmt(codec_dai, SND_SOC_DAIFMT_I2S |				  SND_SOC_DAIFMT_NB_NF |				  SND_SOC_DAIFMT_CBM_CFM);	if (ret) {		pr_err("%s: failed set codec dai format/n", __func__);		return ret;	}	ret = snd_soc_dai_set_sysclk(codec_dai, 0,				     CODEC_CLOCK, SND_SOC_CLOCK_IN);	if (ret) {		pr_err( "%s: failed setting codec sysclk/n", __func__);		return ret;	}	if (pdata->use_mpllin) {		ret = snd_soc_dai_set_sysclk(cpu_dai, S3C24XX_CLKSRC_MPLL,					     0, SND_SOC_CLOCK_OUT);		if (ret) {			pr_err("%s: failed to set MPLLin as clksrc/n",			       __func__);			return ret;		}	}	if (pdata->output_cdclk) {		int cdclk_scale;		cdclk_scale = clk_get_rate(xtal_clk) / CODEC_CLOCK;		cdclk_scale--;		ret = snd_soc_dai_set_clkdiv(cpu_dai, S3C24XX_DIV_PRESCALER,					     cdclk_scale);	}	return 0;}
开发者ID:12rafael,项目名称:jellytimekernel,代码行数:64,



注:本文中的snd_soc_dai_set_clkdiv函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ snd_soc_dai_set_dma_data函数代码示例
C++ snd_soc_dai_get_drvdata函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。