[uCsimm] Problem setting edge-triggered interrupts

From: Gonzalo Vásquez Sáez (gvasquez@vtr.net)
Date: Mon Oct 01 2001 - 13:12:32 EDT


I've recently created an interrupt driver, everything went fine just before
I decided to switch from level triggered interrupt to edge triggered
interrupts. Upon adding both ICR setting lines, the uclinux won't boot, and
the kernel freezed posting an "access fault" message. I have check the
freezing point with a series of printk() functions, and whichever data I
store on the ICR causes the the system not to boot, i.e. to DIE!!!

Below I include my interrupt init function which surely is the problem, any
suggestions would be appreciated.

Regards,

Gonzalo Vasquez

void kpad_init(void)
{
int res;
res = register_chrdev(KPAD_MAYOR, "kpad", &kpad_fops);
if(res) return;
res = request_irq(IRQ_MACHSPEC | IRQ6_IRQ_NUM, kpad_isr, IRQ_FLG_STD,
"KPAD", NULL);
if(res) return;
PDSEL &= ~(0x80);
ICR &= ~0x1000; //First problem line
ICR |= 0x0100; // Second problem line
IMR &=~(0x00080000);
kpad_flag = 0;
ISR &= ~(0x00080000); // Possibly not needed, but included for safety
reasons
}

This message resent by the ucsimm@uclinux.com list server http://www.uClinux.com/



This archive was generated by hypermail 2b30 : Sun Apr 07 2002 - 00:01:44 EST