Of_match_ptr не может соответствовать узлу дерева устройств, но id_table может. почему?Linux

Ответить
Гость
 Of_match_ptr не может соответствовать узлу дерева устройств, но id_table может. почему?

Сообщение Гость »


У меня возникла проблема, когда я использую of_match_table для сопоставления узла дерева устройств.
Информация узла дерева устройства (лазерное радио) подобна этой

Код: Выделить всё

/{
i2c@7000c000{
laser-radio@29{
compatible = "lyz,vl53l0x";
reg = ;
};
};
};
and when i just use of_match_table

Код: Выделить всё

static const struct of_device_id vl53l0x_dt_match[] = {
{.compatible = "lyz,vl53l0x", },
{ }
};
MODULE_DEVICE_TABLE(of, vl53l0x_dt_match);

struct i2c_driver vl53l0x_driver = {
.driver =
{
.name = "vl53l0x",
.owner = THIS_MODULE,
.of_match_table = vl53l0x_dt_match,
},
.probe = vl53l0x_probe,
.remove = vl53l0x_remove,
};
this dosen`t work.but if i use id_table

Код: Выделить всё

static const struct i2c_device_id vl53l0x_id[] = {{"vl53l0x", 0}, {}};
MODULE_DEVICE_TABLE(i2c, vl53l0x_id);

static const struct of_device_id vl53l0x_dt_match[] = {
{.compatible = "lyz,vl53l0x", },
{ }
};
MODULE_DEVICE_TABLE(of, vl53l0x_dt_match);

struct i2c_driver vl53l0x_driver = {
.driver =
{
.name = "vl53l0x",
.owner = THIS_MODULE,
.of_match_table = vl53l0x_dt_match,
},
.probe = vl53l0x_probe,
.remove = vl53l0x_remove,
.id_table = vl53l0x_id,
};
it works.i don`t know why.and when i print compatible it alse show "lyz,vl53l0x".
how to use of_match_table to match a node?did i do something wrong?


Источник: https://stackoverflow.com/questions/781 ... le-can-why
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»