[PATCH] arm: omap2: Kconfig: select TWD and global timer on AM43xx devices
grygorii.strashko at ti.com
Fri Nov 13 09:15:04 PST 2015
On 11/13/2015 02:48 PM, Grygorii Strashko wrote:
> On 11/12/2015 08:06 PM, Felipe Balbi wrote:
>> Make sure to tell the kernel that AM437x has
>> TWD and global timers.
>> Signed-off-by: Felipe Balbi <balbi at ti.com>
>> Hi Tony,
>> now that all dependencies are in place, we can
>> finally enable twd and global_timer for AM437x.
> I'd appreciated if someone can clarify if all described below is valid.
> (may be some questions are dummy - sorry).
> After all last changes related to TI OMAP clock source/clock event/sched clock's
> devices configuration we will have the following for am437x case:
> "timer1", clockevent_gpt, .rating = 300, CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, ti,timer-alwon,
> "arm,twd-timer", twd_evt,.rating = 350, CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_C3STOP
> "arm_global_timer", gt_evt, rating = 300, CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERCPU
> "jiffies", clocksource_jiffies, rating = 1
> if use_gptimer_clksrc
> "timer2", clocksource_gpt, .rating = 300, CLOCK_SOURCE_IS_CONTINUOUS,
> |-sched_clock_register(dmtimer_read_sched_clock, 32, clksrc.rate);
> "ti,omap-counter32k", ti_32k_timer, .rating = 250, CLOCK_SOURCE_IS_CONTINUOUS | CLOCK_SOURCE_SUSPEND_NONSTOP,
> |-sched_clock_register(omap_32k_read_sched_clock, 32, 32768);
> "arm,global-timer", gt_clocksource, .rating = 300, CLOCK_SOURCE_IS_CONTINUOUS
> |-sched_clock_register(gt_sched_clock_read, 64, gt_clk_rate);
> 1) current clockevent device will be registered during registration of clockevent devices
> and it will be "arm,twd-timer" - processing sequence follows the way they are listed above.
> 2) current clocksource will be selected from fs_initcall(clocksource_done_booting);
> and it will be "arm,global-timer" or "timer2" if use_gptimer_clksrc
> 3) sched clock: "arm,global-timer" will be selected as sched_clock *always*,
> because it depend on Makefile order (if someone will decide to sort entries
> in drivers/clocksource/Makefile then "ti,omap-counter32k" most probably will
> be always selected as sched clock).
Ok. Sry. Above is not completely true. There are no dependency on makefile
and sched clock with Max freq will be selected - and never changed even if
corresponding clocksource can be changed through sysfs.
> As for me, "timer1" is selected as clockevent device incorrectly, because it's
> I think, "ti,omap-counter32k" will crash if use_gptimer_clksrc == true, because
> corresponding HWmod will not be enabled (not tested this case).
Ok. Below is confirmation for the case if use_gptimer_clksrc == true, so
"[PATCH 00/11] arm: omap: counter32k rework" introduces regression !?
timer2 arm_global_timer 32k_counter
/ # echo 32k_counter > /sys/devices/system/clocksource/clocksource0/current_cloc
[ 102.194313] Unhandled fault: imprecise external abort (0x1406) at 0x0020ab5c
[ 102.197862] pgd = ee22c000
More information about the linux-arm-kernel