Добрый день! Подскажите пожалуйста кто знает. Работаю с модулем beaglebone black, debian (kernel 3.8). Недавно запустил на нем ethernet микросхему wiznet w5300. Изначально была проблема в том, что драйвер не начинал даже запускаться. В device tree была прописана строка compatible = «wiznet,w5300»;, однако в логах ядра быбло четко видно что gpmc на котором висит данная микросхема успешно запущен, а вот драйвер даже не начинает загрузку. (Что бы убедиться в этом перекомпилировал ядро добавив в драйвер w5300 в начало функции probe prink(«Текст»);. Данная проблема была решена путем изменения в драйвере w5300 следующих строк
Было:
static SIMPLE_DEV_PM_OPS(w5300_pm_ops, w5300_suspend, w5300_resume);
static struct platform_driver w5300_driver = {
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
.pm = &w5300_pm_ops,
},
.probe = w5300_probe,
.remove = w5300_remove,
};
module_platform_driver(w5300_driver);
Стало
static SIMPLE_DEV_PM_OPS(w5300_pm_ops, w5300_suspend, w5300_resume);
static const struct of_device_id w5300_dt_ids[] = {
{ .compatible = "wiznet,w5300" },
{ .compatible = "w5300" },
{ }
};
MODULE_DEVICE_TABLE (of, w5300_dt_ids);
static struct platform_driver w5300_driver = {
.driver = {
.name = DRV_NAME,
.owner = THIS_MODULE,
.pm = &w5300_pm_ops,
.of_match_table = w5300_dt_ids,
},
.probe = w5300_probe,
.remove = w5300_remove,
};
module_platform_driver(w5300_driver);
В итоге после ещё некоторых извращений удалось таки успешно запустить микросхему. После чего встала задача аналогичным образом запустить микросхему w5100, которая отличается тем, что висит на spi а не на параллельной шине. Однако, драйвер микросхемы не запускается, и аналогичное изменение драйвера не помогло. В device tree считаю что принципиальных ошибок, из за которых может не грузиться драйвер нет, так как стоит заменить в copmatible w5100 на другую микросхему, как в части случаев все работает, в части нет. Кто знает, из-за чего можетне запускаться драйвер, прописанный в compatible?