Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
of_irq.h
Go to the documentation of this file.
1
#ifndef __OF_IRQ_H
2
#define __OF_IRQ_H
3
4
#if defined(CONFIG_OF)
5
struct
of_irq;
6
#include <linux/types.h>
7
#include <linux/errno.h>
8
#include <
linux/irq.h
>
9
#include <
linux/irqdomain.h
>
10
#include <
linux/ioport.h
>
11
#include <
linux/of.h
>
12
13
/*
14
* irq_of_parse_and_map() is used by all OF enabled platforms; but SPARC
15
* implements it differently. However, the prototype is the same for all,
16
* so declare it here regardless of the CONFIG_OF_IRQ setting.
17
*/
18
extern
unsigned
int
irq_of_parse_and_map
(
struct
device_node
*
node
,
int
index
);
19
20
#if defined(CONFIG_OF_IRQ)
21
30
#define OF_MAX_IRQ_SPEC 4
/* We handle specifiers of at most 4 cells */
31
struct
of_irq {
32
struct
device_node
*
controller
;
/* Interrupt controller node */
33
u32
size
;
/* Specifier size */
34
u32
specifier[OF_MAX_IRQ_SPEC];
/* Specifier copy */
35
};
36
37
typedef
int
(*of_irq_init_cb_t)(
struct
device_node
*,
struct
device_node
*);
38
39
/*
40
* Workarounds only applied to 32bit powermac machines
41
*/
42
#define OF_IMAP_OLDWORLD_MAC 0x00000001
43
#define OF_IMAP_NO_PHANDLE 0x00000002
44
45
#if defined(CONFIG_PPC32) && defined(CONFIG_PPC_PMAC)
46
extern
unsigned
int
of_irq_workarounds;
47
extern
struct
device_node
*of_irq_dflt_pic;
48
extern
int
of_irq_map_oldworld(
struct
device_node
*
device
,
int
index
,
49
struct
of_irq *out_irq);
50
#else
/* CONFIG_PPC32 && CONFIG_PPC_PMAC */
51
#define of_irq_workarounds (0)
52
#define of_irq_dflt_pic (NULL)
53
static
inline
int
of_irq_map_oldworld(
struct
device_node
*
device
,
int
index
,
54
struct
of_irq *out_irq)
55
{
56
return
-
EINVAL
;
57
}
58
#endif
/* CONFIG_PPC32 && CONFIG_PPC_PMAC */
59
60
61
extern
int
of_irq_map_raw
(
struct
device_node
*
parent
,
const
__be32
*intspec,
62
u32
ointsize,
const
__be32
*
addr
,
63
struct
of_irq *out_irq);
64
extern
int
of_irq_map_one
(
struct
device_node
*
device
,
int
index
,
65
struct
of_irq *out_irq);
66
extern
unsigned
int
irq_create_of_mapping
(
struct
device_node
*
controller
,
67
const
u32
*intspec,
68
unsigned
int
intsize);
69
extern
int
of_irq_to_resource
(
struct
device_node
*
dev
,
int
index
,
70
struct
resource
*
r
);
71
extern
int
of_irq_count
(
struct
device_node
*
dev
);
72
extern
int
of_irq_to_resource_table
(
struct
device_node
*
dev
,
73
struct
resource
*
res
,
int
nr_irqs
);
74
extern
struct
device_node
*
of_irq_find_parent
(
struct
device_node
*
child
);
75
76
extern
void
of_irq_init
(
const
struct
of_device_id
*matches);
77
78
#endif
/* CONFIG_OF_IRQ */
79
80
#else
/* !CONFIG_OF */
81
static
inline
unsigned
int
irq_of_parse_and_map
(
struct
device_node
*
dev
,
82
int
index
)
83
{
84
return
0;
85
}
86
87
static
inline
void
*
of_irq_find_parent
(
struct
device_node
*
child
)
88
{
89
return
NULL
;
90
}
91
#endif
/* !CONFIG_OF */
92
93
#endif
/* __OF_IRQ_H */
Generated on Thu Jan 10 2013 14:52:15 for Linux Kernel by
1.8.2