Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5817d10b authored by Sebastian Hesselbarth's avatar Sebastian Hesselbarth Committed by Jason Cooper
Browse files

ARM: dove: unify clock setup



This patch synchronizes the clock setup of dove with other orion-based
platforms.

In dove_find_tclk there was a note about DOVE_SAMPLE_HI/LO register to
detect tclk. While it might be possible to set a different tclk frequency
with reset strapping the Dove datasheets don't tell anything about tclk
frequency here. Therefore, I removed that comment.

Signed-off-by: default avatarSebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
parent 0510c8a0
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -33,8 +33,6 @@
#include <plat/addr-map.h>
#include "common.h"

static int get_tclk(void);

/*****************************************************************************
 * I/O Address Mapping
 ****************************************************************************/
@@ -70,12 +68,13 @@ void __init dove_map_io(void)
/*****************************************************************************
 * CLK tree
 ****************************************************************************/
static int dove_tclk;
static struct clk *tclk;

static void __init clk_init(void)
static void __init dove_clk_init(void)
{
	tclk = clk_register_fixed_rate(NULL, "tclk", NULL, CLK_IS_ROOT,
				       get_tclk());
				       dove_tclk);

	orion_clkdev_init(tclk);
}
@@ -188,16 +187,16 @@ void __init dove_init_early(void)
	orion_time_set_base(TIMER_VIRT_BASE);
}

static int get_tclk(void)
static int __init dove_find_tclk(void)
{
	/* use DOVE_RESET_SAMPLE_HI/LO to detect tclk */
	return 166666667;
}

static void __init dove_timer_init(void)
{
	dove_tclk = dove_find_tclk();
	orion_time_init(BRIDGE_VIRT_BASE, BRIDGE_INT_TIMER1_CLR,
			IRQ_DOVE_BRIDGE, get_tclk());
			IRQ_DOVE_BRIDGE, dove_tclk);
}

struct sys_timer dove_timer = {
@@ -285,8 +284,8 @@ void __init dove_sdio1_init(void)

void __init dove_init(void)
{
	printk(KERN_INFO "Dove 88AP510 SoC, ");
	printk(KERN_INFO "TCLK = %dMHz\n", (get_tclk() + 499999) / 1000000);
	pr_info("Dove 88AP510 SoC, TCLK = %d MHz.\n",
		(dove_tclk + 499999) / 1000000);

#ifdef CONFIG_CACHE_TAUROS2
	tauros2_init();
@@ -294,7 +293,7 @@ void __init dove_init(void)
	dove_setup_cpu_mbus();

	/* Setup root of clk tree */
	clk_init();
	dove_clk_init();

	/* internal devices that every board has */
	dove_rtc_init();