I am trying to write a serial driver for the philips 16is7xx i2c/rs232 bridge. These devices are basically a 16550 serial port with an i2c bus rather than a conventional address/data bus. Here is my problem: The i2c driver routines use up(&xxx) / down(&xxx) semaphores so they cannot be accessed in interrupt context. Both ISR's and tasklets both run in interrupt context so the i2c drivers need to accessed some other way. I was thinking of creating a task with wait_for_completion(&xxx) and having the ISR do a complete(&xxx) to wake the task. However I believe (please correct me if I'm wrong.... I'm not to sure about this) that the delay between the complete(&xxx) and the waiting task could be tens of milliseconds. Even with a 64 byte FIFO it is going miss receive characters at anything faster than 9600b. Does anyone have any suggestions on how I should do the bottom half of the ISR so I don't miss characters? __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/