1. 程式人生 > >linux I2C_client產生方法一

linux I2C_client產生方法一

就會 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產生方法一