asoc总结 2

27 篇文章 2 订阅

1 因为 snd_soc_register_codec snd_soc_register_dai 函数都需要 platform_device 相关数据。
所以 在probe 函数中调用
2 snd_soc_register_codec 中 snd_soc_codec_driver 没用name,那么它会继承 probe函数的参数 platform_device的名字
同样 snd_soc_register_dai中的 snd_soc_dai_drive 也没用name,它也会继承 probe函数的参数 platform_device的名字。
3
codec 跟 platform 都用 snd_soc_dai_driver 用来描述 各自的dai
snd_soc_codec_driver 中的 ops 涉及到 启动 关闭 参数设置
4
控制接口:snd_soc_codec_driver 作为codec的驱动,跟 snd_soc_platform_driver 驱动一样辅助自己模块的dai。

codec注意 :

1
.codec_name = “wm8976-codec”, // 对应驱动 codec 文件
.codec_dai_name = “wm8976-iis”, // 对应驱动 codec 文件
.cpu_dai_name = “s3c2440-iis”,

2 其中两个name 会出现在 codec 文件中

3
两个关键点
DAI:snd_soc_dai_driver 描述的是codec的参数
控制接口:snd_soc_codec_driver

4
int snd_soc_register_codec(struct device *dev,
const struct snd_soc_codec_driver *codec_drv,
struct snd_soc_dai_driver *dai_drv,
int num_dai)
上面两个关键点 通过这个函数进行绑定

5 snd_soc_codec_driver (控制接口) 是做什么的?
猜测是 对codec 进行读写
参考
Alsa驱动snd_soc_read_driver的实现

platform注意:

1
关键点
DAI:snd_soc_dai_drive
2
使用
snd_soc_register_dai 对 snd_soc_dai_drive结构体进行注册
3
snd_soc_dai_drive 描述的是 平台(platform)的参数

platform 扩展

1 关键点
snd_soc_platform_driver

2 snd_soc_platform_driver 作用 (用来控制,似乎主流是dma。辅助cpu跟dai)
a 负责管理音频数据
b 把音频数据通过dma或其他操作传送至cpu dai

3 链接函数
snd_soc_register_platform (同样会使 snd_soc_platform_driver 继承 platform_device 的name

4 snd_soc_platform_driver 中的 ops 中的 open函数会
把snd_pcm_substream中的runtime中的hw 成员进行赋值,类型是snd_pcm_hardware.
(platform 里面的ops的open,会在应用层的open设备节点的时候,就调用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值