[Letux-kernel] [PATCH 00/20] A bunch of JZ4730 fixups for letux-kernel

H. Nikolaus Schaller hns at goldelico.com
Tue Jan 12 20:17:51 CET 2021

> Am 12.01.2021 um 19:29 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>> Am 12.01.2021 um 19:03 schrieb H. Nikolaus Schaller <hns at goldelico.com>:
>> Then, scanning starts and I can reset ENA or set DIS to get it stopped. Or restarted. The QD and LDD
>> bits follow. But no interrupts occur.
> Well, interrupts are not disabled or broken. They just do not occur...
> I managed to trigger some while playing around with the ENA and DIS flags.
> But haven't found a pattern.
> root at letux:~# devmem2 0x13050030 w 0x2400201c
> /dev/mem opened.
> Memory mapped at address 0x77edd000.
> Value at address 0x13050030 (0x77edd030): 0x2400200C
> Written 0x2400201C; readback 0x2400201C
> ** 8263 printk messages dropped **
> [   10.900766] ingenic_drm_irq_handler 0x00000030
> [   10.900039] ingenic_drm_irq_handler 0x00000030
> [   10.899312] ingenic_drm_irq_handler 0x00000030
> ...

Just for preparing next steps, here is an analysis how the 2.6.24 kernel
does set up and enable the LCDC:

* setting up the descriptors:


* initializing the hardware LCDC and CGU):


* suspend/resume with disable/enable lcd


Note the special code for jz4730!

* header files - but mainly for panel/board specific gpio and pwm setup:


* headers for macros like __lcd_set_ena();

- to be identified

BTW: the driver seems to use a palette to handle different depths - at least for small depths.
And, there is a daemon that can rotate the framebuffer on the fly...
Quite elaborated in capabilities but >500% different from the modern drm and framebuffer code.

It is also possible to search for CONFIG_SOC_JZ4730 or CONFIG_SOC_JZ4740 to
see differences. There aren't many. Of course the additional depths and some different
clock calculations. And minor differences in suspend/resume.


More information about the Letux-kernel mailing list