如果你也遇到了填充了id_match_table,compitible怎么看都一樣,但probe就是不執(zhí)行(讓我哭一會(huì)),你可以回頭看一下上一篇的模板,我們這里雖然使用的是設(shè)備樹匹配,但和platform的設(shè)備樹匹配只填充i2c_match_table不同,i2c_driver的設(shè)備樹匹配需要同時(shí)填充i2c_match_table和id_table兩個(gè)域,雖然后者是個(gè)空。如果你沒(méi)有填充后面的成員,不妨試一下我的這種寫法,我敢打賭你的probe也沒(méi)有執(zhí)行^-^。
問(wèn)題是明確的,探索是漫長(zhǎng)的,但是至少答案一定在源碼中,也一定出在匹配的源碼中,帶著這樣的思路,我從"i2c_add_driver"開(kāi)始一路狂追,結(jié)論是使用設(shè)備樹的話,只要id_match_table,不需要id_table!, 下面的i2c_device_match即可看出。

i2c_add_driver()
           └── i2c_register_driver
                      └── driver_register
                                 ├── driver_find
                                 │   ├── kset_find_obj
                                 │   ├── kobject_put
                                 │   └── to_driver
                                 └── bus_add_driver
                                            └── driver_attach
                                                       └── bus_for_each_dev
               &