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