"./drivers/i2c/busses/i2c-s3c2410.c"是3.14.0内核中三星SoC的i2c控制器驱动程序, 本文试图通过对这个程序的分析, 剥离繁复的细节, 总结一套编写i2c主机控制器驱动的框架以及一个分析内核驱动的流程.
匹配之前
1287 static int __init i2c_adap_s3c_init(void)1288 {1289 return platform_driver_register(&s3c24xx_i2c_driver);1290 }1291 subsys_initcall(i2c_adap_s3c_init);
--1291-->将主机控制器驱动在系统启动的时候就注册好
--1289-->这个驱动是基于platform总线的, 设备信息的部分在板级文件i2c_board_info中描述并作为platform_device随内核启动被注册, 所以控制器驱动在系统启动的时候就可以工作了
1275 static struct platform_driver s3c24xx_i2c_driver = {1276 .probe = s3c24xx_i2c_probe,1277 .remove = s3c24xx_i2c_remove,1278 .id_table = s3c24xx_driver_ids,1279 .driver = {1280 .owner = THIS_MODULE,1281 .name = "s3c-i2c",1282 .pm = S3C24XX_DEV_PM_OPS,1283 .of_match_table = of_match_ptr(s3c24xx_i2c_match),1284 },1285 };
既然是遵循的platform编写, 那么所有的信息都要在一个platform_driver中描述, 分析也是围绕这个对象展开
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26