近期在搞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,
};

最新文章

  1. hadoop 集群跑的时候用到hbasejar 文件的引用问题
  2. 60. Insert Interval && Merge Intervals
  3. HDOJ ----Phone List
  4. ASP.NET中MEMCACHED
  5. XML解析的例子
  6. mac linux netstat -n
  7. 201521123010 《Java程序设计》第5周学习总结
  8. HTML5新增的标签及使用
  9. JAVA字符串
  10. 2017-2018-2 20165237 实验二《Java面向对象程序设计》实验报告
  11. MySQL:对于几个测试题的详细研究
  12. 使用if语句时应注意的问题(初学者)
  13. django的model操作整理
  14. 19 模块之shelve xml haslib configparser
  15. appcompat_v7报错
  16. za
  17. Spring Boot @SpringApplicationConfiguration 不能导入的问题
  18. (转)为C# Windows服务添加安装程序
  19. 【Python】python操作mysql
  20. ZT 为什么pthread_cond_t要和pthread_mutex_t同时使用 || pthread/Linux多线程编程

热门文章

  1. centos7 docker镜像源设置
  2. 【Codeforces Round #427 (Div. 2) D】Palindromic characteristics
  3. 计算机视觉(ComputerVision, CV)相关领域的站点链接
  4. 使用maven的tomcat:run进行web项目热部署
  5. JavaScript全讲-架构原则解析
  6. 后台vb校验是否GUID
  7. 1.23 Python知识进阶 - 面向对象编程
  8. 最简单的实体手机测试移动端前端Vue Cli3搭建网站的方法
  9. 005 python 整数类型/字符串类型/列表类型/可变/不可变
  10. powerdesigner逆向自动生成mysql说明文档、PDM