static const struct file_operations snd_fops =
{
.owner = THIS_MODULE,
.open = snd_open,
.llseek = noop_llseek,
};
static int __init alsa_sound_init(void)
{
snd_major = major;
snd_ecards_limit = cards_limit;
if (register_chrdev(major, "alsa", &snd_fops)) {
//注册声卡主设备,设置声卡的回调函数
pr_err("ALSA core: unable to register native major device number %d\n", major);
return -EIO;
}
if (snd_info_init() < 0) {
unregister_chrdev(major, "alsa");
return -ENOMEM;
}
snd_info_minor_register();
return 0;
}
int __init snd_info_init(void)
{
struct proc_dir_entry *p;
p = proc_mkdir("asound", NULL);//创建asound根目录
if (p == NULL)
return -ENOMEM;
snd_proc_root = p;
#ifdef CONFIG_SND_OSSEMUL
{
struct snd_info_entry *entry;
if ((entry = snd_info_create_module_entry(THIS_MODULE, "oss", NULL)) == NULL)
return -ENOMEM;
entry->mode = S_IFDIR | S_IRUGO | S_IXUGO;
if (snd_info_register(entry) < 0) {
snd_info_free_entry(entry);
return -ENOMEM;
}
snd_oss_root = entry;
}
#endif
#if IS_ENABLED(CONFIG_SND_SEQUENCER)
{
Android音频驱动-ASOC之Sound Card创建
最新推荐文章于 2024-01-12 16:08:03 发布
本文详细探讨了Android中ASOC(Advanced Smart Audio Codec)框架下的Sound Card创建过程,通过进入Android系统的proc/asound目录,展示了card0等关键信息,揭示了Android音频驱动的工作原理。
摘要由CSDN通过智能技术生成