[Letux-kernel] jz4730-i2c - clocksource
H. Nikolaus Schaller
hns at goldelico.com
Fri Mar 5 11:16:45 CET 2021
Hi Paul,
I have switched to attempt a different debugging approach.
The key observation is that we can boot with clocksource=jiffies.
And we can switch through /sys to clocksource=ingenic-timer.
The ingenic-timer seems to be running well (incl. interrupts),
at least if I boot to login:
Here is some log what happens if we switch the clock source:
root at letux:~# cat /proc/interrupts
CPU0
2: 144402 MIPS 2 SoC intc cascade interrupt
9: 1322 INTC 9 ttyS0
14: 7368 INTC 14 10021000.mmc
15: 0 GPIOA 0 matrix-keypad
16: 0 GPIOA 1 matrix-keypad
17: 0 GPIOA 2 matrix-keypad
18: 0 GPIOA 3 matrix-keypad
19: 0 GPIOA 4 matrix-keypad
21: 0 INTC 21 13020000.dma
24: 135738 INTC 24 TCU0
29: 0 GPIOA 5 matrix-keypad
31: 0 GPIOA 6 matrix-keypad
32: 0 GPIOA 7 matrix-keypad
33: 0 GPIOC 0 10021000.mmc cd
34: 0 GPIOA 16 Touchpad Left
35: 0 GPIOA 13 Touchpad Right
ERR: 0
root at letux:~# sleep 1;cat /proc/interrupts
CPU0
2: 145675 MIPS 2 SoC intc cascade interrupt
9: 1502 INTC 9 ttyS0
14: 7368 INTC 14 10021000.mmc
15: 0 GPIOA 0 matrix-keypad
16: 0 GPIOA 1 matrix-keypad
17: 0 GPIOA 2 matrix-keypad
18: 0 GPIOA 3 matrix-keypad
19: 0 GPIOA 4 matrix-keypad
21: 0 INTC 21 13020000.dma
24: 136831 INTC 24 TCU0
29: 0 GPIOA 5 matrix-keypad
31: 0 GPIOA 6 matrix-keypad
32: 0 GPIOA 7 matrix-keypad
33: 0 GPIOC 0 10021000.mmc cd
34: 0 GPIOA 16 Touchpad Left
35: 0 GPIOA 13 Touchpad Right
ERR: 0
root at letux:~# root at letux:~# cat clocksource
echo available
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
echo current
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
sleep 1
echo switching
echo ingenic-timer >/sys/devices/system/clocksource/clocksource0/current_clocksource
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
do
date
sleep 0.1
done
echo done
sleep 1
root at letux:~# ./clocksource
available
ingenic-timer jiffies
current
jiffies
switching
[ 682.715103] clocksource: Switched to clocksource ingenic-timer
Thu Jan 1 00:11:15 UTC 1970
I interpret this as:
* TCU0 interrupts are working
* the only other interrupt being active seems to be ttyS0
* cevt based on TCU0 is in operation despite clocksource=jiffies
* there are background processes making use of it
* sleep 1 works with clocksource=jiffies
* the first "date" command after switching still succeeds
* sleep 0.1 hangs with clocksource=ingenic-timer
So the questions become:
* which subsystem is using or preferring "clocksource"?
* and why does it break down if we switch clocksource
* why is cevt using TCU0 in clocksource=jiffies mode? Priority?
* how does jiffies work if there is no other timer & interrupt?
BR,
Nikolaus
More information about the Letux-kernel
mailing list