"./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中描述, 分析也是围绕这个对象展开

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式