omap clocksource timer selection: dmtimer OR 32K-Sync timer

Shilimkar, Santosh santosh.shilimkar at ti.com
Fri Jan 13 07:49:24 EST 2012


On Fri, Jan 13, 2012 at 1:21 PM, Hiremath, Vaibhav <hvaibhav at ti.com> wrote:
> Hi,
>
> In case of AM33xx family of devices, we do not have 32K Sync timer
> (32K Counter) available; and the current implementation is based on
> compile-time option, where clock-source is chosen by something like,
>
> File - arch/arm/mach-omap2/timer.c
>
> #ifdef CONFIG_OMAP_32K_TIMER
> static void __init omap2_gp_clocksource_init(int unused, const char *dummy)
> {
> ...
> }
> #else
> static void __init omap2_gp_clocksource_init(int unused, const char *dummy)
> {
> ...
> }
> #endif
>
>
> But in order to support multi-omap build, we must
> make run-time decision to use the timer for kernel clock-source, either of -
>
>  - DMTIMER
>  - 32K Sync Timer
>
> The DMTIMER is already migrated to the HWMOD framework, but 32K Timer code
> has not yet migrated to it. So the question here is,
>
> 1) Does it make sense to migrate counter_32k.c to search entry in hwmod
>   table and if 32k_sync timer is available in hwmod table then use 32K
>   timer for Kernel clock-source
>   OR
>   Fall back to DMTIMER.
>
>   OMAP4 hwmod table already has entry,
>
>   static struct omap_hwmod omap44xx_counter_32k_hwmod = {
>         .name           = "counter_32k",
>   ...
>   };
>
>   We need to have similar entries in all devices where 32K timer is present.
>
> 2) OR simply add another cpu_is_am33xx() and then fall back to dmtimer?
>   Just to prove this, everything works here, I modified the code for this
>   and tested it on both AM335x EVM and AM37xEVM and it works fine for me.
>
>
> Any comments?? OR Better approach? OR anything which I am missing here?
>
You can register both the clock sources together with different
rating. Based on rating
timer code will automatically pick the better clock-source of two.
Ratings is based on the resolution of the timer.

That should remove the CONFIG option depedency.

Regards
Santosh



More information about the linux-arm-kernel mailing list