blob: 131f33733d25597167f4d67462a032455920f5d4 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * linux/include/asm-arm/mach/irq.h
3 *
4 * Copyright (C) 1995-2000 Russell King.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10#ifndef __ASM_ARM_MACH_IRQ_H
11#define __ASM_ARM_MACH_IRQ_H
12
Thomas Gleixner4a2581a2006-07-01 22:30:09 +010013#include <linux/irq.h>
14
Linus Torvalds1da177e2005-04-16 15:20:36 -070015struct seq_file;
16
Russell King664399e2005-09-04 19:45:00 +010017/*
Linus Torvalds1da177e2005-04-16 15:20:36 -070018 * This is internal. Do not use it.
19 */
20extern void (*init_arch_irq)(void);
21extern void init_FIQ(void);
22extern int show_fiq_list(struct seq_file *, void *);
Linus Torvalds1da177e2005-04-16 15:20:36 -070023
24/*
Thomas Gleixner4a2581a2006-07-01 22:30:09 +010025 * Function wrappers
Linus Torvalds1da177e2005-04-16 15:20:36 -070026 */
Thomas Gleixner4a2581a2006-07-01 22:30:09 +010027#define set_irq_chipdata(irq, d) set_irq_chip_data(irq, d)
28#define get_irq_chipdata(irq) get_irq_chip_data(irq)
Linus Torvalds1da177e2005-04-16 15:20:36 -070029
Thomas Gleixner4a2581a2006-07-01 22:30:09 +010030/*
31 * Obsolete inline function for calling irq descriptor handlers.
32 */
33static inline void desc_handle_irq(unsigned int irq, struct irq_desc *desc,
34 struct pt_regs *regs)
35{
36 desc->handle_irq(irq, desc, regs);
37}
38
Linus Torvalds1da177e2005-04-16 15:20:36 -070039void set_irq_flags(unsigned int irq, unsigned int flags);
40
41#define IRQF_VALID (1 << 0)
42#define IRQF_PROBE (1 << 1)
43#define IRQF_NOAUTOEN (1 << 2)
44
45/*
Thomas Gleixner4a2581a2006-07-01 22:30:09 +010046 * This is for easy migration, but should be changed in the source
Linus Torvalds1da177e2005-04-16 15:20:36 -070047 */
Thomas Gleixner4a2581a2006-07-01 22:30:09 +010048#define do_level_IRQ handle_level_irq
49#define do_edge_IRQ handle_edge_irq
50#define do_simple_IRQ handle_simple_irq
51#define irqdesc irq_desc
52#define irqchip irq_chip
53
54#define do_bad_IRQ(irq,desc,regs) \
55do { \
56 spin_lock(&desc->lock); \
57 handle_bad_irq(irq, desc, regs); \
58 spin_unlock(&desc->lock); \
59} while(0)
60
61extern unsigned long irq_err_count;
62static inline void ack_bad_irq(int irq)
63{
64 irq_err_count++;
65}
Linus Torvalds1da177e2005-04-16 15:20:36 -070066
67#endif