zoukankan      html  css  js  c++  java
  • linux系统 wm9713声卡配置 记录

    近期在搞wm9713的外音播放和耳机的检測,搞了几天不负所望,最终搞定了。现记录例如以下,开发板为real210 v6.2版本号:

    假设要让外音输出,那么确保wm9713的0x1c寄存器的值为0x1200,耳机输出为0x00a0,当然两者也可同一时候输出,值为0x12a0。

    另外还要设置AC97_EXTENDED_MSTATUS寄存器(即0x3e寄存器),设置的值为0xb900(打开喇叭输出使能,第7、8位控制喇叭  9、10位控制耳机,设置为0为开启)。

    当然音量的设置也是必须的AC97_MASTER(0x02)设置外音音量,AC97_HEADPHONE(0x04)设置耳机音量,我这里的值设置的为0x0000和0x0606,当中0x0000是为最大声音。

    要有耳机检測,那么还要设置两个寄存器(其它开发板可能是由CPU来检測是否有耳机插入,这里是由wm9713自己检測,CPU不干预)AC97_INT_PAGING和AC97_ADDITIONAL_FUNC1(即0x24和0x5a),值各自是0x10和0x40。

    以下贴出这些设置的整个函数,须要的话直接使用就可以(codecs文件夹下的wm9713.c文件):

    #define AC97_ADDITIONAL_FUNC1	0x5a
    static int wm9713_hifi_hw_params(struct snd_pcm_substream *substream,
    				struct snd_pcm_hw_params *params,
    				struct snd_soc_dai *dai)
    {
    	struct snd_soc_codec *codec = dai->codec;
    	ac97_write(codec, AC97_POWERDOWN, 0x0000);
    	ac97_write(codec, AC97_PHONE, 0x0808);
    	ac97_write(codec, AC97_EXTENDED_MID, 0xf803);
    	ac97_write(codec, AC97_EXTENDED_MSTATUS, 0xb900);//这里要打开喇叭输出使能,第7、8位控制喇叭  9、10位控制耳机,设置为0为开启
    
    	ac97_write(codec, AC97_MASTER, 0x0000);
    	ac97_write(codec, AC97_HEADPHONE, 0x0606);
    	ac97_write(codec, AC97_REC_GAIN, 0x12a0);//0x00a0 耳机输出   0x1200 喇叭输出
    
    	ac97_write(codec, AC97_INT_PAGING, 0x10);//使能耳机插入检測
    	ac97_write(codec, AC97_ADDITIONAL_FUNC1, 0x40);//设置检測耳机插入的IOport
    #ifdef CONFIG_SOUND_WM9713_INPUT_STREAM_MIC
    	ac97_write(codec, 0x5c, 0x0002);
    	ac97_write(codec, AC97_LINE, 0x0068);
    	ac97_write(codec, AC97_VIDEO, 0xfe00);
    #else
    	ac97_write(codec, AC97_VIDEO, 0xd612);
    #endif
    	return 0;
    }
    static struct snd_soc_dai_ops wm9713_dai_ops_hifi = {
    	.hw_params	= wm9713_hifi_hw_params,
    	.prepare	= ac97_hifi_prepare,
    	.set_clkdiv	= wm9713_set_dai_clkdiv,
    	.set_pll	= wm9713_set_dai_pll,
    };


    
    
    
  • 相关阅读:
    POJ 1795 DNA Laboratory
    CodeForces 303B Rectangle Puzzle II
    HDU 2197 本源串
    HDU 5965 扫雷
    POJ 3099 Go Go Gorelians
    CodeForces 762D Maximum path
    CodeForces 731C Socks
    HDU 1231 最大连续子序列
    HDU 5650 so easy
    大话接口隐私与安全 转载
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4228485.html
Copyright © 2011-2022 走看看