一、在相應的平台檔案中新增i2c的註冊資訊
1)、建立乙個i2c_board_info結構體(平台檔案目錄arch\arm\mach-***)
struct tda_platform_data //這可以隨便定義自己想要的結構
;struct tda_platform_data tda_pdata
static struct i2c_board_info __initdata tda_i2c2_boardinfo = ,
}; 2)、註冊
omap_register_i2c_bus(2, 400, tda_i2c2_boardinfo,array_size(tda_i2c2_boardinfo)); //第乙個引數是通道,第二個引數是速率(400khz)
二、在驅動中以下資訊
struct tda_client
;static struct tda_client tda001;
static int tda_remove(struct i2c_client *client)
return 0;
}static int tda_probe(struct i2c_client *client, const struct i2c_device_id *id)
tda->client = client;
return 0;}
static const struct i2c_device_id tda_ids = ,,
};module_device_table(i2c, tda_ids);
static struct i2c_driver tda_driver = ;
int init_i2c2(void)
void deinit_i2c2(void)
三、新增讀寫函式
int tda_i2c_write(unsigned char reg,unsigned char value)
int tda_i2c_read(unsigned char reg,unsigned char *value)
四、其實 linux核心中就有很多呼叫i2c的例子,可以認真閱讀理解,然後再自己編寫就可以了。
Linux驅動 I2C匯流排
這裡以rk3288為例子,使用的是linux4.14,根據裝置樹節點i2c 與rk3x i2c driver,match之後,就會呼叫對應的probe rk3x i2c probe 這裡主要就是註冊乙個adapt i2c add adapter 也就是i2c控制器,或者說是i2c主裝置,既然是主裝置...
Linux驅動之I2C裝置驅動
核心 4.20 晶元 hym8563 rtc 下面的 分析主要都在注釋中,會按照驅動中函式的執行順序分析。static const struct i2c device id hym8563 id module device table i2c,hym8563 id static const stru...
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...