在你的板子的linux内核有如下文件:/arch/arm/mach-xxxx/board_xxxx.c,该文件中,有struct i2c_board_info __initdata i2c_info,该结构体列表中,有你的这个 wifi driver的i2c信息,这两份信息,通过 wifi_rf_i2c_id 里面的 RDA_WIFI_RF_I2C_DEVNAME 名称来匹配,名称一致,则成功添加到对应的i2c总线列表中,在这个注册过程中,会构造一个 i2c_client 对象,其实i2c_master_send需要一个 i2c_client对象,这个i2c_client对象中,就包含着 i2c总线的编号
1. MODULE_DEVICE_TABLE (usb, skel_table);
该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数。内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pcimap中,当depmod结束之后,所有的PCI设备连同他们的模块名字都被该文件列出。当内核告知热插拔系统一个新的PCI设备被发现时,热插拔系统使用modules.pcimap文件来找寻恰当的驱动程序。
MODULE_DEVICE_TABLE的第一个参数是设备的类型,如果是USB设备,那自然是usb(如果是PCI设备,那将是pci,这两个子系统用同一个宏来注册所支持的设备)。后面一个参数是