關於如何建立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函數會被調用。用戶可以在這個函數中為設備申請私有數據結構。