Subversion Repositories Kolibri OS

Rev

Rev 6934 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6102 serge 1
/* interrupt.h */
2
#ifndef _LINUX_INTERRUPT_H
3
#define _LINUX_INTERRUPT_H
4
 
5
#include 
6
#include 
7
#include 
8
#include 
6934 serge 9
#include 
6102 serge 10
/*
11
 * These correspond to the IORESOURCE_IRQ_* defines in
12
 * linux/ioport.h to select the interrupt line behaviour.  When
13
 * requesting an interrupt without specifying a IRQF_TRIGGER, the
14
 * setting should be assumed to be "as already configured", which
15
 * may be as per machine or firmware initialisation.
16
 */
17
#define IRQF_TRIGGER_NONE	0x00000000
18
#define IRQF_TRIGGER_RISING	0x00000001
19
#define IRQF_TRIGGER_FALLING	0x00000002
20
#define IRQF_TRIGGER_HIGH	0x00000004
21
#define IRQF_TRIGGER_LOW	0x00000008
22
#define IRQF_TRIGGER_MASK	(IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW | \
23
				 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)
24
#define IRQF_TRIGGER_PROBE	0x00000010
25
 
26
/*
27
 * These flags used only by the kernel as part of the
28
 * irq handling routines.
29
 *
30
 * IRQF_SHARED - allow sharing the irq among several devices
31
 * IRQF_PROBE_SHARED - set by callers when they expect sharing mismatches to occur
32
 * IRQF_TIMER - Flag to mark this interrupt as timer interrupt
33
 * IRQF_PERCPU - Interrupt is per cpu
34
 * IRQF_NOBALANCING - Flag to exclude this interrupt from irq balancing
35
 * IRQF_IRQPOLL - Interrupt is used for polling (only the interrupt that is
36
 *                registered first in an shared interrupt is considered for
37
 *                performance reasons)
38
 * IRQF_ONESHOT - Interrupt is not reenabled after the hardirq handler finished.
39
 *                Used by threaded interrupts which need to keep the
40
 *                irq line disabled until the threaded handler has been run.
41
 * IRQF_NO_SUSPEND - Do not disable this IRQ during suspend.  Does not guarantee
42
 *                   that this interrupt will wake the system from a suspended
43
 *                   state.  See Documentation/power/suspend-and-interrupts.txt
44
 * IRQF_FORCE_RESUME - Force enable it on resume even if IRQF_NO_SUSPEND is set
45
 * IRQF_NO_THREAD - Interrupt cannot be threaded
46
 * IRQF_EARLY_RESUME - Resume IRQ early during syscore instead of at device
47
 *                resume time.
48
 * IRQF_COND_SUSPEND - If the IRQ is shared with a NO_SUSPEND user, execute this
49
 *                interrupt handler after suspending interrupts. For system
50
 *                wakeup devices users need to implement wakeup detection in
51
 *                their interrupt handlers.
52
 */
53
#define IRQF_SHARED		0x00000080
54
#define IRQF_PROBE_SHARED	0x00000100
55
#define __IRQF_TIMER		0x00000200
56
#define IRQF_PERCPU		0x00000400
57
#define IRQF_NOBALANCING	0x00000800
58
#define IRQF_IRQPOLL		0x00001000
59
#define IRQF_ONESHOT		0x00002000
60
#define IRQF_NO_SUSPEND		0x00004000
61
#define IRQF_FORCE_RESUME	0x00008000
62
#define IRQF_NO_THREAD		0x00010000
63
#define IRQF_EARLY_RESUME	0x00020000
64
#define IRQF_COND_SUSPEND	0x00040000
65
 
66
#define IRQF_TIMER		(__IRQF_TIMER | IRQF_NO_SUSPEND | IRQF_NO_THREAD)
67
 
6936 serge 68
/*
69
 * These values can be returned by request_any_context_irq() and
70
 * describe the context the interrupt will be run in.
71
 *
72
 * IRQC_IS_HARDIRQ - interrupt runs in hardirq context
73
 * IRQC_IS_NESTED - interrupt runs in a nested threaded context
74
 */
75
enum {
76
	IRQC_IS_HARDIRQ	= 0,
77
	IRQC_IS_NESTED,
78
};
6102 serge 79
extern int early_irq_init(void);
80
extern int arch_probe_nr_irqs(void);
81
extern int arch_early_irq_init(void);
82
 
83
#endif