xref: /rk3399_rockchip-uboot/arch/microblaze/include/asm/microblaze_intc.h (revision e1cc4d31f889428a4ca73120951389c756404184)
1819833afSPeter Tyser /*
2819833afSPeter Tyser  * (C) Copyright 2007 Michal Simek
3819833afSPeter Tyser  *
4819833afSPeter Tyser  * Michal  SIMEK <monstr@monstr.cz>
5819833afSPeter Tyser  *
6*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
7819833afSPeter Tyser  */
8819833afSPeter Tyser 
9819833afSPeter Tyser typedef volatile struct microblaze_intc_t {
10819833afSPeter Tyser 	int isr; /* interrupt status register */
11819833afSPeter Tyser 	int ipr; /* interrupt pending register */
12819833afSPeter Tyser 	int ier; /* interrupt enable register */
13819833afSPeter Tyser 	int iar; /* interrupt acknowledge register */
14819833afSPeter Tyser 	int sie; /* set interrupt enable bits */
15819833afSPeter Tyser 	int cie; /* clear interrupt enable bits */
16819833afSPeter Tyser 	int ivr; /* interrupt vector register */
17819833afSPeter Tyser 	int mer; /* master enable register */
18819833afSPeter Tyser } microblaze_intc_t;
19819833afSPeter Tyser 
20819833afSPeter Tyser struct irq_action {
21819833afSPeter Tyser 	interrupt_handler_t *handler; /* pointer to interrupt rutine */
22819833afSPeter Tyser 	void *arg;
23819833afSPeter Tyser 	int count; /* number of interrupt */
24819833afSPeter Tyser };
25819833afSPeter Tyser 
268706908aSMichal Simek /**
278706908aSMichal Simek  * Register and unregister interrupt handler rutines
288706908aSMichal Simek  *
298706908aSMichal Simek  * @param irq	IRQ number
308706908aSMichal Simek  * @param hdlr	Interrupt handler rutine
318706908aSMichal Simek  * @param arg	Pointer to argument which is passed to int. handler rutine
328706908aSMichal Simek  * @return	0 if registration pass, 1 if unregistration pass,
338706908aSMichal Simek  *		or an error code < 0 otherwise
348706908aSMichal Simek  */
358706908aSMichal Simek int install_interrupt_handler(int irq, interrupt_handler_t *hdlr,
36819833afSPeter Tyser 				       void *arg);
37