]>
Commit | Line | Data |
---|---|---|
1802d0be | 1 | // SPDX-License-Identifier: GPL-2.0-only |
220e2a8d | 2 | /* |
220e2a8d PM |
3 | * |
4 | * Copyright (C) 2014 ARM Limited | |
5 | */ | |
6 | ||
7 | #include <linux/clocksource.h> | |
8 | #include <linux/io.h> | |
7a3768c2 | 9 | #include <linux/of.h> |
220e2a8d PM |
10 | #include <linux/of_address.h> |
11 | #include <linux/sched_clock.h> | |
12 | ||
13 | #define SYS_24MHZ 0x05c | |
14 | ||
15 | static void __iomem *versatile_sys_24mhz; | |
16 | ||
1605abff | 17 | static u64 notrace versatile_sys_24mhz_read(void) |
220e2a8d PM |
18 | { |
19 | return readl(versatile_sys_24mhz); | |
20 | } | |
21 | ||
86de9628 | 22 | static int __init versatile_sched_clock_init(struct device_node *node) |
220e2a8d PM |
23 | { |
24 | void __iomem *base = of_iomap(node, 0); | |
25 | ||
7a3768c2 SK |
26 | of_node_clear_flag(node, OF_POPULATED); |
27 | ||
220e2a8d | 28 | if (!base) |
86de9628 | 29 | return -ENXIO; |
220e2a8d PM |
30 | |
31 | versatile_sys_24mhz = base + SYS_24MHZ; | |
32 | ||
1605abff | 33 | sched_clock_register(versatile_sys_24mhz_read, 32, 24000000); |
86de9628 DL |
34 | |
35 | return 0; | |
220e2a8d | 36 | } |
17273395 | 37 | TIMER_OF_DECLARE(vexpress, "arm,vexpress-sysreg", |
f2fa0299 | 38 | versatile_sched_clock_init); |
17273395 | 39 | TIMER_OF_DECLARE(versatile, "arm,versatile-sysreg", |
1605abff | 40 | versatile_sched_clock_init); |