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