1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2007 Michal Simek
4  *
5  * Michal  SIMEK <monstr@monstr.cz>
6  */
7 
8 typedef volatile struct microblaze_intc_t {
9 	int isr; /* interrupt status register */
10 	int ipr; /* interrupt pending register */
11 	int ier; /* interrupt enable register */
12 	int iar; /* interrupt acknowledge register */
13 	int sie; /* set interrupt enable bits */
14 	int cie; /* clear interrupt enable bits */
15 	int ivr; /* interrupt vector register */
16 	int mer; /* master enable register */
17 } microblaze_intc_t;
18 
19 struct irq_action {
20 	interrupt_handler_t *handler; /* pointer to interrupt rutine */
21 	void *arg;
22 	int count; /* number of interrupt */
23 };
24 
25 /**
26  * Register and unregister interrupt handler rutines
27  *
28  * @param irq	IRQ number
29  * @param hdlr	Interrupt handler rutine
30  * @param arg	Pointer to argument which is passed to int. handler rutine
31  * @return	0 if registration pass, 1 if unregistration pass,
32  *		or an error code < 0 otherwise
33  */
34 int install_interrupt_handler(int irq, interrupt_handler_t *hdlr,
35 				       void *arg);
36