Branch data Line data Source code
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 : : 22 : : struct 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 : : 37 : : extern int claim_fiq(struct fiq_handler *f); 38 : : extern void release_fiq(struct fiq_handler *f); 39 : : extern void set_fiq_handler(void *start, unsigned int length); 40 : : extern void enable_fiq(int fiq); 41 : : extern void disable_fiq(int fiq); 42 : : 43 : : /* helpers defined in fiqasm.S: */ 44 : : extern void __set_fiq_regs(unsigned long const *regs); 45 : : extern void __get_fiq_regs(unsigned long *regs); 46 : : 47 : : static inline void set_fiq_regs(struct pt_regs const *regs) 48 : : { 49 : 404 : __set_fiq_regs(®s->ARM_r8); 50 : : } 51 : : 52 : : static inline void get_fiq_regs(struct pt_regs *regs) 53 : : { 54 : 404 : __get_fiq_regs(®s->ARM_r8); 55 : : } 56 : : 57 : : #endif