第一范文网 - 专业文章范例文档资料分享平台

alsa(audio)驱动分析

来源:用户分享 时间:2025/5/19 18:02:46 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

Tech

Alsa驱动分析

Guide

How to Mount Maemo File System——Guide System Analysis and Design Documents Issue: <0.5> Issue Date: <10/29/2007> Revision History Date <31/12/2008> Issue <0.5> First draft Description Author Wylhistory 目录

1. 2. 3.

ABSTRACT............................................................................................................................................................................. 3 INTRODUCTION ................................................................................................................................................................... 3 音频驱动框架介绍 .............................................................................................................................................................. 3

3.1 音频设备的注册............................................................................................................................................................. 3 3.2 音频驱动的注册............................................................................................................................................................. 4 3.2.1 Probe函数的调用 ................................................................................................................................................. 4 3.2.2 Soc_probe函数...................................................................................................................................................... 4 4.

通常的使用流程的分析 ..................................................................................................................................................... 6 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 5.

open过程介绍........................................................................................................................................................ 6 snd_pcm_hw_params流程分析 ......................................................................................................................... 8 prepare流程分析 .................................................................................................................................................. 9 write的流程..........................................................................................................................................................15 使用流程的总结t ................................................................................................................................................18

AMIXER调用的相关逻辑.................................................................................................................................................18 5.1.1 5.1.2

Amixer调用的上层逻辑 .....................................................................................................................................19 Amixer的内核流程..............................................................................................................................................20

6. 7.

总结 ........................................................................................................................................................................................21 未讨论....................................................................................................................................................................................21

?Tech, 2005 Page 2 of 22

How to Mount Maemo File System——Guide System Analysis and Design Documents

Issue: <0.5> Issue Date: <10/29/2007> 1. 2.

Abstract Introduction

主要是讲2.6.21内核里面的alsa驱动的架构,以及在我们的平台上需要注意的东西。. 分成几个部分:

驱动整体框架,一个简单的播放流程介绍,以及我们的平台需要注意的地方;

3.

3.1

音频驱动框架介绍

音频设备的注册

static struct snd_soc_machine snd_soc_machine_littleton = {.name = \.dai_link = littleton_dai,.num_links = ARRAY_SIZE(littleton_dai),};littleton_init被引用platform_set_drvdata(littleton_snd_device, &littleton_snd_devdata);这个数据结构会被其它地方通过platform_get_drvdata(pdev)来取出来。littleton_snd_devdata.dev = &littleton_snd_device->dev;ret = platform_device_add(littleton_snd_device);这里是设备注册struct snd_soc_platform pxa3xx_soc_platform = {.name= \audio\.pcm_ops = &pxa3xx_pcm_ops,.pcm_new= pxa3xx_pcm_new,被引用.pcm_free= pxa3xx_pcm_free_dma_buffers,};这里的static struct snd_soc_device littleton_snd_devdata = {.machine = &snd_soc_machine_littleton,.platform = &pxa3xx_soc_platform,.codec_dev = &soc_codec_dev_micco,};被引用被引用struct snd_soc_codec_device soc_codec_dev_micco = {.probe = micco_soc_probe,.remove = micco_soc_remove,.suspend =micco_soc_suspend,.resume = micco_soc_resume,}; 这就是设备的注册了,设备本身非常简单,复杂的是这个设备的drvdata,drvdata里面包含了三部分,关于machine的,关于platform的,关于codec的,从大体上说machine主要是关于cpu这边的也可以说是关于ssp本身设置的,而platform是关于平台级别的,就是说这个平台本身实现相关的,而codec就是与我们所用的音频codec相关的;基本上这里就可以看出整个音频驱动的架构特点,就是从alsa层进入——>内核alsa层接口->core层,这里再调用上面说的三个方面的函数来处理,先是cpu

?Tech, 2005 Page 3 of 22

How to Mount Maemo File System——Guide System Analysis and Design Documents 级别的,再是platform的,再是codec级别的,这几层做完了,工作也就做得差不多了,后面会详细讲讲,当然这个执行顺序不是固定的(不知道是不是marvel写代码不专业导致的),但多半都包括了这三部分的工作; 3.2

Issue: <0.5> Issue Date: <10/29/2007> 音频驱动的注册

Probe函数的调用

static struct platform_driver soc_driver = {.driver= {.name= \},.probe= soc_probe,.remove= soc_remove,.suspend= soc_suspend,.resume= soc_resume,};3.2.1

snd_soc_initplatform_driver_register(&soc_driver)这里是驱动注册调用soc_probe 前面讲了设备的注册,里面的设备的名字就是”soc-audio”,而这里的driver的注册时名字也是” soc-audio”,对于platform的设备匹配的原则是根据名字的,所以将会匹配成功,成功后就会执行audio驱动提供的probe函数soc_probe; 3.2.2

Soc_probe函数

这个函数本身架构很简单,和前面说的逻辑一样,先调用了cpu级别的probe,再是codec级别的,最后是platform的(这里三个的顺序就不一样),但是因为cpu级别的和platform级别的都为空,最后都调用了codec级别的probe函数,也就是micco_soc_probe,这个函数基本上就完成了所有应该完成的音频驱动的初始化了;简单的划分,分成两部分,对上和对下:对上主要是注册设备节点,以及这些设备节点对应的流的创建;对下主要是读写函数的设置,codec本身的dai设置,初始化寄存器的设置,最重要的就是后面的control的创建和门的创建了,如下图所示:

?Tech, 2005 Page 4 of 22

搜索更多关于: alsa(audio)驱动分析 的文档
alsa(audio)驱动分析.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c19fli5ekjq5a66i6tkx2_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top