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