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 --- |