...
With the touch panel working, let’s move on to the display. In fact, you know the display is already working: the fbcon
kernel driver provides a console over the framebuffer, which is why you are seeing the Linux kernel messages on the screen. Nevertheless, let’s use the modetest program from libdrm. Without any argument, it just prints out some details about the available display hardware. First the encoders:
...
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
# modetest
trying to open device 'i915'...failed
trying to open device 'amdgpu'...failed
trying to open device 'radeon'...failed
trying to open device 'nouveau'...failed
trying to open device 'vmwgfx'...failed
trying to open device 'omapdrm'...failed
trying to open device 'exynos'...failed
trying to open device 'tilcdc'...failed
trying to open device 'msm'...failed
trying to open device 'sti'...failed
trying to open device 'tegra'...failed
trying to open device 'imx-drm'...failed
trying to open device 'rockchip'...failed
trying to open device 'atmel-hlcdc'...failed
trying to open device 'fsl-dcu-drm'...failed
trying to open device 'vc4'...failed
trying to open device 'virtio_gpu'...failed
trying to open device 'mediatek'...failed
trying to open device 'meson'...failed
trying to open device 'pl111'...failed
trying to open device 'stm'...done
Encoders:
id crtc type possible crtcs possible clones
31 0 DPI 0x00000001 0x00000001
33 37 DSI 0x00000001 0x00000002 |
So the display controller has two encoders:
- one with a DPI interface (i.e parallel RGB interface) and..
- one with a (MIPI) DSI interface.
Then, we have the list of connectors:
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
Connectors:
id encoder status name size (mm) modes encoders
32 0 disconnected HDMI-A-1 0x0 0 31
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
34 33 connected DSI-1 52x86 1 33
modes:
index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
#0 480x800 50.00 480 578 610 708 800 815 825 839 29700 flags: ; type: preferred, driver
props:
1 EDID:
flags: immutable blob
blobs:
value:
2 DPMS:
flags: enum
enums: On=0 Standby=1 Suspend=2 Off=3
value: 0
5 link-status:
flags: enum
enums: Good=0 Bad=1
value: 0
6 non-desktop:
flags: immutable range
values: 0 1
value: 0
4 TILE:
flags: immutable blob
blobs:
value:
CRTCs:
id fb pos size
37 40 (0,0) (480x800)
#0 480x800 50.00 480 578 610 708 800 815 825 839 29700 flags: ; type: preferred, driver
props:
24 VRR_ENABLED:
flags: range
values: 0 1
value: 0
28 GAMMA_LUT:
flags: blob
blobs:
value:
29 GAMMA_LUT_SIZE:
flags: immutable range
values: 0 4294967295
value: 256
Planes:
id crtc fb CRTC x,y x,y gamma size possible crtcs
35 37 40 0,0 0,0 0 0x00000001
formats: AR24 XR24 RG24 RG16 AR15 XR15 AR12 XR12 C8
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 1
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000000900000018000000
01000000400000004152323458523234
52473234524731364152313558523135
41523132585231324338202000000000
ff010000000000000000000000000000
0000000000000000
in_formats blob decoded:
AR24: LINEAR(0x0)
XR24: LINEAR(0x0)
RG24: LINEAR(0x0)
RG16: LINEAR(0x0)
AR15: LINEAR(0x0)
XR15: LINEAR(0x0)
AR12: LINEAR(0x0)
XR12: LINEAR(0x0)
C8: LINEAR(0x0)
38 0 0 0,0 0,0 0 0x00000001
formats: AR24 RG24 RG16 AR15 AR12 C8
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000000600000018000000
01000000300000004152323452473234
52473136415231354152313243382020
3f000000000000000000000000000000
0000000000000000
in_formats blob decoded:
AR24: LINEAR(0x0)
RG24: LINEAR(0x0)
RG16: LINEAR(0x0)
AR15: LINEAR(0x0)
AR12: LINEAR(0x0)
C8: LINEAR(0x0)
Frame buffers:
id size pitch
|
So the display controller has two encoders: one with a DPI interface (i.e parallel RGB interface) and one with a (MIPI) DSI interface.
Then, we have the list of connectors:
...
|
We have a HDMI connector, which can be used with the encoder of id 2831, that is the DPI encoder. Indeed, the RGB parallel interface of the STM32 processor is fed on the board into an HDMI transceiver, that goes out with HDMI signals on connector CN9. So from the point of view of the SoC, it is a parallel RGB interface, but thanks to the HDMI transceiver on the Discovery board, it is in fact usable as an HDMI connector.
The second connector is the DSI connector, which can be used with encoder of id 3033, i.e the DSI encoder, which makes sense.
So let’s ask modetest to display its test picture on the DSI connector, which has id 31. The 34 for DSI panel resolution is 480×800, so we’ll use the following command:
# modetest -s 3134:480x800
And voilà:
Now if we plug an HDMI screen to the HDMI connector, the modetest output about connector 29 changes as the connector is no longer disconnected:
...
So we can ask modetest to display a 1280×720 picture on the HDMI screen:
# modetest -s 2934:1280x720
Enabling Qt5 support in Buildroot
...