[RFC 3/5] ARM: OMAP2+: timer: Add clocksource initialization and powerup support
Rob Herring
robh at kernel.org
Thu Mar 13 17:52:50 EDT 2014
On Thu, Mar 13, 2014 at 3:35 PM, Joel Fernandes <joelf at ti.com> wrote:
> Introduce a generic omap timer initialization function that can
> be used by all SoCs for which support is available in the clocksource
> driver introduced in the series.
>
> The function will also be responsible for calling clock initialization
> required for everything else to work.
>
> Signed-off-by: Joel Fernandes <joelf at ti.com>
> ---
> arch/arm/mach-omap2/common.h | 1 +
> arch/arm/mach-omap2/timer.c | 28 ++++++++++++++++++++++++++++
> 2 files changed, 29 insertions(+)
>
> diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
> index a6aae30..e58d9a4 100644
> --- a/arch/arm/mach-omap2/common.h
> +++ b/arch/arm/mach-omap2/common.h
> @@ -92,6 +92,7 @@ extern void omap3_secure_sync32k_timer_init(void);
> extern void omap3_gptimer_timer_init(void);
> extern void omap4_local_timer_init(void);
> extern void omap5_realtime_timer_init(void);
> +void omap_generic_timer_init(void);
>
> void omap2420_init_early(void);
> void omap2430_init_early(void);
> diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c
> index 74044aa..08c73a0 100644
> --- a/arch/arm/mach-omap2/timer.c
> +++ b/arch/arm/mach-omap2/timer.c
> @@ -324,6 +324,25 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
> return r;
> }
>
> +int __init omap_dmtimer_powerup(struct omap_dm_timer *timer,
> + struct device_node *np) {
This function seems unrelated to the commit message.
> + struct omap_hwmod *oh;
> + const char *oh_name = NULL;
> +
> + of_property_read_string_index(np, "ti,hwmods", 0, &oh_name);
> + if (!oh_name)
> + return -ENODEV;
> +
> + oh = omap_hwmod_lookup(oh_name);
> + if (!oh)
> + return -ENODEV;
> +
> + omap_hwmod_setup_one(oh_name);
> +
> + omap_hwmod_enable(oh);
> + return 0;
> +}
> +
> static void __init omap2_gp_clockevent_init(int gptimer_id,
> const char *fck_source,
> const char *property)
> @@ -615,6 +634,15 @@ static OMAP_SYS_32K_TIMER_INIT(4, 1, "timer_32k_ck", "ti,timer-alwon",
> 2, "sys_clkin_ck", NULL);
> #endif
>
> +void omap_generic_timer_init(void)
> +{
> + if (!of_have_populated_dt())
> + BUG_ON("Generic timer init should only be used for DT boot\n");
I thought omap2 is always DT boot now.
> +
> + omap_clk_init();
Can't you use CLK_OF_DECLARE and remove this? Then you can remove the
init_time function hook completely.
> + clocksource_of_init();
> +}
> +
> #ifdef CONFIG_ARCH_OMAP4
> #ifdef CONFIG_HAVE_ARM_TWD
> static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, OMAP44XX_LOCAL_TWD_BASE, 29);
> --
> 1.7.9.5
>
More information about the linux-arm-kernel
mailing list