"./drivers/i2c/busses/i2c-s3c2410.c"是3.14.0內(nèi)核中三星SoC的i2c控制器驅(qū)動程序, 本文試圖通過對這個程序的分析, 剝離繁復(fù)的細(xì)節(jié), 總結(jié)一套編寫i2c主機(jī)控制器驅(qū)動的框架以及一個分析內(nèi)核驅(qū)動的流程.
匹配之前
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-->將主機(jī)控制器驅(qū)動在系統(tǒng)啟動的時候就注冊好
--1289-->這個驅(qū)動是基于platform總線的, 設(shè)備信息的部分在板級文件i2c_board_info中描述并作為platform_device隨內(nèi)核啟動被注冊, 所以控制器驅(qū)動在系統(tǒng)啟動的時候就可以工作了
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
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26