LinuxALSA声卡驱动之八ASoC架构中的Platform.pdfVIP

LinuxALSA声卡驱动之八ASoC架构中的Platform.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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实例连接到全局

文档评论(0)

yaobanwd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档