LINUX.ORG.RU

Собственный модуль. На 2.4 работало, а на 2.6 - ...


0

0

Есть PCI-ная железка. Под нее на 2.4 был написан модуль. В момент загрузки модуля читалось конф.пространство этой железки, откуда добывали адреса портов, памяти, и номер прерывания, необходимые этой железке. Все это благополучно захватывалось и работало. При переходе на ядро 2.6 столкнулись с проблемой: номер прерывания читается не тот, что сама система определяет для этой платы. В итоге обработчик вешаем на одно прерывание, а в реале происходит другое. Да, порты и память продолжают определяться правильно.

вот кусок кода, работающего под 2.4: where = 0x3c; pci_read_config_byte(dev, where, &INT1); if(mes==1) printk («Interrupt1 %d\n», INT1);

// Interrupt request... rezult = request_irq(INT1, interrupt6202, SA_SHIRQ, DEV_NAME, interrupt6202); if ((rezult) && (mes==1) ) { printk(«Can't get IRQ line\n») ; }

Что надо исправить, чтобы и под 2.6 этот код заработал?


Тут похожая тема уже была. Надо брать номер прерывания из структуры pci-устройства, и только после выхова pci_enable_device() - до этого он может быть (а может и не быть, как повезет) там неправильным.

tim239 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.