/* SPDX-License-Identifier: GPL-2.0 */1/*2* arch/arm/include/asm/fiq.h3*4* Support for FIQ on ARM architectures.5* Written by Philip Blundell <[email protected]>, 19986* Re-written by Russell King7*8* NOTE: The FIQ mode registers are not magically preserved across9* suspend/resume.10*11* Drivers which require these registers to be preserved across power12* management operations must implement appropriate suspend/resume handlers to13* save and restore them.14*/1516#ifndef __ASM_FIQ_H17#define __ASM_FIQ_H1819#include <asm/ptrace.h>2021struct fiq_handler {22struct fiq_handler *next;23/* Name24*/25const char *name;26/* Called to ask driver to relinquish/27* reacquire FIQ28* return zero to accept, or -<errno>29*/30int (*fiq_op)(void *, int relinquish);31/* data for the relinquish/reacquire functions32*/33void *dev_id;34};3536extern int claim_fiq(struct fiq_handler *f);37extern void release_fiq(struct fiq_handler *f);38extern void set_fiq_handler(void *start, unsigned int length);39extern void enable_fiq(int fiq);40extern void disable_fiq(int fiq);4142/* helpers defined in fiqasm.S: */43extern void __set_fiq_regs(unsigned long const *regs);44extern void __get_fiq_regs(unsigned long *regs);4546static inline void set_fiq_regs(struct pt_regs const *regs)47{48__set_fiq_regs(®s->ARM_r8);49}5051static inline void get_fiq_regs(struct pt_regs *regs)52{53__get_fiq_regs(®s->ARM_r8);54}5556#endif575859