主题 : Tiny210v2( S5PV210 )平台下理解ALSA框架: 编写WM8960驱动 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 17217
精华: 0
发帖: 77
金钱: 390 两
威望: 78 点
贡献值: 0 点
综合积分: 154 分
注册时间: 2010-03-26
最后登录: 2017-11-10
10楼  发表于: 2012-12-23 20:30

 回 5楼(victorlinwen) 的帖子

.codec_name = "wm8960-codec.0-001a"  是codec->dai->name + i2c设备名称。一般是在codec.c即wm8960.c,i2c设备名称 = adapter(i2c adapter 0)+7bit地址(2字节格式输出。即001a).具体的科研soc-core.c
级别: 骑士
UID: 24262
精华: 0
发帖: 170
金钱: 850 两
威望: 170 点
贡献值: 0 点
综合积分: 340 分
注册时间: 2010-07-05
最后登录: 2017-10-14
11楼  发表于: 2012-12-25 12:35
强烈支持。。。。
级别: 骑士
UID: 5844
精华: 9
发帖: 64
金钱: 770 两
威望: 154 点
贡献值: 9 点
综合积分: 308 分
注册时间: 2009-05-11
最后登录: 2019-05-14
12楼  发表于: 2012-12-29 22:55
  8. 附加:wm8960 驱动最终版 ( 第3次更新)

上一次更新的时候,是反汇编完成了,但是板子没在身边,因此没有确认,在接下来的这一个星期里,一直在确认驱动的问题,直到刚才板子才出声,现在正一边放歌一边写呢:)

首先说一下代码的变化: 其实上次的代码基本就是最终版了,但着一个星期里面,一直在测试,添加了一些debug log 的内容;另外就是修改了几个宏。

ALSA框架我还没有理解完,这个星期一直卡在 DAC 没有enable这个问题上。也就是说,驱动已经是OK的,而是 DAPM 没有设置正确,导致 DAC 以及 route 经历的通路没有打开。

源代码在附件里面,如果想要在系统中听到声音,不限于android系统,我的系统不是android系统。大致进行下面几个步骤就可以:
1.  编译源代码成内核驱动模块.
2. 将驱动插入内核: insmod snd-soc-wm8960.ko  && insmod snd-soc-mini210-wm8960.ko
3. 交叉编译 alsa-utils, 需要使用 alsamixer 和 alsactl 这两个工具
4. 利用 alsactl store 从内核中得到声卡的相关设置并存储在 /var/lib/alsa/asound.state 文件中。 默认情况下所有的设置项都是off的。
    这就是我这一个星期都没听到声音。
5. 修改 asound.state ,将声音通路相关部分设置为 true,我用耳机听,因此主要打开DAC/headphone output等开关。 具体参考附件。
6. 利用  alsactl restore 将修改后的 asound.state 设置到内核中。
7. 默认驱动是 stanby状态,如果播放音乐,才会迁移到on状态,就可以听到歌声了。歌播放结束,又会回到 standby状态。
8. 如果觉得声音小,用 alsamixer 调节一下音量

附件: wm8960-driver.tar.gz (12 K) 下载次数:322
附件: asound.state.gz (1 K) 下载次数:297
我思故我在
级别: 侠客
UID: 11698
精华: 0
发帖: 61
金钱: 310 两
威望: 62 点
贡献值: 0 点
综合积分: 122 分
注册时间: 2009-12-18
最后登录: 2016-04-09
13楼  发表于: 2013-03-13 23:39
感谢...........................................
级别: 新手上路
UID: 69347
精华: 0
发帖: 23
金钱: 115 两
威望: 23 点
贡献值: 0 点
综合积分: 46 分
注册时间: 2012-05-05
最后登录: 2017-09-13
14楼  发表于: 2013-03-29 16:33
受教了,多谢楼主的分享。
级别: 新手上路
UID: 81346
精华: 0
发帖: 41
金钱: 210 两
威望: 42 点
贡献值: 0 点
综合积分: 82 分
注册时间: 2012-11-07
最后登录: 2017-10-29
15楼  发表于: 2013-05-16 16:58
收藏了!!!
级别: 新手上路
UID: 72505
精华: 0
发帖: 45
金钱: 230 两
威望: 46 点
贡献值: 0 点
综合积分: 90 分
注册时间: 2012-06-23
最后登录: 2020-05-06
16楼  发表于: 2013-05-20 00:24
非常感谢,楼主是高人啊
级别: 侠客
UID: 86171
精华: 0
发帖: 102
金钱: 520 两
威望: 104 点
贡献值: 0 点
综合积分: 204 分
注册时间: 2013-01-14
最后登录: 2015-11-16
17楼  发表于: 2013-06-08 19:37
引用第12楼happyzlz于2012-12-29 22:55发表的  :
  8. 附加:wm8960 驱动最终版 ( 第3次更新)

上一次更新的时候,是反汇编完成了,但是板子没在身边,因此没有确认,在接下来的这一个星期里,一直在确认驱动的问题,直到刚才板子才出声,现在正一边放歌一边写呢:)

首先说一下代码的变化: 其实上次的代码基本就是最终版了,但着一个星期里面,一直在测试,添加了一些debug log 的内容;另外就是修改了几个宏。
.......

这个  切换声道的怎么用啊 。 放哪里啊?
级别: 新手上路
UID: 93025
精华: 0
发帖: 8
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 16 分
注册时间: 2013-06-13
最后登录: 2014-01-16
18楼  发表于: 2013-06-13 16:42
楼主,我想问一下,我在linux3.0.8内核里面的sound/soc/s5pvxx/里面加上了你给的wm8960.h和wm8960.c及mini210_wm8960.c,然后编译内核生成了snd-soc-wm8960 .ko和 snd-soc-mini210-wm8960 .ko文件,这两个是需要在文件系统里面用Insmod加载的是么?我在板子上加载了两个Ko文件之后,用Mplayer播放歌显示
[AO OSS] audio_setup: Can't open audio device /dev/dsp: No such file or directory
[AO_ALSA] alsa-lib: conf.c:3601:(snd_config_update_r) Cannot access file /usr/share/alsa/alsa.conf
[AO_ALSA] alsa-lib: pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
[AO_ALSA] Playback open error: No such file or directory
怎样解决?求高人指点
级别: 新手上路
UID: 93025
精华: 0
发帖: 8
金钱: 45 两
威望: 9 点
贡献值: 0 点
综合积分: 16 分
注册时间: 2013-06-13
最后登录: 2014-01-16
19楼  发表于: 2013-06-21 14:48
楼主,我想问一下,现在我amixer controls中没有INPUT项,也没有MIC Boost Gain项,所以我录不了音,只能放音!希望高手帮忙解决问题,多谢!