ALSA声卡驱动创建过程

参考linux内核:3.4.99

一.概述

ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构。在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调用alsa-lib提供的API,即可以完成对底层音频硬件的控制。


二.声卡的建立(参考/sound/arm/pxa2xx-ac97.c)

从probe函数开始看起:

pxa2xx_ac97_probe()
  |-->snd_card_create() 创建声卡芯片专用数据
  |   |-->snd_ctl_create()创建control控制设备
  |   |    |-->snd_device_new()-->snd_ctl_dev_register()
  |   |                            |-->snd_register_device()创建control字符设备,注册file_ops结构体
  |   |                                |-->snd_register_device_for_dev()此时创建了controlC%i设备
  |   |-->snd_info_card_create()创建该声卡的proc文件
  |
  |-->pxa2xx_pcm_new()
  |      |-->snd_pcm_new()创建声卡PCM数据设备
  |      |       |-->_snd_pcm_new()-->snd_pcm_dev_register()
  |      |                              |-->snd_register_device_for_dev()创建pcm字符设备,注册file_ops结构体
  |      |                                  |-->snd_register_device_for_dev()此时创建了pcmC%iD%ip pcmC%iD%ic设备
  |      |              
  |      |-->snd_pcm_set_ops(PLAYBACK) 设置播放参数
  |          snd_pcm_set_ops(CAPTURE)  设置录音参数
  |
  |-->snd_card_register()注册声卡


你可能感兴趣的:(linux驱动之ALSA)