aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-02-04 14:08:36 -0500
committerThomas Gleixner <tglx@linutronix.de>2011-03-29 08:48:01 -0400
commit545c8d8d4f03b2d9d3a556b05e7eaf2019c530d7 (patch)
tree34e3a9fdbd48cd436da24283f0fc2622c5ebb379 /arch/ia64
parent42c9a74d0ed6b2034ac450058b6b2cc0cc81139e (diff)
ia64: Convert sn to new irq_chip functions
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/sn/kernel/irq.c44
1 files changed, 23 insertions, 21 deletions
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c
index 658c716283c..15193df5604 100644
--- a/arch/ia64/sn/kernel/irq.c
+++ b/arch/ia64/sn/kernel/irq.c
@@ -78,34 +78,34 @@ u64 sn_intr_redirect(nasid_t local_nasid, int local_widget,
78 return ret_stuff.status; 78 return ret_stuff.status;
79} 79}
80 80
81static unsigned int sn_startup_irq(unsigned int irq) 81static unsigned int sn_startup_irq(struct irq_data *data)
82{ 82{
83 return 0; 83 return 0;
84} 84}
85 85
86static void sn_shutdown_irq(unsigned int irq) 86static void sn_shutdown_irq(struct irq_data *data)
87{ 87{
88} 88}
89 89
90extern void ia64_mca_register_cpev(int); 90extern void ia64_mca_register_cpev(int);
91 91
92static void sn_disable_irq(unsigned int irq) 92static void sn_disable_irq(struct irq_data *data)
93{ 93{
94 if (irq == local_vector_to_irq(IA64_CPE_VECTOR)) 94 if (data->irq == local_vector_to_irq(IA64_CPE_VECTOR))
95 ia64_mca_register_cpev(0); 95 ia64_mca_register_cpev(0);
96} 96}
97 97
98static void sn_enable_irq(unsigned int irq) 98static void sn_enable_irq(struct irq_data *data)
99{ 99{
100 if (irq == local_vector_to_irq(IA64_CPE_VECTOR)) 100 if (data->irq == local_vector_to_irq(IA64_CPE_VECTOR))
101 ia64_mca_register_cpev(irq); 101 ia64_mca_register_cpev(data->irq);
102} 102}
103 103
104static void sn_ack_irq(unsigned int irq) 104static void sn_ack_irq(struct irq_data *data)
105{ 105{
106 u64 event_occurred, mask; 106 u64 event_occurred, mask;
107 unsigned int irq = data->irq & 0xff;
107 108
108 irq = irq & 0xff;
109 event_occurred = HUB_L((u64*)LOCAL_MMR_ADDR(SH_EVENT_OCCURRED)); 109 event_occurred = HUB_L((u64*)LOCAL_MMR_ADDR(SH_EVENT_OCCURRED));
110 mask = event_occurred & SH_ALL_INT_MASK; 110 mask = event_occurred & SH_ALL_INT_MASK;
111 HUB_S((u64*)LOCAL_MMR_ADDR(SH_EVENT_OCCURRED_ALIAS), mask); 111 HUB_S((u64*)LOCAL_MMR_ADDR(SH_EVENT_OCCURRED_ALIAS), mask);
@@ -206,9 +206,11 @@ finish_up:
206 return new_irq_info; 206 return new_irq_info;
207} 207}
208 208
209static int sn_set_affinity_irq(unsigned int irq, const struct cpumask *mask) 209static int sn_set_affinity_irq(struct irq_data *data,
210 const struct cpumask *mask, bool force)
210{ 211{
211 struct sn_irq_info *sn_irq_info, *sn_irq_info_safe; 212 struct sn_irq_info *sn_irq_info, *sn_irq_info_safe;
213 unsigned int irq = data->irq;
212 nasid_t nasid; 214 nasid_t nasid;
213 int slice; 215 int slice;
214 216
@@ -237,25 +239,25 @@ void sn_set_err_irq_affinity(unsigned int irq) { }
237#endif 239#endif
238 240
239static void 241static void
240sn_mask_irq(unsigned int irq) 242sn_mask_irq(struct irq_data *data)
241{ 243{
242} 244}
243 245
244static void 246static void
245sn_unmask_irq(unsigned int irq) 247sn_unmask_irq(struct irq_data *data)
246{ 248{
247} 249}
248 250
249struct irq_chip irq_type_sn = { 251struct irq_chip irq_type_sn = {
250 .name = "SN hub", 252 .name = "SN hub",
251 .startup = sn_startup_irq, 253 .irq_startup = sn_startup_irq,
252 .shutdown = sn_shutdown_irq, 254 .irq_shutdown = sn_shutdown_irq,
253 .enable = sn_enable_irq, 255 .irq_enable = sn_enable_irq,
254 .disable = sn_disable_irq, 256 .irq_disable = sn_disable_irq,
255 .ack = sn_ack_irq, 257 .irq_ack = sn_ack_irq,
256 .mask = sn_mask_irq, 258 .irq_mask = sn_mask_irq,
257 .unmask = sn_unmask_irq, 259 .irq_unmask = sn_unmask_irq,
258 .set_affinity = sn_set_affinity_irq 260 .irq_set_affinity = sn_set_affinity_irq
259}; 261};
260 262
261ia64_vector sn_irq_to_vector(int irq) 263ia64_vector sn_irq_to_vector(int irq)