diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
---|---|---|
committer | Glenn Elliott <gelliott@cs.unc.edu> | 2012-03-04 19:47:13 -0500 |
commit | c71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch) | |
tree | ecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /arch/alpha/kernel/sys_jensen.c | |
parent | ea53c912f8a86a8567697115b6a0d8152beee5c8 (diff) | |
parent | 6a00f206debf8a5c8899055726ad127dbeeed098 (diff) |
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts:
litmus/sched_cedf.c
Diffstat (limited to 'arch/alpha/kernel/sys_jensen.c')
-rw-r--r-- | arch/alpha/kernel/sys_jensen.c | 71 |
1 files changed, 18 insertions, 53 deletions
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c index 7a7ae36fff91..7f1a87f176e2 100644 --- a/arch/alpha/kernel/sys_jensen.c +++ b/arch/alpha/kernel/sys_jensen.c | |||
@@ -62,70 +62,35 @@ | |||
62 | * world. | 62 | * world. |
63 | */ | 63 | */ |
64 | 64 | ||
65 | static unsigned int | ||
66 | jensen_local_startup(unsigned int irq) | ||
67 | { | ||
68 | /* the parport is really hw IRQ 1, silly Jensen. */ | ||
69 | if (irq == 7) | ||
70 | i8259a_startup_irq(1); | ||
71 | else | ||
72 | /* | ||
73 | * For all true local interrupts, set the flag that prevents | ||
74 | * the IPL from being dropped during handler processing. | ||
75 | */ | ||
76 | if (irq_desc[irq].action) | ||
77 | irq_desc[irq].action->flags |= IRQF_DISABLED; | ||
78 | return 0; | ||
79 | } | ||
80 | |||
81 | static void | ||
82 | jensen_local_shutdown(unsigned int irq) | ||
83 | { | ||
84 | /* the parport is really hw IRQ 1, silly Jensen. */ | ||
85 | if (irq == 7) | ||
86 | i8259a_disable_irq(1); | ||
87 | } | ||
88 | |||
89 | static void | ||
90 | jensen_local_enable(unsigned int irq) | ||
91 | { | ||
92 | /* the parport is really hw IRQ 1, silly Jensen. */ | ||
93 | if (irq == 7) | ||
94 | i8259a_enable_irq(1); | ||
95 | } | ||
96 | |||
97 | static void | 65 | static void |
98 | jensen_local_disable(unsigned int irq) | 66 | jensen_local_enable(struct irq_data *d) |
99 | { | 67 | { |
100 | /* the parport is really hw IRQ 1, silly Jensen. */ | 68 | /* the parport is really hw IRQ 1, silly Jensen. */ |
101 | if (irq == 7) | 69 | if (d->irq == 7) |
102 | i8259a_disable_irq(1); | 70 | i8259a_enable_irq(d); |
103 | } | 71 | } |
104 | 72 | ||
105 | static void | 73 | static void |
106 | jensen_local_ack(unsigned int irq) | 74 | jensen_local_disable(struct irq_data *d) |
107 | { | 75 | { |
108 | /* the parport is really hw IRQ 1, silly Jensen. */ | 76 | /* the parport is really hw IRQ 1, silly Jensen. */ |
109 | if (irq == 7) | 77 | if (d->irq == 7) |
110 | i8259a_mask_and_ack_irq(1); | 78 | i8259a_disable_irq(d); |
111 | } | 79 | } |
112 | 80 | ||
113 | static void | 81 | static void |
114 | jensen_local_end(unsigned int irq) | 82 | jensen_local_mask_ack(struct irq_data *d) |
115 | { | 83 | { |
116 | /* the parport is really hw IRQ 1, silly Jensen. */ | 84 | /* the parport is really hw IRQ 1, silly Jensen. */ |
117 | if (irq == 7) | 85 | if (d->irq == 7) |
118 | i8259a_end_irq(1); | 86 | i8259a_mask_and_ack_irq(d); |
119 | } | 87 | } |
120 | 88 | ||
121 | static struct irq_chip jensen_local_irq_type = { | 89 | static struct irq_chip jensen_local_irq_type = { |
122 | .name = "LOCAL", | 90 | .name = "LOCAL", |
123 | .startup = jensen_local_startup, | 91 | .irq_unmask = jensen_local_enable, |
124 | .shutdown = jensen_local_shutdown, | 92 | .irq_mask = jensen_local_disable, |
125 | .enable = jensen_local_enable, | 93 | .irq_mask_ack = jensen_local_mask_ack, |
126 | .disable = jensen_local_disable, | ||
127 | .ack = jensen_local_ack, | ||
128 | .end = jensen_local_end, | ||
129 | }; | 94 | }; |
130 | 95 | ||
131 | static void | 96 | static void |
@@ -158,7 +123,7 @@ jensen_device_interrupt(unsigned long vector) | |||
158 | } | 123 | } |
159 | 124 | ||
160 | /* If there is no handler yet... */ | 125 | /* If there is no handler yet... */ |
161 | if (irq_desc[irq].action == NULL) { | 126 | if (!irq_has_action(irq)) { |
162 | /* If it is a local interrupt that cannot be masked... */ | 127 | /* If it is a local interrupt that cannot be masked... */ |
163 | if (vector >= 0x900) | 128 | if (vector >= 0x900) |
164 | { | 129 | { |
@@ -206,11 +171,11 @@ jensen_init_irq(void) | |||
206 | { | 171 | { |
207 | init_i8259a_irqs(); | 172 | init_i8259a_irqs(); |
208 | 173 | ||
209 | irq_desc[1].chip = &jensen_local_irq_type; | 174 | irq_set_chip_and_handler(1, &jensen_local_irq_type, handle_level_irq); |
210 | irq_desc[4].chip = &jensen_local_irq_type; | 175 | irq_set_chip_and_handler(4, &jensen_local_irq_type, handle_level_irq); |
211 | irq_desc[3].chip = &jensen_local_irq_type; | 176 | irq_set_chip_and_handler(3, &jensen_local_irq_type, handle_level_irq); |
212 | irq_desc[7].chip = &jensen_local_irq_type; | 177 | irq_set_chip_and_handler(7, &jensen_local_irq_type, handle_level_irq); |
213 | irq_desc[9].chip = &jensen_local_irq_type; | 178 | irq_set_chip_and_handler(9, &jensen_local_irq_type, handle_level_irq); |
214 | 179 | ||
215 | common_init_isa_dma(); | 180 | common_init_isa_dma(); |
216 | } | 181 | } |