On Tue, 2005-03-08 at 11:48 +0100, Erik Mouw wrote: > On Tue, Mar 08, 2005 at 03:50:46PM +0530, Dhanashri Bhate wrote: > > > You can't randomly free interrupts, and you're certainly not supposed > > > to free interrupts when you just *enabled* the interrupt source on the > > > device. > > > > right, will change this. but can i replace the existing driver by > > doing this? i mean, free irq -> then request irq -> enable > > interrupts > > Each driver must request_irq() and free_irq() its own interrupt. IOW: > if the serial driver is unloaded, the interrupt is free. Besides, > you're supposed to call free_irq() with a pointer to your own device > structure, not a NULL pointer. I think NULL can be passed on to free_irq...if the irq line is not shared. dev_id would be usefull only in case of shared interrupts (like those of PCI devices maybe...). correct me if i'm wrong. > > > > > Another program that polls COM1 works fine. > > > > > > Two drivers competing for the same piece of hardware, that's a recipe > > > for disaster. Remove the standard serial module and retry your own > > > module. > > > > i was trying to read COM1 by 2 ways, by polling COM port which works > > fine. The interrupt driven is not. > > First of all, fix the request_irq()/free_irq() mess. Then figure out if > you get interrupts at all. If that's all ok, check the irq handling and > if your bottom half is called at all. > > > these two are not loaded at the same time, I am loading only one of > > these at a time. > > Good. > > > so i guess i'm not able to disable the standard COM1 irq handler? > > "rmmod 8250" does the trick over here. (IIRC the module is called > "serial" in linux-2.4). > > > Erik > -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/