18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __ASM_ARM_IRQ_H
38c2ecf20Sopenharmony_ci#define __ASM_ARM_IRQ_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci#define NR_IRQS_LEGACY	16
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci#ifndef CONFIG_SPARSE_IRQ
88c2ecf20Sopenharmony_ci#include <mach/irqs.h>
98c2ecf20Sopenharmony_ci#else
108c2ecf20Sopenharmony_ci#define NR_IRQS NR_IRQS_LEGACY
118c2ecf20Sopenharmony_ci#endif
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_ci#ifndef irq_canonicalize
148c2ecf20Sopenharmony_ci#define irq_canonicalize(i)	(i)
158c2ecf20Sopenharmony_ci#endif
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci/*
188c2ecf20Sopenharmony_ci * Use this value to indicate lack of interrupt
198c2ecf20Sopenharmony_ci * capability
208c2ecf20Sopenharmony_ci */
218c2ecf20Sopenharmony_ci#ifndef NO_IRQ
228c2ecf20Sopenharmony_ci#define NO_IRQ	((unsigned int)(-1))
238c2ecf20Sopenharmony_ci#endif
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci#ifndef __ASSEMBLY__
268c2ecf20Sopenharmony_cistruct irqaction;
278c2ecf20Sopenharmony_cistruct pt_regs;
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ciextern void asm_do_IRQ(unsigned int, struct pt_regs *);
308c2ecf20Sopenharmony_civoid handle_IRQ(unsigned int, struct pt_regs *);
318c2ecf20Sopenharmony_civoid init_IRQ(void);
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci#ifdef CONFIG_SMP
348c2ecf20Sopenharmony_ciextern void arch_trigger_cpumask_backtrace(const cpumask_t *mask,
358c2ecf20Sopenharmony_ci					   bool exclude_self);
368c2ecf20Sopenharmony_ci#define arch_trigger_cpumask_backtrace arch_trigger_cpumask_backtrace
378c2ecf20Sopenharmony_ci#endif
388c2ecf20Sopenharmony_ci
398c2ecf20Sopenharmony_cistatic inline int nr_legacy_irqs(void)
408c2ecf20Sopenharmony_ci{
418c2ecf20Sopenharmony_ci	return NR_IRQS_LEGACY;
428c2ecf20Sopenharmony_ci}
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci#endif
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci#endif
478c2ecf20Sopenharmony_ci
48