[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20170206185015.12296-2-fu.wei@linaro.org>
Date: Tue, 7 Feb 2017 02:50:03 +0800
From: fu.wei@...aro.org
To: rjw@...ysocki.net, lenb@...nel.org, daniel.lezcano@...aro.org,
tglx@...utronix.de, marc.zyngier@....com, mark.rutland@....com,
lorenzo.pieralisi@....com, sudeep.holla@....com,
hanjun.guo@...aro.org
Cc: linux-arm-kernel@...ts.infradead.org, linaro-acpi@...ts.linaro.org,
linux-kernel@...r.kernel.org, linux-acpi@...r.kernel.org,
rruigrok@...eaurora.org, harba@...eaurora.org, cov@...eaurora.org,
timur@...eaurora.org, graeme.gregory@...aro.org,
al.stone@...aro.org, jcm@...hat.com, wei@...hat.com, arnd@...db.de,
catalin.marinas@....com, will.deacon@....com,
Suravee.Suthikulpanit@....com, leo.duran@....com, wim@...ana.be,
linux@...ck-us.net, linux-watchdog@...r.kernel.org,
tn@...ihalf.com, christoffer.dall@...aro.org, julien.grall@....com,
Fu Wei <fu.wei@...aro.org>
Subject: [PATCH v21 01/13] clocksource: arm_arch_timer: introduce two functions to get the frequency from mmio and sysreg.
From: Fu Wei <fu.wei@...aro.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@...aro.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
Powered by blists - more mailing lists