fiq.h (1391B)
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 <philb@gnu.org>, 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 17#ifndef __ASM_FIQ_H 18#define __ASM_FIQ_H 19 20#include <asm/ptrace.h> 21 22struct fiq_handler { 23 struct fiq_handler *next; 24 /* Name 25 */ 26 const char *name; 27 /* Called to ask driver to relinquish/ 28 * reacquire FIQ 29 * return zero to accept, or -<errno> 30 */ 31 int (*fiq_op)(void *, int relinquish); 32 /* data for the relinquish/reacquire functions 33 */ 34 void *dev_id; 35}; 36 37extern int claim_fiq(struct fiq_handler *f); 38extern void release_fiq(struct fiq_handler *f); 39extern void set_fiq_handler(void *start, unsigned int length); 40extern void enable_fiq(int fiq); 41extern void disable_fiq(int fiq); 42 43/* helpers defined in fiqasm.S: */ 44extern void __set_fiq_regs(unsigned long const *regs); 45extern void __get_fiq_regs(unsigned long *regs); 46 47static inline void set_fiq_regs(struct pt_regs const *regs) 48{ 49 __set_fiq_regs(®s->ARM_r8); 50} 51 52static inline void get_fiq_regs(struct pt_regs *regs) 53{ 54 __get_fiq_regs(®s->ARM_r8); 55} 56 57#endif