- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LinuxALSA声卡驱动之八ASoC架构中的Platform
Art icles f rom LinkSprite学学习习中中心心
Linux ALSA声声卡卡驱驱动动之之八八 ::ASoC架架构构 中中的的Platf orm
2014- 03- 08 17:03:27 z o u , baoz hu
1. Platform驱驱动动在在ASoC中中的的作作用用
前面几章内容已经说过 ,ASoC被分为Machine ,Plat f orm Co ec三大部
件 ,Plat f orm驱动的主要作用是完成音频数据的管理 ,最终通过CPU的数字音频接
口 (DA I)把音频数据传送给Co ec进行处理 ,最终由Co ec输出驱动耳机或者是
喇叭的音信信号。在具体实现上 ,ASoC有把Plat f orm驱动分为两个部分 :
sn _soc_plat f orm_ river sn _soc_ ai_ river。其中 ,plat f orm_ river负责管
理音频数据 ,把音频数据通过 ma或其他操作传送至cpu ai中 , ai_ river则主要
完成cpu一侧的 ai的参数配置 ,同时也会通过一定的途径把必要的 ma等参数与
sn _soc_plat f orm_ river进行交互。
2. snd_soc_ platform_driver的的注注册册
通常 ,ASoC把sn _soc_plat f orm_ river注册为一个系统的plat f orm_ river ,不
要被这两个相像的术语所迷惑 ,前者只是针对ASoC子系统的 ,后者是来 自Linux 的
设备驱动模型。我们要做的就是 :
定义一个sn _soc_plat f orm_ river结构的实例 ;
在plat f orm_ river的probe 回调中利用ASoC的API :
sn _soc_regist er_plat f orm()注册上面定义的实例 ;
实现sn _soc_plat f orm_ river中的各个回调函数 ;
以kernel3.3中的/soun /soc/samsung/ ma .c为例 :
static struct snd_soc_platform_driver samsung_asoc_platform = {
.ops = dma_ops,
.pcm_new = dma_new,
.pcm_free = dma_free_dma_buffers,
};
static int __devinit samsung_asoc_platform_probe (struct platform_device *pdev)
{
return snd_soc_register_platform (pdev dev, samsung_asoc_platform);
}
static int __devexit samsung_asoc_platform_remove (struct platform_device *pdev)
{
snd_soc_unregister_platform (pdev dev);
return 0;
}
static struct platform_driver asoc_dma_driver = {
.driver = {
.name = samsung audio,
.owner = THIS_MODULE,
},
.probe = samsung_asoc_platform_probe,
.remove = __devexit_p (samsung_asoc_platform_remove),
};
module_platform_driver (asoc_dma_driver);
s nd_soc_ register_ platf orm() 该函数用于注册一个sn _soc_plat f orm ,只有注
册以后 ,它才可以被Machine驱动使用。它的代码已经清晰地表达了它的实现过
程 :
为sn _soc_plat f orm实例申请内存 ;
从plat f orm_ evice中获得它的名字 ,用于Machine驱动的匹配工作 ;
初始化sn _soc_plat f orm的字段 ;
把sn _soc_plat f orm实例连接到全局
您可能关注的文档
- initial catalog与database的区别.doc
- Inoue法制备超级感受态细胞丁香通.doc
- InSAR and Mathematical Modelling for Measuring Surface Deformation Due to Geothermal Water.pdf
- insearchoftheamberroom导学案.docx
- Instant Evaluation and Demystification of zeta(n),L(n,chi) that Euler,Ramanujan Missed II.pdf
- Integrability in Fluid Dynamics.pdf
- Instantaneous Power Analysis of a ThreePhase Electrical System by Sequence Components.pdf
- Integrated Product and Process Development (IPPD).ppt
- IntegratedWriting的基本类型.doc
- Intelligent Search of Correlated Alarms for GSM Networks with Modelbased Constraints.pdf
文档评论(0)