linux系统 wm9713声卡配置 记录
生活随笔
收集整理的這篇文章主要介紹了
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_MICac97_write(codec, 0x5c, 0x0002);ac97_write(codec, AC97_LINE, 0x0068);ac97_write(codec, AC97_VIDEO, 0xfe00); #elseac97_write(codec, AC97_VIDEO, 0xd612); #endifreturn 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, };轉載于:https://www.cnblogs.com/gcczhongduan/p/4228485.html
總結
以上是生活随笔為你收集整理的linux系统 wm9713声卡配置 记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谁把20岁上下的你给洗脑了
- 下一篇: win7 64 下安装ubuntu14.