microblaze_intc.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * (C) Copyright 2007 Michal Simek
  4. *
  5. * Michal SIMEK <monstr@monstr.cz>
  6. */
  7. #include <irq_func.h>
  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. struct irq_action {
  19. interrupt_handler_t *handler; /* pointer to interrupt rutine */
  20. void *arg;
  21. int count; /* number of interrupt */
  22. };
  23. /**
  24. * Register and unregister interrupt handler rutines
  25. *
  26. * @param irq IRQ number
  27. * @param hdlr Interrupt handler rutine
  28. * @param arg Pointer to argument which is passed to int. handler rutine
  29. * @return 0 if registration pass, 1 if unregistration pass,
  30. * or an error code < 0 otherwise
  31. */
  32. int install_interrupt_handler(int irq, interrupt_handler_t *hdlr,
  33. void *arg);