irq.c (513b046c96cc2fbce730a3474f6f7ff0c4fdd05c) irq.c (1603b5aca4f15b34848fb5594d0c7b6333b99144)
1/*
2 * Copyright (C) 2000, 2001, 2002, 2003 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *

--- 30 unchanged lines hidden (view full) ---

39/*
40 * These are the routines that handle all the low level interrupt stuff.
41 * Actions handled here are: initialization of the interrupt map, requesting of
42 * interrupt lines by handlers, dispatching if interrupts to handlers, probing
43 * for interrupt lines
44 */
45
46
1/*
2 * Copyright (C) 2000, 2001, 2002, 2003 Broadcom Corporation
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *

--- 30 unchanged lines hidden (view full) ---

39/*
40 * These are the routines that handle all the low level interrupt stuff.
41 * Actions handled here are: initialization of the interrupt map, requesting of
42 * interrupt lines by handlers, dispatching if interrupts to handlers, probing
43 * for interrupt lines
44 */
45
46
47#define shutdown_sb1250_irq disable_sb1250_irq
48static void end_sb1250_irq(unsigned int irq);
49static void enable_sb1250_irq(unsigned int irq);
50static void disable_sb1250_irq(unsigned int irq);
47static void end_sb1250_irq(unsigned int irq);
48static void enable_sb1250_irq(unsigned int irq);
49static void disable_sb1250_irq(unsigned int irq);
51static unsigned int startup_sb1250_irq(unsigned int irq);
52static void ack_sb1250_irq(unsigned int irq);
53#ifdef CONFIG_SMP
54static void sb1250_set_affinity(unsigned int irq, cpumask_t mask);
55#endif
56
57#ifdef CONFIG_SIBYTE_HAS_LDT
58extern unsigned long ldt_eoi_space;
59#endif

--- 5 unchanged lines hidden (view full) ---

65int kgdb_port = 1;
66#ifdef CONFIG_SIBYTE_SB1250_DUART
67extern char sb1250_duart_present[];
68#endif
69#endif
70
71static struct irq_chip sb1250_irq_type = {
72 .typename = "SB1250-IMR",
50static void ack_sb1250_irq(unsigned int irq);
51#ifdef CONFIG_SMP
52static void sb1250_set_affinity(unsigned int irq, cpumask_t mask);
53#endif
54
55#ifdef CONFIG_SIBYTE_HAS_LDT
56extern unsigned long ldt_eoi_space;
57#endif

--- 5 unchanged lines hidden (view full) ---

63int kgdb_port = 1;
64#ifdef CONFIG_SIBYTE_SB1250_DUART
65extern char sb1250_duart_present[];
66#endif
67#endif
68
69static struct irq_chip sb1250_irq_type = {
70 .typename = "SB1250-IMR",
73 .startup = startup_sb1250_irq,
74 .shutdown = shutdown_sb1250_irq,
75 .enable = enable_sb1250_irq,
76 .disable = disable_sb1250_irq,
77 .ack = ack_sb1250_irq,
71 .ack = ack_sb1250_irq,
72 .mask = disable_sb1250_irq,
73 .mask_ack = ack_sb1250_irq,
74 .unmask = enable_sb1250_irq,
78 .end = end_sb1250_irq,
79#ifdef CONFIG_SMP
80 .set_affinity = sb1250_set_affinity
81#endif
82};
83
84/* Store the CPU id (not the logical number) */
85int sb1250_irq_owner[SB1250_NR_IRQS];

--- 72 unchanged lines hidden (view full) ---

158 }
159 spin_unlock(&sb1250_imr_lock);
160 spin_unlock_irqrestore(&desc->lock, flags);
161}
162#endif
163
164/*****************************************************************************/
165
75 .end = end_sb1250_irq,
76#ifdef CONFIG_SMP
77 .set_affinity = sb1250_set_affinity
78#endif
79};
80
81/* Store the CPU id (not the logical number) */
82int sb1250_irq_owner[SB1250_NR_IRQS];

--- 72 unchanged lines hidden (view full) ---

155 }
156 spin_unlock(&sb1250_imr_lock);
157 spin_unlock_irqrestore(&desc->lock, flags);
158}
159#endif
160
161/*****************************************************************************/
162
166static unsigned int startup_sb1250_irq(unsigned int irq)
167{
168 sb1250_unmask_irq(sb1250_irq_owner[irq], irq);
169
170 return 0; /* never anything pending */
171}
172
173
174static void disable_sb1250_irq(unsigned int irq)
175{
176 sb1250_mask_irq(sb1250_irq_owner[irq], irq);
177}
178
179static void enable_sb1250_irq(unsigned int irq)
180{
181 sb1250_unmask_irq(sb1250_irq_owner[irq], irq);

--- 52 unchanged lines hidden (view full) ---

234 }
235}
236
237
238void __init init_sb1250_irqs(void)
239{
240 int i;
241
163static void disable_sb1250_irq(unsigned int irq)
164{
165 sb1250_mask_irq(sb1250_irq_owner[irq], irq);
166}
167
168static void enable_sb1250_irq(unsigned int irq)
169{
170 sb1250_unmask_irq(sb1250_irq_owner[irq], irq);

--- 52 unchanged lines hidden (view full) ---

223 }
224}
225
226
227void __init init_sb1250_irqs(void)
228{
229 int i;
230
242 for (i = 0; i < NR_IRQS; i++) {
243 irq_desc[i].status = IRQ_DISABLED;
244 irq_desc[i].action = 0;
245 irq_desc[i].depth = 1;
246 if (i < SB1250_NR_IRQS) {
247 irq_desc[i].chip = &sb1250_irq_type;
248 sb1250_irq_owner[i] = 0;
249 } else {
250 irq_desc[i].chip = &no_irq_chip;
251 }
231 for (i = 0; i < SB1250_NR_IRQS; i++) {
232 set_irq_chip(i, &sb1250_irq_type);
233 sb1250_irq_owner[i] = 0;
252 }
253}
254
255
256static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id)
257{
258 return IRQ_NONE;
259}

--- 221 unchanged lines hidden ---
234 }
235}
236
237
238static irqreturn_t sb1250_dummy_handler(int irq, void *dev_id)
239{
240 return IRQ_NONE;
241}

--- 221 unchanged lines hidden ---