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