[Letux-kernel] [PATCH 00/20] A bunch of JZ4730 fixups for letux-kernel
Paul Boddie
paul at boddie.org.uk
Sun Dec 27 22:32:17 CET 2020
On Sunday, 27 December 2020 20:07:04 CET H. Nikolaus Schaller wrote:
>
> Am 26.12.2020 um 22:16 schrieb Paul Boddie <paul at boddie.org.uk>:
> >
> > I suppose that there is some uncertainty about what will cause interrupt
> > conditions. I would have to look at the manual again, but I don't think it
> > is very thorough about that.
>
> Well, it only mentions to enable interrupts in the flow chart. But has no
> explanation and the flow-charts do not use interrupts at all. Besides
> enabling them...
Yes, it isn't the most helpful documentation ever. There's almost more benefit
to be had from reading the vendor code. :-)
[...]
> So may either have a problem with u64 emulation or our scheduler clock
> doesn't work correctly. The latter would also explain why boot and X11 has
> these hickups.
It will need more investigation, certainly.
> >> I am not at all sure but it may have started with the latest TCU/CGU
> >> update?
> >
> > No, it was in your earlier logs, too. I had to sort one of them to make
> > sense of it.
>
> Yes, you are right. It is already jittering in the regs-5.10.txt. I just
> didn't notice. Anyways the time scale seems to have changed by a factor
> between 10 and 16. In regs-5.10.txt it was
>
> [ 0.178323] jz4740-mmc 10021000.mmc: Ingenic SD/MMC card driver
> registered [ 0.169440] jz4740-mmc 10021000.mmc: Using PIO, 4-bit mode
> [ 0.175484] reg: cpm
> [ 0.177888] reg: 10000000: 0d522220
> [ 0.181572] reg: 10000004: 000000f8
> [ 0.185254] reg: 10000008: 00000001
> [ 0.171697] reg: 1000000c: 00000000
>
> Now it is
>
> [ 2.588107] jz4740-mmc 10021000.mmc: Ingenic SD/MMC card driver
> registered [ 2.804999] jz4740-mmc 10021000.mmc: Using PIO, 4-bit mode
> [ 1.840017] reg: cpm
> [ 1.912256] reg: 10000000: 0d522220
> [ 2.024097] reg: 10000004: 000000f8
> [ 2.168697] reg: 10000008: 00000001
> [ 2.281562] reg: 1000000c: 00000000
>
> which is closer to real time.
I wonder if /proc/interrupts or whatever it is has any useful details. Every
time the timers wrap around, there should be an interrupt, and this would
presumably increment some counter that might be recorded in /proc/interrupts
if nowhere else.
The factor of 16 improvement is intriguing. Initially, I thought that the
timers were being set up using the wrong value (2, corresponding to EXCLK on
the JZ4740 but corresponding to PCLK/16 on the JZ4730), this coming from the
device tree.
But then I considered that I had misunderstood the relationships between the
device tree and driver, which are rather elaborate/incoherent (as usual), and
that since a value of 5 (EXCLK on the JZ4730) was being written into the input
clock field, it seemed that the lookup for EXCLK was happening correctly.
But if PCLK/16 were being set up, and if PCLK were set to be EXCLK, this might
be an explanation for the clock speed issue.
[...]
> So I am now trying to use the flow-chart in non-irq mode to print and
> analyse how the status and control register flags really are doing, i.e.
> when they are reset. What I don't know is how to check if they would
> generate an interrupt request or release it.
I haven't got into looking at this yet. I was actually getting back to
building my other software for the Ben NanoNote, just to make sure I still
can, and then I was going to build that software for the Minibook and to see
if I could also debug this and other issues. Building Linux would also be
something to try as well, obviously.
I had also considered looking at I2C support on the Ben NanoNote given that we
know it has the same I2C peripheral as the Minibook. Unfortunately, the
NanoNote uses the two I2C pins as GPIOs for scanning the keypad and so cannot
be tested in this way.
This may also be a reason why no-one ever bothered to write a driver, or that
the driver development effort skipped I2C. There were other devices with the
JZ4740, like the Dingoo A320, and maybe they used these pins for I2C, but I
have no real familiarity with such devices or of the development efforts that
took place to support them.
Paul
More information about the Letux-kernel
mailing list