| .. | .. |
|---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-or-later |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * System timer for CSR SiRFprimaII |
|---|
| 3 | 4 | * |
|---|
| 4 | 5 | * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. |
|---|
| 5 | | - * |
|---|
| 6 | | - * Licensed under GPLv2 or later. |
|---|
| 7 | 6 | */ |
|---|
| 8 | 7 | |
|---|
| 9 | 8 | #include <linux/kernel.h> |
|---|
| .. | .. |
|---|
| 166 | 165 | .resume = sirfsoc_clocksource_resume, |
|---|
| 167 | 166 | }; |
|---|
| 168 | 167 | |
|---|
| 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 | | - |
|---|
| 177 | 168 | /* Overwrite weak default sched_clock with more precise one */ |
|---|
| 178 | 169 | static u64 notrace sirfsoc_read_sched_clock(void) |
|---|
| 179 | 170 | { |
|---|
| .. | .. |
|---|
| 191 | 182 | static int __init sirfsoc_prima2_timer_init(struct device_node *np) |
|---|
| 192 | 183 | { |
|---|
| 193 | 184 | unsigned long rate; |
|---|
| 185 | + unsigned int irq; |
|---|
| 194 | 186 | struct clk *clk; |
|---|
| 195 | 187 | int ret; |
|---|
| 196 | 188 | |
|---|
| .. | .. |
|---|
| 219 | 211 | return -ENXIO; |
|---|
| 220 | 212 | } |
|---|
| 221 | 213 | |
|---|
| 222 | | - sirfsoc_timer_irq.irq = irq_of_parse_and_map(np, 0); |
|---|
| 214 | + irq = irq_of_parse_and_map(np, 0); |
|---|
| 223 | 215 | |
|---|
| 224 | 216 | writel_relaxed(rate / PRIMA2_CLOCK_FREQ / 2 - 1, |
|---|
| 225 | 217 | sirfsoc_timer_base + SIRFSOC_TIMER_DIV); |
|---|
| .. | .. |
|---|
| 235 | 227 | |
|---|
| 236 | 228 | sched_clock_register(sirfsoc_read_sched_clock, 64, PRIMA2_CLOCK_FREQ); |
|---|
| 237 | 229 | |
|---|
| 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); |
|---|
| 239 | 232 | if (ret) { |
|---|
| 240 | 233 | pr_err("Failed to setup irq\n"); |
|---|
| 241 | 234 | return ret; |
|---|