David Wuertele wrote:
I wrote:
Has the system timer paradigm changed between 2.6.18 and 2.6.29?
I'm trying to update my Broadcom-based embedded system to 2.6.29,
and I'm running into problems getting the system timer to run.
I solved my problem, though I'm still a little unclear about the reasoning.
The solution was to enable these:
CONFIG_CEVT_R4K=y
CONFIG_CSRC_R4K=y
I also had to define get_c0_compare_int() to return the system timer
interrupt. Once I had done these things, start_kernel() calls time_init(),
which calls mips_clockevent_init() and init_mips_clocksource().
init_mips_clocksource() calls the init_r4k_clocksource() that was
enabled with the new config options. Now my system clock runs like I think it
should.
I think I might not need the CEVT components... I'm going to look into that
next.
No, you do need them. That is the source of the interrupts. Using the
standard cevt-r4k.c you get nice things like the tickless kernel all for
free.
But I wish there was some easy to find documentation about why this
code had to be moved into the arch/mips/cevt-*.c and arch/mips/csrc-*.c
libraries.
It had to change because the entire Linux time keeping infrastructure
change to use the generic clock source and clock event system.
David Daney