diff options
Diffstat (limited to 'arch/sh/boards/titan/setup.c')
-rw-r--r-- | arch/sh/boards/titan/setup.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/arch/sh/boards/titan/setup.c b/arch/sh/boards/titan/setup.c index 6bcd939bfae..606d25a4b87 100644 --- a/arch/sh/boards/titan/setup.c +++ b/arch/sh/boards/titan/setup.c | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <asm/titan.h> | 12 | #include <asm/titan.h> |
13 | #include <asm/io.h> | 13 | #include <asm/io.h> |
14 | 14 | ||
15 | static struct ipr_data titan_ipr_map[] = { | 15 | static struct ipr_data ipr_irq_table[] = { |
16 | /* IRQ, IPR idx, shift, prio */ | 16 | /* IRQ, IPR idx, shift, prio */ |
17 | { TITAN_IRQ_WAN, 3, 12, 8 }, /* eth0 (WAN) */ | 17 | { TITAN_IRQ_WAN, 3, 12, 8 }, /* eth0 (WAN) */ |
18 | { TITAN_IRQ_LAN, 3, 8, 8 }, /* eth1 (LAN) */ | 18 | { TITAN_IRQ_LAN, 3, 8, 8 }, /* eth1 (LAN) */ |
@@ -20,15 +20,33 @@ static struct ipr_data titan_ipr_map[] = { | |||
20 | { TITAN_IRQ_USB, 3, 0, 8 }, /* mPCI B (bottom), USB */ | 20 | { TITAN_IRQ_USB, 3, 0, 8 }, /* mPCI B (bottom), USB */ |
21 | }; | 21 | }; |
22 | 22 | ||
23 | static unsigned long ipr_offsets[] = { /* stolen from setup-sh7750.c */ | ||
24 | 0xffd00004UL, /* 0: IPRA */ | ||
25 | 0xffd00008UL, /* 1: IPRB */ | ||
26 | 0xffd0000cUL, /* 2: IPRC */ | ||
27 | 0xffd00010UL, /* 3: IPRD */ | ||
28 | }; | ||
29 | |||
30 | static struct ipr_desc ipr_irq_desc = { | ||
31 | .ipr_offsets = ipr_offsets, | ||
32 | .nr_offsets = ARRAY_SIZE(ipr_offsets), | ||
33 | |||
34 | .ipr_data = ipr_irq_table, | ||
35 | .nr_irqs = ARRAY_SIZE(ipr_irq_table), | ||
36 | |||
37 | .chip = { | ||
38 | .name = "IPR-titan", | ||
39 | }, | ||
40 | }; | ||
23 | static void __init init_titan_irq(void) | 41 | static void __init init_titan_irq(void) |
24 | { | 42 | { |
25 | /* enable individual interrupt mode for externals */ | 43 | /* enable individual interrupt mode for externals */ |
26 | ipr_irq_enable_irlm(); | 44 | ipr_irq_enable_irlm(); |
27 | /* register ipr irqs */ | 45 | /* register ipr irqs */ |
28 | make_ipr_irq(titan_ipr_map, ARRAY_SIZE(titan_ipr_map)); | 46 | register_ipr_controller(&ipr_irq_desc); |
29 | } | 47 | } |
30 | 48 | ||
31 | struct sh_machine_vector mv_titan __initmv = { | 49 | static struct sh_machine_vector mv_titan __initmv = { |
32 | .mv_name = "Titan", | 50 | .mv_name = "Titan", |
33 | 51 | ||
34 | .mv_inb = titan_inb, | 52 | .mv_inb = titan_inb, |
@@ -52,4 +70,3 @@ struct sh_machine_vector mv_titan __initmv = { | |||
52 | 70 | ||
53 | .mv_init_irq = init_titan_irq, | 71 | .mv_init_irq = init_titan_irq, |
54 | }; | 72 | }; |
55 | ALIAS_MV(titan) | ||