hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/clocksource/timer-prima2.c
....@@ -1,9 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * System timer for CSR SiRFprimaII
34 *
45 * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company.
5
- *
6
- * Licensed under GPLv2 or later.
76 */
87
98 #include <linux/kernel.h>
....@@ -166,14 +165,6 @@
166165 .resume = sirfsoc_clocksource_resume,
167166 };
168167
169
-static struct irqaction sirfsoc_timer_irq = {
170
- .name = "sirfsoc_timer0",
171
- .flags = IRQF_TIMER,
172
- .irq = 0,
173
- .handler = sirfsoc_timer_interrupt,
174
- .dev_id = &sirfsoc_clockevent,
175
-};
176
-
177168 /* Overwrite weak default sched_clock with more precise one */
178169 static u64 notrace sirfsoc_read_sched_clock(void)
179170 {
....@@ -191,6 +182,7 @@
191182 static int __init sirfsoc_prima2_timer_init(struct device_node *np)
192183 {
193184 unsigned long rate;
185
+ unsigned int irq;
194186 struct clk *clk;
195187 int ret;
196188
....@@ -219,7 +211,7 @@
219211 return -ENXIO;
220212 }
221213
222
- sirfsoc_timer_irq.irq = irq_of_parse_and_map(np, 0);
214
+ irq = irq_of_parse_and_map(np, 0);
223215
224216 writel_relaxed(rate / PRIMA2_CLOCK_FREQ / 2 - 1,
225217 sirfsoc_timer_base + SIRFSOC_TIMER_DIV);
....@@ -235,7 +227,8 @@
235227
236228 sched_clock_register(sirfsoc_read_sched_clock, 64, PRIMA2_CLOCK_FREQ);
237229
238
- ret = setup_irq(sirfsoc_timer_irq.irq, &sirfsoc_timer_irq);
230
+ ret = request_irq(irq, sirfsoc_timer_interrupt, IRQF_TIMER,
231
+ "sirfsoc_timer0", &sirfsoc_clockevent);
239232 if (ret) {
240233 pr_err("Failed to setup irq\n");
241234 return ret;