我不知道我是否可以在这里问。
我正在尝试了解Linux中的Alsa驱动程序。
我对编解码器驱动程序,机器驱动程序和平台驱动程序有所了解。
编解码器驱动程序: 此驱动程序用于编解码器特定的内容。
计算机驱动程序: 此驱动程序绑定编解码器驱动程序和平台驱动程序。
平台驱动程序: 此驱动程序注册与平台相关的dai和DMA。
最近我找到了一个平台驱动程序,他们使用snd_pcm_ops
并且他们没有在他们的探测中注册任何dai ops和DMA相关的东西。
/* define all pcm ops of hi6210 pcm */
static struct snd_pcm_ops hi6210_pcm_ops = {
.open = hi6210_pcm_open,
.close = hi6210_pcm_close,
.ioctl = snd_pcm_lib_ioctl,
.hw_params = hi6210_pcm_hw_params,
.hw_free = hi6210_pcm_hw_free,
.prepare = hi6210_pcm_prepare,
.trigger = hi6210_pcm_trigger,
.pointer = hi6210_pcm_pointer,
};
/* Code from an Android mobile kernel */
我只是想了解我们应该使用snd_pcm_ops
注册我们的平台驱动程序的时间和原因。
我找到了doc,我无法理解我们可以使用它们的情况。
我们从未在RPI i2s驱动程序中使用过那些。
有人能解释一下这个吗?