歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

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

根據自己的理解翻譯了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.    
  16. static void __init omap_h4_init(void)  
  17. {  
  18.          (...)  
  19.          i2c_register_board_info(1, h4_i2c_board_info,  
  20.                          ARRAY_SIZE(h4_i2c_board_info));  
  21.          (...)  
  22. }  

這樣注冊之後,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