1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * include/asm-parisc/irq.h 4 * 5 * Copyright 2005 Matthew Wilcox <matthew@wil.cx> 6 */ 7 8 #ifndef _ASM_PARISC_IRQ_H 9 #define _ASM_PARISC_IRQ_H 10 11 #include <linux/cpumask.h> 12 #include <asm/types.h> 13 14 #define NO_IRQ (-1) 15 16 #ifdef CONFIG_GSC 17 #define GSC_IRQ_BASE 16 18 #define GSC_IRQ_MAX 63 19 #define CPU_IRQ_BASE 64 20 #else 21 #define CPU_IRQ_BASE 16 22 #endif 23 24 #define TIMER_IRQ (CPU_IRQ_BASE + 0) 25 #define IPI_IRQ (CPU_IRQ_BASE + 1) 26 #define CPU_IRQ_MAX (CPU_IRQ_BASE + (BITS_PER_LONG - 1)) 27 28 #define NR_IRQS (CPU_IRQ_MAX + 1) 29 30 static __inline__ int irq_canonicalize(int irq) 31 { 32 return (irq == 2) ? 9 : irq; 33 } 34 35 struct irq_chip; 36 struct irq_data; 37 38 void cpu_ack_irq(struct irq_data *d); 39 void cpu_eoi_irq(struct irq_data *d); 40 41 extern int txn_alloc_irq(unsigned int nbits); 42 extern int txn_claim_irq(int); 43 extern unsigned int txn_alloc_data(unsigned int); 44 extern unsigned long txn_alloc_addr(unsigned int); 45 extern unsigned long txn_affinity_addr(unsigned int irq, int cpu); 46 47 extern int cpu_claim_irq(unsigned int irq, struct irq_chip *, void *); 48 extern int cpu_check_affinity(struct irq_data *d, const struct cpumask *dest); 49 50 /* soft power switch support (power.c) */ 51 extern struct tasklet_struct power_tasklet; 52 53 #endif /* _ASM_PARISC_IRQ_H */ 54