summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorDaniel Schultz <d.schultz@phytec.de>2016-01-25 08:44:13 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2016-01-26 08:01:06 +0100
commita4a28df47dcd88571cb46af314c03684220bb6dd (patch)
treeffb7f48d33a8fb934ef0cff2ca2682bec2c64f9e /arch
parent39ebd7e73bec3a96f1563dcb89793b1dff187b13 (diff)
downloadbarebox-a4a28df47dcd88571cb46af314c03684220bb6dd.tar.gz
barebox-a4a28df47dcd88571cb46af314c03684220bb6dd.tar.xz
arm: am33xx: Move function to read from Master OSC
Move the function to read the Master OSC speed from the SYSBOOT Configuration Pin for reuse. Signed-off-by: Daniel Schultz <d.schultz@phytec.de> Signed-off-by: Teresa Remmet <t.remmet@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-omap/am33xx_clock.c27
-rw-r--r--arch/arm/mach-omap/dmtimer.c20
-rw-r--r--arch/arm/mach-omap/include/mach/am33xx-clock.h1
3 files changed, 31 insertions, 17 deletions
diff --git a/arch/arm/mach-omap/am33xx_clock.c b/arch/arm/mach-omap/am33xx_clock.c
index 6d8addef32..3ed1d52e09 100644
--- a/arch/arm/mach-omap/am33xx_clock.c
+++ b/arch/arm/mach-omap/am33xx_clock.c
@@ -318,3 +318,30 @@ void am33xx_pll_init(int mpupll_M, int osc, int ddrpll_M)
/* Enable the required peripherals */
am33xx_enable_per_clocks();
}
+
+/*
+ * Return the OSC clock value from SYSBOOT pins in kHz.
+ */
+int am33xx_get_osc_clock(void)
+{
+ int osc;
+ u32 sysboot;
+
+ sysboot = (readl(AM33XX_CTRL_STATUS) >> 22) & 3;
+ switch (sysboot) {
+ case 0:
+ osc = 19200;
+ break;
+ case 1:
+ osc = 24000;
+ break;
+ case 2:
+ osc = 25000;
+ break;
+ case 3:
+ osc = 26000;
+ break;
+ }
+
+ return osc;
+}
diff --git a/arch/arm/mach-omap/dmtimer.c b/arch/arm/mach-omap/dmtimer.c
index 56adda080a..e223b8cc8f 100644
--- a/arch/arm/mach-omap/dmtimer.c
+++ b/arch/arm/mach-omap/dmtimer.c
@@ -31,6 +31,7 @@
#include <init.h>
#include <io.h>
#include <mach/am33xx-silicon.h>
+#include <mach/am33xx-clock.h>
#include <stdio.h>
@@ -82,24 +83,9 @@ static struct clocksource dmtimer_cs = {
static int dmtimer_init(void)
{
u64 clk_speed;
- int sysboot;
-
- sysboot = (readl(AM33XX_CTRL_STATUS) >> 22) & 3;
- switch (sysboot) {
- case 0:
- clk_speed = 19200000;
- break;
- case 1:
- clk_speed = 24000000;
- break;
- case 2:
- clk_speed = 25000000;
- break;
- case 3:
- clk_speed = 26000000;
- break;
- }
+ clk_speed = am33xx_get_osc_clock();
+ clk_speed *= 1000;
dmtimer_cs.mult = clocksource_hz2mult(clk_speed, dmtimer_cs.shift);
/* Enable counter */
diff --git a/arch/arm/mach-omap/include/mach/am33xx-clock.h b/arch/arm/mach-omap/include/mach/am33xx-clock.h
index 2d6a727e1c..b9dcebd9a5 100644
--- a/arch/arm/mach-omap/include/mach/am33xx-clock.h
+++ b/arch/arm/mach-omap/include/mach/am33xx-clock.h
@@ -185,5 +185,6 @@
void am33xx_pll_init(int mpupll_M, int osc, int ddrpll_M);
void am33xx_enable_ddr_clocks(void);
+int am33xx_get_osc_clock(void);
#endif /* endif _AM33XX_CLOCKS_H_ */