AnsweredAssumed Answered

LS1021A External interrupt

Question asked by rahulr on Jan 27, 2017
Latest reply on Jan 31, 2017 by rahulr

I am trying to write an interrupt handler for LS1021A external interrupt IRQ5 using the QorIQ SDK 2.0. I have created a kernel module to handle the interrupt but the reset_irq function is always returning -22 (Invalid argument).

This is my code:

static unsigned int irqNum;

static irq_handler_t irq5_handler(unsigned int irq, void *dev_id, struct pt_regs *regs){
     printk(KERN_INFO "Interrupt received\n");
     return (irq_handler_t) IRQ_HANDLED;
}

static int __init irq_init(void){
     int result = 0;
     irqNum = 201;  // IRQ number of IRQ5
     result = request_irq(irqNum, (irq_handler_t) irq5_handler, IRQF_TRIGGER_RISING, "irq5_handler", NULL);
     printk(KERN_INFO "request_irq result is %d\n", result);
     return result;
}

module_init(irq_init);

 

Is creating a kernel module the right approach to handle the interrupt?

Do I need to perform any actions like initializing the pin before requesting the interrupt (request_irq)?

 

It would be helpful if someone can point me to a document or a sample program that explains the usage of IRQ(0-5) from Linux; specifically for the LS1021A processor.

Outcomes