- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux声卡驱动分析
Linux soc声卡构架分析(DMA)
以S3C2440为例进行分析,对应的文件linux-2.6.32.2/sound/soc/s3c24xx/s3c24xx_uda134x.c
其中module_init入口内容为:
357 static int __init s3c24xx_uda134x_init(void)
358 {
359 return platform_driver_register(s3c24xx_uda134x_driver);
360 }
359行是一个平台驱动的注册函数,注册的驱动是s3c24xx_uda134x_driver。内容如下:
348 static struct platform_driver s3c24xx_uda134x_driver = {
349 .probe = s3c24xx_uda134x_probe,
350 .remove = s3c24xx_uda134x_remove,
351 .driver = {
352 .name = s3c24xx_uda134x,
353 .owner = THIS_MODULE,
354 },
355 };
由上面的name = s3c24xx_uda134x可知,这个驱动对应的平台设备早在系统启动时在dev_init中注册进来了,所以接下来的事情就是直接调用probe方法。
290 static int s3c24xx_uda134x_probe(struct platform_device *pdev)
291 {
292 int ret;
293
294 printk(KERN_INFO S3C24XX_UDA134X SoC Audio driver\n);
295
296 s3c24xx_uda134x_l3_pins = pdev-dev.platform_data;
297 if (s3c24xx_uda134x_l3_pins == NULL) {
298 printk(KERN_ERR S3C24XX_UDA134X SoC Audio:
299 unable to find platform data\n);
300 return -ENODEV;
301 }
302 s3c24xx_uda134x.power = s3c24xx_uda134x_l3_pins-power;
303 s3c24xx_uda134x.model = s3c24xx_uda134x_l3_pins-model;
304
305 if (s3c24xx_uda134x_setup_pin(s3c24xx_uda134x_l3_pins-l3_data,
306 data) 0)
307 return -EBUSY;
308 if (s3c24xx_uda134x_setup_pin(s3c24xx_uda134x_l3_pins-l3_clk,
309 clk) 0) {
310 gpio_free(s3c24xx_uda134x_l3_pins-l3_data);
311 return -EBUSY;
312 }
313 if (s3c24xx_uda134x_setup_pin(s3c24xx_uda134x_l3_pins-l3_mode,
314 mode) 0) {
315 gpio_free(s3c24xx_uda134x_l3_pins-l3_data);
316 gpio_free(s3c24xx_uda134x_l3_pins-l3_clk);
317 return -EBUSY;
318 }
319
320 s3c24xx_uda134x_snd_device = platform_device_alloc(soc-audio, -1);
321 if (!s3c24xx_uda134x_snd_device) {
322 printk(KERN_ERR S3C24XX_UDA134X SoC Audio:
323 Unable to register\n);
324 return -ENOMEM;
325 }
326
327 platform_set_drvdata(s3c24xx_uda134x_sn
您可能关注的文档
- 2017年瑞士留学:瑞士意大利语区高等专业学院简介.doc
- 城轨监测概要.doc
- 2015年训练题11.doc
- 实 习 报 告 书 讲 解(写报告时可用).doc
- 研究生 阅读文章 第一次.doc
- 汽车离合器英语论文.doc
- 浙江省高考题阅读D篇.doc
- 雅思听力词汇1.doc
- 利用MasterCAM对FANUC_0i程序后处理修改.doc
- register_chrdev代码分析.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)