Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1575064
| From | fu.wei@linaro.org |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v21 01/13] clocksource: arm_arch_timer: introduce two functions to get the frequency from mmio and sysreg. |
| Date | 2017-02-06 20:00 +0100 |
| Message-ID | <t7WG6-ld-19@gated-at.bofh.it> (permalink) |
| References | <t7WG5-ld-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Fu Wei <fu.wei@linaro.org>
The patch introduce two new functions: arch_timer_get_sysreg_freq and
arch_timer_get_mmio_freq, and applys them in arch_timer_detect_rate.
These will be used for getting the frequency from mmio and sysreg to
prepare for reworking counter frequency detection.
Signed-off-by: Fu Wei <fu.wei@linaro.org>
---
drivers/clocksource/arm_arch_timer.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
index 46a1709..1d273d6 100644
--- a/drivers/clocksource/arm_arch_timer.c
+++ b/drivers/clocksource/arm_arch_timer.c
@@ -554,6 +554,23 @@ static int arch_timer_starting_cpu(unsigned int cpu)
return 0;
}
+static u32 arch_timer_get_sysreg_freq(void)
+{
+ /*
+ * Try to get the frequency from the CNTFRQ of sysreg.
+ */
+ return arch_timer_get_cntfrq();
+}
+
+static u32 arch_timer_get_mmio_freq(void __iomem *cntbase)
+{
+ /*
+ * Try to get the frequency from the CNTFRQ of timer frame registers.
+ * Note: please verify cntbase in caller.
+ */
+ return readl_relaxed(cntbase + CNTFRQ);
+}
+
static void
arch_timer_detect_rate(void __iomem *cntbase, struct device_node *np)
{
@@ -568,9 +585,9 @@ arch_timer_detect_rate(void __iomem *cntbase, struct device_node *np)
if (!acpi_disabled ||
of_property_read_u32(np, "clock-frequency", &arch_timer_rate)) {
if (cntbase)
- arch_timer_rate = readl_relaxed(cntbase + CNTFRQ);
+ arch_timer_rate = arch_timer_get_mmio_freq(cntbase);
else
- arch_timer_rate = arch_timer_get_cntfrq();
+ arch_timer_rate = arch_timer_get_sysreg_freq();
}
/* Check the timer frequency. */
--
2.9.3
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
[PATCH v21 01/13] clocksource: arm_arch_timer: introduce two functions to get the frequency from mmio and sysreg. fu.wei@linaro.org - 2017-02-06 20:00 +0100
csiph-web