Есть 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 этот код заработал?