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
arch
m68k
apollo
dn_ints.c
Go to the documentation of this file.
1
#include <
linux/interrupt.h
>
2
#include <
linux/irq.h
>
3
4
#include <asm/traps.h>
5
#include <
asm/apollohw.h
>
6
7
unsigned
int
apollo_irq_startup
(
struct
irq_data
*
data
)
8
{
9
unsigned
int
irq
= data->
irq
;
10
11
if
(irq < 8)
12
*(
volatile
unsigned
char
*)(
pica
+1) &= ~(1 << irq);
13
else
14
*(
volatile
unsigned
char
*)(
picb
+1) &= ~(1 << (irq - 8));
15
return
0;
16
}
17
18
void
apollo_irq_shutdown
(
struct
irq_data
*
data
)
19
{
20
unsigned
int
irq
= data->
irq
;
21
22
if
(irq < 8)
23
*(
volatile
unsigned
char
*)(
pica
+1) |= (1 << irq);
24
else
25
*(
volatile
unsigned
char
*)(
picb
+1) |= (1 << (irq - 8));
26
}
27
28
void
apollo_irq_eoi
(
struct
irq_data
*
data
)
29
{
30
*(
volatile
unsigned
char
*)(
pica
) = 0x20;
31
*(
volatile
unsigned
char
*)(
picb
) = 0x20;
32
}
33
34
static
struct
irq_chip
apollo_irq_chip = {
35
.name =
"apollo"
,
36
.irq_startup =
apollo_irq_startup
,
37
.irq_shutdown =
apollo_irq_shutdown
,
38
.irq_eoi =
apollo_irq_eoi
,
39
};
40
41
42
void
__init
dn_init_IRQ
(
void
)
43
{
44
m68k_setup_user_interrupt
(
VEC_USER
+ 96, 16);
45
m68k_setup_irq_controller
(&apollo_irq_chip,
handle_fasteoi_irq
,
46
IRQ_APOLLO
, 16);
47
}
Generated on Thu Jan 10 2013 13:07:44 for Linux Kernel by
1.8.2