Main Page   Modules   Alphabetical List   Data Structures   File List   Related Pages  

E12_Interrupt.c

00001 /*E12_Interrupt.c
00002 Interrupt routine for the 37E12
00003 */
00004 #include "E12.h"
00005 #include "E12fops.h"
00006 #include "sE12.h"
00007 
00008 void E12_Interrupt(int irq, void *dev_id, struct pt_regs *regs)
00009 {
00010 E12_device *device = dev_id;
00011 
00012 IODEBUG("IRQ\n");
00013 
00014 rmb();
00015 if(MIRQ_LOW(device))
00016   {
00017     IODEBUG("empty IRQ\n");
00018     return;
00019     /*the empty IRQ which should result from a read/writes, and should always
00020      result from read/writes. Write is responsible for creating clear time 
00021      between handshake line pulses and valid IRQs*/
00022   }
00023 
00024 /*fasync should go here*/
00025 IODEBUG("kill_fasync\n");
00026 if(device->dataready)
00027   kill_fasync(&device->dataready, SIGIO, POLL_IN);//notify async queue
00028 
00029 if(device->valid==TRUE)
00030   wake_up_interruptible(&device->readqueue);
00031 
00032 }
00033 
00034 
00035 

Generated on Mon Dec 29 09:25:43 2003 for PCM-37e12 by doxygen1.2.15