Driver compiled fine with 2.6.19-gentoo-r5. With 2.6.20-gentoo-r6 and 2.6.20-gentoo-r7 I get this error: #------------------------------------------------------------------------------- # Tried to make the driver with the new kernel, but something changed #------------------------------------------------------------------------------- cd ~/sheldon/siddk/siddk_plx/drivers/linux/0206 make make -C /lib/modules/2.6.20-gentoo-r6/build M=/home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206 modules make[1]: Entering directory `/usr/src/linux-2.6.20-gentoo-r6' CC [M] /home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206/init.o /home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206/init.c: In function 'SIPLX_board_init': /home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206/init.c:235: warning: passing argument 2 of 'request_irq' from incompatible pointer type /home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206/init.c:277:75: error: macro "INIT_WORK" passed 3 arguments, but takes just 2 /home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206/init.c:277: error: 'INIT_WORK' undeclared (first use in this function) /home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206/init.c:277: error: (Each undeclared identifier is reported only once /home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206/init.c:277: error: for each function it appears in.) make[2]: *** [/home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206/init.o] Error 1 make[1]: *** [_module_/home/jstile/sheldon/siddk/siddk_plx/drivers/linux/0206] Error 2 make[1]: Leaving directory `/usr/src/linux-2.6.20-gentoo-r6' make: *** [all] Error 2 #------------------------------------------------------------------------------- # Offending code chunk in init.c on line 235 #------------------------------------------------------------------------------- request_irq //<===Line 235. ( pdx[card_num].irq, SIPLX_isr, //<===Argument 2: Causing Error: incompatible pointer type SA_SHIRQ, kModuleName, (ulong *)(card_num + 1) ) #------------------------------------------------------------------------------- # Found annotation for SIPLX_isr in driver source file isr.c #------------------------------------------------------------------------------- // void SIPLX_isr // Parameters: // int irq: // void *dev_id: // struct pt_regs *regs #------------------------------------------------------------------------------- # Description of: request_irq() # REFERENCE:http://www.linuxhq.com/kernel/v2.6/20/Documentation/pci.txt #------------------------------------------------------------------------------- request_irq() will associate an interrupt handler and device handle with an interrupt number. request_irq() also enables the interrupt. #------------------------------------------------------------------------------- # Header prototype of request_irq: /usr/src/linux/include/linux/interrupt.h:82 #------------------------------------------------------------------------------- extern int request_irq( unsigned int, irq_handler_t handler, unsigned long, const char *, void * ); #------------------------------------------------------------------------------- # Definition of request_irq: /usr/src/linux/kernel/irq/manage.c:438: #------------------------------------------------------------------------------- int request_irq( unsigned int irq, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id ) #------------------------------------------------------------------------------- # Definition of typedef irqreturn_t: /usr/src/linux/include/linux/interrupt.h:68 #------------------------------------------------------------------------------- typedef irqreturn_t (*irq_handler_t)(int, void *);