2005-04-17 06:20:36 +08:00
|
|
|
/*
|
|
|
|
* linux/include/asm-arm/mach/irq.h
|
|
|
|
*
|
|
|
|
* Copyright (C) 1995-2000 Russell King.
|
|
|
|
*
|
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
|
|
* published by the Free Software Foundation.
|
|
|
|
*/
|
|
|
|
#ifndef __ASM_ARM_MACH_IRQ_H
|
|
|
|
#define __ASM_ARM_MACH_IRQ_H
|
|
|
|
|
2006-07-02 05:30:09 +08:00
|
|
|
#include <linux/irq.h>
|
2005-04-17 06:20:36 +08:00
|
|
|
|
2006-07-02 05:30:09 +08:00
|
|
|
struct seq_file;
|
2005-09-05 02:45:00 +08:00
|
|
|
|
2005-04-17 06:20:36 +08:00
|
|
|
/*
|
|
|
|
* This is internal. Do not use it.
|
|
|
|
*/
|
|
|
|
extern void (*init_arch_irq)(void);
|
|
|
|
extern void init_FIQ(void);
|
|
|
|
extern int show_fiq_list(struct seq_file *, void *);
|
|
|
|
|
|
|
|
/*
|
2006-07-02 05:30:09 +08:00
|
|
|
* Function wrappers
|
|
|
|
*/
|
|
|
|
#define set_irq_chipdata(irq, d) set_irq_chip_data(irq, d)
|
|
|
|
#define get_irq_chipdata(irq) get_irq_chip_data(irq)
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Obsolete inline function for calling irq descriptor handlers.
|
2005-04-17 06:20:36 +08:00
|
|
|
*/
|
2006-10-07 01:53:39 +08:00
|
|
|
static inline void desc_handle_irq(unsigned int irq, struct irq_desc *desc)
|
2006-07-02 05:30:09 +08:00
|
|
|
{
|
2006-10-07 01:53:39 +08:00
|
|
|
desc->handle_irq(irq, desc);
|
2006-07-02 05:30:09 +08:00
|
|
|
}
|
2005-04-17 06:20:36 +08:00
|
|
|
|
|
|
|
void set_irq_flags(unsigned int irq, unsigned int flags);
|
|
|
|
|
|
|
|
#define IRQF_VALID (1 << 0)
|
|
|
|
#define IRQF_PROBE (1 << 1)
|
|
|
|
#define IRQF_NOAUTOEN (1 << 2)
|
|
|
|
|
|
|
|
/*
|
2006-07-02 05:30:09 +08:00
|
|
|
* This is for easy migration, but should be changed in the source
|
2005-04-17 06:20:36 +08:00
|
|
|
*/
|
2006-07-02 05:30:09 +08:00
|
|
|
#define do_level_IRQ handle_level_irq
|
|
|
|
#define do_edge_IRQ handle_edge_irq
|
|
|
|
#define do_simple_IRQ handle_simple_irq
|
|
|
|
#define irqdesc irq_desc
|
|
|
|
#define irqchip irq_chip
|
|
|
|
|
2006-10-07 01:53:39 +08:00
|
|
|
#define do_bad_IRQ(irq,desc) \
|
2006-07-02 05:30:09 +08:00
|
|
|
do { \
|
|
|
|
spin_lock(&desc->lock); \
|
2006-10-07 01:53:39 +08:00
|
|
|
handle_bad_irq(irq, desc); \
|
2006-07-02 05:30:09 +08:00
|
|
|
spin_unlock(&desc->lock); \
|
|
|
|
} while(0)
|
|
|
|
|
|
|
|
extern unsigned long irq_err_count;
|
|
|
|
static inline void ack_bad_irq(int irq)
|
|
|
|
{
|
|
|
|
irq_err_count++;
|
|
|
|
}
|
2005-04-17 06:20:36 +08:00
|
|
|
|
|
|
|
#endif
|