歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux kernel 2.6.34:i2c驅動如何編寫

Linux kernel 2.6.34:i2c驅動如何編寫

日期:2017/2/28 16:01:44   编辑:Linux教程

關於如何建立i2c_client的方法參考 http://www.linuxidc.com/Linux/2011-12/49040.htm。

2.6.34的i2c子系統基本不再區分legacy model和standard drivermodel的驅動了,現在可以說只有一種。

現在i2c設備驅動的編寫方式可以分為兩大類(我自己分的,不是權威分法),一類是不注冊i2c_driver。

因為和i2c設備的通信不需要i2c_driver,這僅僅是一個輔助性的結構體,

和i2c設備的通信只需要i2c_client就可以了。

直接獲得i2c_client的方法就是使用i2c_new_device()和i2c_new_probed_device()。也就是枚舉產生i2c_client的方法2。

第二類方式就是需要編寫並注冊i2c_driver了。這種方法的思想是分別注冊i2c_client和i2c_driver,

然後讓內核的驅動模型將i2c_client和i2c_driver進行匹配,調用i2c_driver的probe成員函數。

i2c_driver必須初始化的成員有:

int (*probe)(struct i2c_client *, const struct i2c_device_id *); int (*remove)(struct i2c_client *);

const struct i2c_device_id *id_table;//支持的i2c_client名字列表。

其他成員看具體情況而定。

建立i2c_client的方法有5種s,除去方法2,其他方法都和本類驅動配合使用。

參考http://www.linuxidc.com/Linux/2011-12/49040.htm。

能夠和i2c_device_id中的名字匹配的i2c_client注冊以後,i2c_driver的probe函數會被調用。用戶可以在這個函數中為設備申請私有數據結構。

Copyright © Linux教程網 All Rights Reserved