Hi,
I am developing an embedded system using the i.MX8QX processor but I need support for the framebuffer inside Linux. I have a "working" /dev/fb0 device node but it is somehow locked to 16-bit colour.
Here is a snippet of kernel messages during bootup:
[ 3.134245] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 3.140910] [drm] No driver support for vblank timestamp query.
[ 3.146941] imx-drm display-subsystem: bound imx-drm-dpu-bliteng.2 (ops dpu_bliteng_ops)
[ 3.155274] imx-drm display-subsystem: bound imx-dpu-crtc.0 (ops dpu_crtc_ops)
[ 3.162718] imx-drm display-subsystem: bound imx-dpu-crtc.1 (ops dpu_crtc_ops)
[ 3.170815] imx-drm display-subsystem: bound bus@56220000:ldb@562210e0 (ops imx_ldb_ops)
[ 3.179496] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 0
[ 3.288411] Console: switching to colour frame buffer device 160x50
[ 3.308826] imx-drm display-subsystem: fb0: imx-drmdrmfb frame buffer device
Using fbset to increase the bit-depth to 24 or 32 fails with an error:
# fbset -s
mode "1280x800"
geometry 1280 800 1280 800 16
timings 0 0 0 0 0 0 0
accel true
rgba 5/11,6/5,5/0,0/0
endmode
# fbset -depth 32
ioctl FBIOPUT_VSCREENINFO: Invalid argument
Any help would be greatly appreciated. The problem I have is that I must have access to the framebuffer at full 24/32 bit colour. The application I am porting to the new hardware runs on top of Qt 4.7 which doesn't have a working OpenGL driver (I've tested it) and at the present time the task of moving the code from Qt 4.7 to Qt 5.x is too great due to the amount of breaking changes between the two Qt versions and as a result I am stuck with Qt 4 for the present time.
Many thanks,
Andy
Hello AndyG1001,
I don't think changing any such interactively is supported on any Embedded Linux platform. Usually, such frame buffer colour depth is a boot time setting. However, nowadays NXP is using DRM/KMS for the i.MX 8 series and the framebuffer is obsolete and just emulated anyway. So what exactly is it that you are trying to achieve. How/where exactly are you trying to display what exactly? btw the i.MX8 dont support QT4.x it support QT5.x
Regards
Thanks for your answer. Do you know how I can set the framebuffer colour depth at boot time? I couldn't find any documentation on that, I'm afraid. I had read elsewhere that the framebuffer is just emulated, but surely there must be a way to determine the colour depth even on an emulated framebuffer -- I can't imagine it was designed with a limitation to 16-bit only
With regard to what we're trying to achieve, medium term we want to move software and hardware to the next level, i.e. i.MX6 to i.MX8 and Qt 4 to Qt 6. However, we have to do it in stages and the hardware stage has to be done first (for other reasons). Therefore since the embedded version of Qt 4 doesn't really support anything other than the framebuffer, we have to find a way to make the framebuffer emulation work somehow. Dropping to 16-bit colour is pretty ugly.
I'm more than willing to get into modifying the kernel framebuffer emulation if this is required and if you would be able, please, to at least point me to the right section of the kernel source tree.