linux I2C_client產生方法一
阿新 • • 發佈:2017-10-25
就會 client setup evm sta 總線 reg array bsp
\arch\arm\mach-omap2/board-am335xevm.c
static struct i2c_board_info am335x_i2c2_boardinfo[] = {
{
I2C_BOARD_INFO("rx8803", 0x64),
},
...
};
static void __init am335x_evm_i2c_init(void)
{
setup_pin_mux(i2c2_pin_mux);
omap_register_i2c_bus(3, 100, am335x_i2c2_boardinfo, ARRAY_SIZE(am335x_i2c2_boardinfo));
}
-
到這裏我們可以說就完成了第一種方式的實例化。
-
使用i2c_register_board_info去實例化必須知道我們使用的I2C設備是掛載到哪個總線上,並知道設備的地址。
-
在Linux啟動的時候會將信息進行收集,i2c適配器會掃描已經靜態註冊的i2c_board_info,通過調用i2c_register_board_info函數將包含所有I2C設備的i2c_board_info信息的i2c_devinfo變量加入到__i2c_board_list鏈表中,並調用i2c_new_device為其實例化一個i2c_client。
-
在驅動加載的時候遇到同名的i2c_board_info就會將i2c_client和driver綁定,並且執行driver的probe函數。
linux I2C_client產生方法一