我试图在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应该如何写入硬件。通常如何完成?
答案 0 :(得分:0)
在用户空间中,控制设备由snd_ctl_t
表示,其中包含设备节点的文件句柄。 element_write
指向发出系统调用的snd_ctl_hw_elem_write()
。
在内核中,打开的设备文件由struct snd_ctl_file
表示,该文件链接到struct snd_card
。