how to get IRQ of /dev/ttyS0
Gavin Li
gavinl at optech.ca
Fri Aug 18 15:41:05 CEST 2006
I have /dev/ttyS0 and /dev/ttyS1 driver compiled in kernel, now I want
to use /dev/ttyS0 in realtime mode. So I have to following code in my
init_module
if (rt_request_global_irq(4, serial_ISR) != 0) {
printk("failed to get interrupt vector *****\n");
return -EINTR;
}
printk("get serial interrupt vector 4\n");
request_region (BASEADDR, 8, "rtai_app");
rt_disable_irq(4);
outb(0x00, IER); // disable all UART interrupts
inb (ISR); // reset possible pending interrupts
inb (LSR);
inb (DATAREG);
inb (MSR);
outb(0x83, CR); // access baud_rate generator reg
outb(1, BASEADDR); // set baud_rate=115200;
outb(0, BASEADDR+1);
outb(3, LCR); // 8 bit-char, 1 stop bit, no parity
outb(7, FCR); // enable FIFO, trigger recv FIFO level = 1
byte
outb(3, MCR); // DTR, RTS, OUT1 and OUT2 active
outb(3, IER); // enable Rxd/Txd interrupt
rt_startup_irq(4) ;
rt_enable_irq(4);
rt_unmask_irq(4);
But I didn't see any interrupt get to my serial_ISR.
Does anyone have some idea what special step need to do for /dev/ttyS0?
Thanks,
Gavin Li
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.rtai.org/pipermail/rtai/attachments/20060818/aecfc51c/attachment.htm
More information about the Rtai
mailing list