「struct of_device_id」がドライバーで定義されていないが、デバイス ツリー (dts) ファイルで同じデバイス エントリに追加された互換性のある文字列であるという 1 つのシナリオを見ました。
以下は、チップのサンプル デバイス ツリー エントリです。
&i2c1 {
...
adv7ex: adv7ex@4a {
compatible = "adv7ex";
reg = <0x4a>;
};
...
};
以下は、I2C ドライバーとして登録されているチップのドライバーのサンプル コード スニペットです。
static struct i2c_device_id adv7ex_id[] = {
{ "adv7ex", ADV7EX },
{ }
};
MODULE_DEVICE_TABLE(i2c, adv7ex_id);
static struct i2c_driver adv7ex_driver = {
.driver = {
.owner = THIS_MODULE,
.name = "adv7ex",
},
.probe = adv7ex_probe,
.remove = adv7ex_remove,
.id_table = adv7ex_id,
};
module_i2c_driver(adv7ex_driver);
この場合、ドライバーに「of_device_id」構造定義がないため、デバイスからドライバーへのバインドがどのように行われるかを理解するのを手伝ってください。