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

Commit 5d5119a4 authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'clockevents/fixes' of...

Merge branch 'clockevents/fixes' of git://git.linaro.org/people/daniel.lezcano/linux

 into timers/urgent

Pull clockevents/clocksource fixes from Daniel Lezcano:

  * Axel Lin added a missing dependency on CLKSRC_MMIO in the Kconfig
    for the time-efm32

  * Dinh Nguyen fixed read_sched_clock to return the right value and
    added the clksrc-of missing definition for the dw_apb_timer

  * Ezequiel Garcia registered the sched clock after the counter,
    thus preventing time jump in the traces for the armada-370-xp

  * Marc Zyngier stopped the timer before enabling the irq in order
    to prevent it to be fired before the clockevent is registered for
    the sunxi

  * Thierry Reding removed a of_node_put in clksrc-of because the
    reference is not held

Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parents 17b2112f 9ab4727c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ config CLKSRC_DBX500_PRCMU_SCHED_CLOCK
config CLKSRC_EFM32
	bool "Clocksource for Energy Micro's EFM32 SoCs" if !ARCH_EFM32
	depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST)
	select CLKSRC_MMIO
	default ARCH_EFM32
	help
	  Support to use the timers of EFM32 SoCs as clock source and clock
+0 −1
Original line number Diff line number Diff line
@@ -35,6 +35,5 @@ void __init clocksource_of_init(void)

		init_func = match->data;
		init_func(np);
		of_node_put(np);
	}
}
+4 −3
Original line number Diff line number Diff line
@@ -108,12 +108,11 @@ static void __init add_clocksource(struct device_node *source_timer)

static u64 read_sched_clock(void)
{
	return __raw_readl(sched_io_base);
	return ~__raw_readl(sched_io_base);
}

static const struct of_device_id sptimer_ids[] __initconst = {
	{ .compatible = "picochip,pc3x2-rtc" },
	{ .compatible = "snps,dw-apb-timer-sp" },
	{ /* Sentinel */ },
};

@@ -151,4 +150,6 @@ static void __init dw_apb_timer_init(struct device_node *timer)
	num_called++;
}
CLOCKSOURCE_OF_DECLARE(pc3x2_timer, "picochip,pc3x2-timer", dw_apb_timer_init);
CLOCKSOURCE_OF_DECLARE(apb_timer, "snps,dw-apb-timer-osc", dw_apb_timer_init);
CLOCKSOURCE_OF_DECLARE(apb_timer_osc, "snps,dw-apb-timer-osc", dw_apb_timer_init);
CLOCKSOURCE_OF_DECLARE(apb_timer_sp, "snps,dw-apb-timer-sp", dw_apb_timer_init);
CLOCKSOURCE_OF_DECLARE(apb_timer, "snps,dw-apb-timer", dw_apb_timer_init);
+3 −0
Original line number Diff line number Diff line
@@ -179,6 +179,9 @@ static void __init sun4i_timer_init(struct device_node *node)
	writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
	       timer_base + TIMER_CTL_REG(0));

	/* Make sure timer is stopped before playing with interrupts */
	sun4i_clkevt_time_stop(0);

	ret = setup_irq(irq, &sun4i_timer_irq);
	if (ret)
		pr_warn("failed to setup irq %d\n", irq);
+5 −5
Original line number Diff line number Diff line
@@ -255,11 +255,6 @@ static void __init armada_370_xp_timer_common_init(struct device_node *np)

	ticks_per_jiffy = (timer_clk + HZ / 2) / HZ;

	/*
	 * Set scale and timer for sched_clock.
	 */
	sched_clock_register(armada_370_xp_read_sched_clock, 32, timer_clk);

	/*
	 * Setup free-running clocksource timer (interrupts
	 * disabled).
@@ -270,6 +265,11 @@ static void __init armada_370_xp_timer_common_init(struct device_node *np)
	timer_ctrl_clrset(0, TIMER0_EN | TIMER0_RELOAD_EN |
			     TIMER0_DIV(TIMER_DIVIDER_SHIFT));

	/*
	 * Set scale and timer for sched_clock.
	 */
	sched_clock_register(armada_370_xp_read_sched_clock, 32, timer_clk);

	clocksource_mmio_init(timer_base + TIMER0_VAL_OFF,
			      "armada_370_xp_clocksource",
			      timer_clk, 300, 32, clocksource_mmio_readl_down);