microblaze: intc: Registering interrupt should return value
Return value to find out if un/registration was succesful. Signed-off-by: Michal Simek <monstr@monstr.eu>
This commit is contained in:
parent
e35c05baa1
commit
8706908a25
|
@ -91,14 +91,13 @@ static void disable_one_interrupt(int irq)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/* adding new handler for interrupt */
|
int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg)
|
||||||
void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg)
|
|
||||||
{
|
{
|
||||||
struct irq_action *act;
|
struct irq_action *act;
|
||||||
/* irq out of range */
|
/* irq out of range */
|
||||||
if ((irq < 0) || (irq > irq_no)) {
|
if ((irq < 0) || (irq > irq_no)) {
|
||||||
puts ("IRQ out of range\n");
|
puts ("IRQ out of range\n");
|
||||||
return;
|
return -1;
|
||||||
}
|
}
|
||||||
act = &vecs[irq];
|
act = &vecs[irq];
|
||||||
if (hdlr) { /* enable */
|
if (hdlr) { /* enable */
|
||||||
|
@ -106,11 +105,14 @@ void install_interrupt_handler (int irq, interrupt_handler_t * hdlr, void *arg)
|
||||||
act->arg = arg;
|
act->arg = arg;
|
||||||
act->count = 0;
|
act->count = 0;
|
||||||
enable_one_interrupt (irq);
|
enable_one_interrupt (irq);
|
||||||
} else { /* disable */
|
return 0;
|
||||||
act->handler = (interrupt_handler_t *) def_hdlr;
|
|
||||||
act->arg = (void *)irq;
|
|
||||||
disable_one_interrupt (irq);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Disable */
|
||||||
|
act->handler = (interrupt_handler_t *) def_hdlr;
|
||||||
|
act->arg = (void *)irq;
|
||||||
|
disable_one_interrupt(irq);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* initialization interrupt controller - hardware */
|
/* initialization interrupt controller - hardware */
|
||||||
|
|
|
@ -39,7 +39,16 @@ struct irq_action {
|
||||||
int count; /* number of interrupt */
|
int count; /* number of interrupt */
|
||||||
};
|
};
|
||||||
|
|
||||||
void install_interrupt_handler (int irq, interrupt_handler_t * hdlr,
|
/**
|
||||||
|
* Register and unregister interrupt handler rutines
|
||||||
|
*
|
||||||
|
* @param irq IRQ number
|
||||||
|
* @param hdlr Interrupt handler rutine
|
||||||
|
* @param arg Pointer to argument which is passed to int. handler rutine
|
||||||
|
* @return 0 if registration pass, 1 if unregistration pass,
|
||||||
|
* or an error code < 0 otherwise
|
||||||
|
*/
|
||||||
|
int install_interrupt_handler(int irq, interrupt_handler_t *hdlr,
|
||||||
void *arg);
|
void *arg);
|
||||||
|
|
||||||
int interrupts_init(void);
|
int interrupts_init(void);
|
||||||
|
|
Loading…
Reference in New Issue