本文只介紹linux下i2c新驅動框架技術,老框架在原blog中有提及,這裡不詳述。
linux新的i2c驅動框架下,i2c裝置是以i2c client的形式存在的,即裝置i2c client與i2c驅動相對應。i2c裝置驅動可以理解成i2c client驅動。
在i2c匯流排驅動載入的時候,i2c bus驅動為每乙個匯流排建立了乙個i2c adapter,即介面卡。然後會i2c_scan_static_board_info,即遍歷i2c板卡資訊i2c_board_info,此結構體裡包含了系統相應i2c匯流排下所掛載的裝置資訊,通過遍歷i2c_board_info,為該匯流排下每乙個裝置描述例項化,即為每乙個裝置建立i2c_client,然後把新建立的i2c client裝置掛載到i2 bus上,在掛載i2c client裝置到匯流排的時候,發起經典的device和driver匹配過程。找到相應i2c裝置驅動。
過程如下圖:
i2c裝置驅動
1,i2c 裝置註冊 static struct i2c board info i2c2 devices i2c裝置一般在板級 中註冊 static void msm8916 add i2c deivces void 2,i2c驅動註冊 include static const struct i2c...
Linux驅動之I2C裝置驅動
核心 4.20 晶元 hym8563 rtc 下面的 分析主要都在注釋中,會按照驅動中函式的執行順序分析。static const struct i2c device id hym8563 id module device table i2c,hym8563 id static const stru...
linux裝置驅動之I2C
裝置結構體i2c client中addr的低8位表示裝置位址。裝置位址由讀寫位 器件型別和自定義位址組成,第7位是r w位,0表示寫,1表示讀,所以i2c裝置通常有兩個位址,即讀位址和寫位址型別器件由中間4位組成,這是由半導體公司生產的時候就已經固化了。自定義型別由低3位組成。由使用者自己設定,通常...