[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:
https://git.goldelico.com/?p=letux-kernel.git;a=blob;f=drivers/video/jzlcd.c;h=4ca63f8d9d663594fa632e7b8a7f2725f89f371d;hb=86df48ade42a3e852b10b26f11676da0e8c13ccc#l1029
* initializing the hardware LCDC and CGU):
https://git.goldelico.com/?p=letux-kernel.git;a=blob;f=drivers/video/jzlcd.c;h=4ca63f8d9d663594fa632e7b8a7f2725f89f371d;hb=86df48ade42a3e852b10b26f11676da0e8c13ccc#l1083
* suspend/resume with disable/enable lcd
https://git.goldelico.com/?p=letux-kernel.git;a=blob;f=drivers/video/jzlcd.c;h=4ca63f8d9d663594fa632e7b8a7f2725f89f371d;hb=86df48ade42a3e852b10b26f11676da0e8c13ccc#l1371
Note the special code for jz4730!
* header files - but mainly for panel/board specific gpio and pwm setup:
https://git.goldelico.com/?p=letux-kernel.git;a=blob;f=drivers/video/jzlcd.h;h=3676b9bc66c9bdfd89ec8c3990664579a2495d4b;hb=86df48ade42a3e852b10b26f11676da0e8c13ccc
* 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.
BR,
Nikolaus
More information about the Letux-kernel
mailing list