需要帮助了解alsa驱动程序

时间:2017-09-25 17:39:56

标签: driver alsa

我试图在amlogic设备上调试音响系统。 amixer和alsamixer没有按预期工作,amixer可以使系统崩溃。我所挣扎的是,驱动程序通过构建snd_kcontrol对象来传递访问硬件寄存器的方法,所有这些都在ALSA网站上编写ALSA驱动程序中所述。但是amixer cset从control.c调用snd_ctl_elem_write,它引用snd_ctl_t对象中的element_write。

我看不到定义的snd_kcontrol和任何snd_ctl_t对象之间的任何链接,因此无法看到amixer应该如何写入硬件。通常如何完成?

1 个答案:

答案 0 :(得分:0)

在用户空间中,控制设备由snd_ctl_t表示,其中包含设备节点的文件句柄。 element_write指向发出系统调用的snd_ctl_hw_elem_write()

在内核中,打开的设备文件由struct snd_ctl_file表示,该文件链接到struct snd_card