>>About the chunk you didn't understand. >>The function must return an unsigned int, therefore "return -ENODEV;" is >>wrong. > > > ->init_chipset method returns either small positive number (irq) or BIG > positive number in case of error ((unsigned int) -ENODEV). In > do_ide_setup_pci_device() function ->init_chipset return value is casted to int > and checked for "< 0". > I made a HUGE mistake then. Sorry. Thank you Alexey!!