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

Commit 8da15e17 authored by Linus Walleij's avatar Linus Walleij
Browse files

ARM: ux500: decomission the non-DT MTU init sequence



The MTU is now only initialized using the native clocksource
device tree matching.

Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent bddd5a2b
Loading
Loading
Loading
Loading
+2 −26
Original line number Original line Diff line number Diff line
@@ -10,7 +10,6 @@
#include <linux/clocksource.h>
#include <linux/clocksource.h>
#include <linux/of.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_address.h>
#include <linux/platform_data/clocksource-nomadik-mtu.h>


#include <asm/smp_twd.h>
#include <asm/smp_twd.h>


@@ -44,17 +43,14 @@ const static struct of_device_id prcmu_timer_of_match[] __initconst = {


void __init ux500_timer_init(void)
void __init ux500_timer_init(void)
{
{
	void __iomem *mtu_timer_base;
	void __iomem *prcmu_timer_base;
	void __iomem *prcmu_timer_base;
	void __iomem *tmp_base;
	void __iomem *tmp_base;
	struct device_node *np;
	struct device_node *np;


	if (cpu_is_u8500_family() || cpu_is_ux540_family()) {
	if (cpu_is_u8500_family() || cpu_is_ux540_family())
		mtu_timer_base = __io_address(U8500_MTU0_BASE);
		prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
		prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
	} else {
	else
		ux500_unknown_soc();
		ux500_unknown_soc();
	}


	np = of_find_matching_node(NULL, prcmu_timer_of_match);
	np = of_find_matching_node(NULL, prcmu_timer_of_match);
	if (!np)
	if (!np)
@@ -67,26 +63,6 @@ void __init ux500_timer_init(void)
	prcmu_timer_base = tmp_base;
	prcmu_timer_base = tmp_base;


dt_fail:
dt_fail:
	/* Doing it the old fashioned way. */

	/*
	 * Here we register the timerblocks active in the system.
	 * Localtimers (twd) is started when both cpu is up and running.
	 * MTU register a clocksource, clockevent and sched_clock.
	 * Since the MTU is located in the VAPE power domain
	 * it will be cleared in sleep which makes it unsuitable.
	 * We however need it as a timer tick (clockevent)
	 * during boot to calibrate delay until twd is started.
	 * RTC-RTT have problems as timer tick during boot since it is
	 * depending on delay which is not yet calibrated. RTC-RTT is in the
	 * always-on powerdomain and is used as clockevent instead of twd when
	 * sleeping.
	 * The PRCMU timer 4 register a clocksource and
	 * sched_clock with higher rating then MTU since is always-on.
	 *
	 */
	if (!of_have_populated_dt())
		nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
	clksrc_dbx500_prcmu_init(prcmu_timer_base);
	clksrc_dbx500_prcmu_init(prcmu_timer_base);
	ux500_twd_init();
	ux500_twd_init();
}
}