fiq.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * arch/arm/include/asm/fiq.h
  4. *
  5. * Support for FIQ on ARM architectures.
  6. * Written by Philip Blundell <[email protected]>, 1998
  7. * Re-written by Russell King
  8. *
  9. * NOTE: The FIQ mode registers are not magically preserved across
  10. * suspend/resume.
  11. *
  12. * Drivers which require these registers to be preserved across power
  13. * management operations must implement appropriate suspend/resume handlers to
  14. * save and restore them.
  15. */
  16. #ifndef __ASM_FIQ_H
  17. #define __ASM_FIQ_H
  18. #include <asm/ptrace.h>
  19. struct fiq_handler {
  20. struct fiq_handler *next;
  21. /* Name
  22. */
  23. const char *name;
  24. /* Called to ask driver to relinquish/
  25. * reacquire FIQ
  26. * return zero to accept, or -<errno>
  27. */
  28. int (*fiq_op)(void *, int relinquish);
  29. /* data for the relinquish/reacquire functions
  30. */
  31. void *dev_id;
  32. };
  33. extern int claim_fiq(struct fiq_handler *f);
  34. extern void release_fiq(struct fiq_handler *f);
  35. extern void set_fiq_handler(void *start, unsigned int length);
  36. extern void enable_fiq(int fiq);
  37. extern void disable_fiq(int fiq);
  38. /* helpers defined in fiqasm.S: */
  39. extern void __set_fiq_regs(unsigned long const *regs);
  40. extern void __get_fiq_regs(unsigned long *regs);
  41. static inline void set_fiq_regs(struct pt_regs const *regs)
  42. {
  43. __set_fiq_regs(&regs->ARM_r8);
  44. }
  45. static inline void get_fiq_regs(struct pt_regs *regs)
  46. {
  47. __get_fiq_regs(&regs->ARM_r8);
  48. }
  49. #endif