Does setting outputen and pixclockpol like this also work for imx6?
Further, I have the following device-tree configuration. But after boot, fbset has / comes up with wrong settings. Is the mode_str wrong? Why does the kernel not take the settings for timings and mode_str? Maybe outputen and pixclockpol is also wrong then? Btw. fw_printenv shows the correct settings…
Hello,
the display needs to be initialized via SPI, video data is transfered via RGB. The SPI initialization code directly comes from densitron (SPI.cpp). The functions write_command(0x21) and write_data(0x03) set data enable (DE) to active high and clock polarity to falling time for RGB signal (see page 184 in IL9806E.pdf)
This should match the settings in Dts and u-boot command line:
Bootparam+Vesa.txt contains the complete u-boot params. However after boot, the system comes up with wrong settings. xrandr commands need to be executed to set the right timings. The problem is: After running the SPI initialization code and setting the timings the display shows an image, but is flickering and colors are wrong. Text is not clear.
Thanks for the files. The settings seems to be correct. Just one question, in vertical the active pixels should be 864 to get a 9:4 format, instead of 854. Could you also send/upload the schematic showing the connection of the display to the carrier board? Please send also a picture of the screen showing the wrong colours. Thanks.
The test pictures show us, that you have a mismatch in the transfer of the data bits. The fact that there is a four time repetition in the gradient test picture indicates, that you are certainly using 18-bit on the display side instead of 24 bit.
In your SPI.cpp on line 426 and 427 you write 0x60 to the register 0x3A (called Interface Pixel Format, page 164 in the datasheet). This set 18-bit per pixel, while the used settings in the device tree sends 24-bit per pixel. Using 24 bit on the Apalis module is recommended, that’s ok. But could you please set 0x70 to this register and enable 24-bit?
write_command(0x3A);
write_data(0x70);
If it is not working like this, please repeat the test with the test-pictures.
Best regards
Diego
Dear @diego_b.tx,
thank you very much! I have overlooked that.
I have changed SPI.cpp accordingly and the gradient test picture now looks good:
[upload|9LE98GfLvBomzC9EhdbLxH7IhME=]
Also the other test image looks fine:
[upload|6p7TZFKeF01Im+ARnbhKWUN5NMI=]
The desktop background color however still does not look right:
[upload|iDupVWob3gIDi5XmwDWCA4AOaDE=]
The destroyed black areas on the screen (“mouse trails”), as can be seen in the first picture, only occur after having used the rotate function of X (The display is mounted in landscape mode).
The desktop background color however still does not look right: alt text
The destroyed black areas on the screen (“mouse trails”), as can be seen in the first picture, only occur after having used the rotate function of X (The display is mounted in landscape mode).
The image looks good, but after rotating with xrandr -o left, the X-server seems to have problems. See this video.
Another question is still why after reboot the system does not take the display timings from the device tree, so that xrandr needs to be executed to apply the correct settings. In the meantime I have changed
the the first entry in the fb_videomode struct in drivers/video/fbdev/mxc/mxc_lcdif.c but I don’t think that this is actually the right approach.
Another question is still why after reboot the system does not take the display timings from the device tree, so that xrandr needs to be executed to apply the correct settings. In the meantime I have changed the the first entry in the fb_videomode struct in drivers/video/fbdev/mxc/mxc_lcdif.c but I don’t think that this is actually the right approach.
You should not change the driver. Try deleting all the other display settings and only having your settings in the device tree files.
Our application will run in a browser (full screen). So doing the rotation of 90 deg by the user application is not really an option. I have tried to rotate the website by JS, but the performance was even much worse than doing the rotation with X-server.
We know that doing the rotation with the X-Server will decrease performance, but it is still good enough.
The problem is, that the mouse cursor is not drawn correctly (see video above).
Currently in /etc/X11/xorg.conf there is Option “HWCursor” “false”
From what I have found on the net I don’t think that there is a working Kernel driver for imx6 available to do the rotation of 90 deg.
What do you think could be the best way trying to solve this issue?