Пишу с нуля драйвер PCI устройства под linux. В основном использую LDD v3.
Одновремено разрабатываю само устройство. В зависимости от прошивки(архитектуры) по разному ведет себя инициализация устройства в системе.
Теперь подробнее, что касается инициализации.
static struct pci_device_id pci_altera_id_table[] ={
{ PCI_DEVICE(0x1172,0x4)},
{0,},
};
static struct pci_driver Alt_PCIe_driver = {
.name = Alt_device_name,
.id_table = pci_alt_id_table,
.probe = Alt_enable_device,
.remove = Alt_disable_device,
};
static int __init Alt_register_driver(void)
{
int err;
err = pci_register_driver(&Alt_PCIe_driver);
}
static int Alt_enable_device(struct pci_dev *pdev, const struct pci_device_id *id)
{
int err;
printk("<1>Exec enable_device\n");
err = pci_enable_device(pdev);
return err;
};
module_init(Alt_register_driver);
module_exit(Alt_unregister_driver);
Так вот, в зависимости от прошивки устройства, не выполняется запуск функции Alt_enable_device, при этом pci_register_driver всегда возвращает 0.
Куда копать дальше??