歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> i2c--2.6.34文檔:如何枚舉產生i2c_client

i2c--2.6.34文檔:如何枚舉產生i2c_client

日期:2017/2/28 16:01:45   编辑:Linux教程

根據自己的理解翻譯了http://lxr.linux.no/linux+v2.6.34/Documentation/i2c/instantiating-devices中關於枚舉建立i2c_client的文檔。有異議或疑問請參照原文,畢竟內核的文檔才是真正的精華。s

方法1:使用總線號聲明設備。

在內核的初始化中定義設備的信息。前提是內核編譯的時候已經確定有哪些i2c設備和它們的地址,還要知道連接的總線的編號。

比如在/arch/arm/mach-xxxx/board_xxxx.c中可以有這麼一段代碼來注冊i2c設備的信息。

  1. static struct i2c_board_info __initdata h4_i2c_board_info[] = {
  2. {
  3. I2C_BOARD_INFO("isp1301_omap", 0x2d),
  4. .irq = OMAP_GPIO_IRQ(125),
  5. },
  6. { /* EEPROM on mainboard */
  7. I2C_BOARD_INFO("24c01", 0x52),
  8. .platform_data = &m24c01,
  9. },
  10. { /* EEPROM on cpu card */
  11. I2C_BOARD_INFO("24c01", 0x57),
  12. .platform_data = &m24c01,
  13. },
  14. };
  15. static void __init omap_h4_init(void)
  16. {
  17. (...)
  18. i2c_register_board_info(1, h4_i2c_board_info,
  19. ARRAY_SIZE(h4_i2c_board_info));
  20. (...)
  21. }

這樣注冊之後,i2c_adapter注冊的時候就會掃描所有的已注冊的2c_board_info,並為連接自己的i2c設備建立一個i2c_client。這樣在2c_board_info中的同名i2c_driver注冊的時候,i2c_client就會和i2c_driver綁定了,i2c_driver的probe函數被調用。

Copyright © Linux教程網 All Rights Reserved