Dear Patrick,
        I have tested the following code on a 486 machine (I'm using IRQ
10). This is a small modification of examples/sound/sound.c file.


/*******************************************************************/

#include <linux/mc146818rtc.h>

#include <rtl_fifo.h>
#include <rtl_core.h>
#include <rtl_time.h>
#include <rtl.h>

#include "PCL_225.h"

unsigned long i,j=0;

/* Interrupt handler - called when ever IRQ 10 is pulled low, and if it is
enabled */

unsigned int intr_handler(unsigned int irq, struct pt_regs *regs) {

        int dat;

        (void) CMOS_READ(RTC_REG_C);        /* clear IRQ */
        j++;
        for(i=0;i<4097;i++)
        {
        outb_p(0x01,CHIP5_PORT_A);
        outb_p(0x00,CHIP5_PORT_A);
        }
        rtl_hard_enable_irq(10);
        return 0;
}

/* this gets inserted when ever insmod is issued */

int init_module(void)
{

/* Initializations */
        outb_p(0x80,CONTROL_PORT_CHIP5);/* first 8255, all output ports */

        outb_p(0x00,CHIP5_PORT_A);

/* Tell the kernel to branch to function intr_handler(), when ever IRQ 10
occurs. In my PC IRQ 10 line has to be pulled low */

        rtl_request_irq(10, intr_handler);
        rtl_hard_enable_irq(10);
        (void) CMOS_READ(RTC_REG_C);
        rtl_printf("intr module loaded...\n");
        return 0;
}

/* Following gets executed whenever rmmod is issued */

void cleanup_module(void)
{
        rtl_free_irq(10);
        rtl_printf("intr module removed...%u\n",j);
}

/*************************************************************************/

> > I have an ISA board using interrupt 5.  I am trying to set up an interrupt
> > handler for this board that uses system interrupt 13.  The following code
> > was used to do this in dos.
> >
> > /* Port addresses for the 8259A interrupt controller  */
> >
> > #define INT_MASK_PORT           0x0021
> > #define INT_CONTROLLER          0x0020
> > #define SPECIFIC_EOI_IR5        0x0065
> >
> > /******************************************************/
> >
> > void interrupt HS_Int_Handler (...) {
> > .
> > .
> > handler code
> > .
> > .
> > }
> >
> > Orig_Int_13_Handler = dos_getvect (13);
> > _dos_setvect (13, HS_Int_Handler);
> > outportb (INT_MASK_PORT, inportb (INT_MASK_PORT) & ~IRQ_5);
> > outportb (INT_CONTROLLER, SPECIFIC_EOI_IR5);
> > _enable();
> > .
> > .
> > .
> > collect data
> > .
> > .
> > .
> > //Disable interrupt from HS
> > outportb (INT_MASK_PORT, inportb (INT_MASK_PORT) | IRQ_5);
> > _dos_setvect (13, Orig_Int_13_Handler);
> > outportb(INT_CONTROLLER, SPECIFIC_EOI_IR5);
> > _enable
> >
> > How do I do this in rtlinux??
> >
> > Thanks for any help,
> > Patrick
> > -- [rtl] ---
> > To unsubscribe:
> > echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
> > echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
> > ---
> > For more information on Real-Time Linux see:
> > http://www.rtlinux.org/rtlinux/


***********************************************************************
                                                                      *
RAMESH K, Receiver Engineer                                           *
Millimeterwave Observatory       Ph: +91-80-3340128 ext 447           *
Raman Research Institute        Fax: +91-80-3340492 Attn Ramesh K     *
Sir C V Raman Avenue                                                  *
Sadashivanagar                                                        *
Bangalore - 560 080                                                   *
India                                                                 *
http://www.rri.res.in                                                 *
                                                                      *
***********************************************************************

-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/

Reply via email to