Skip to main content
hypnotriod
Associate
November 4, 2025
Solved

Issue with otm8009a mipi dsi panel configuration on the stm32mp157c-odyssey

  • November 4, 2025
  • 1 reply
  • 177 views

Hello. I'm trying to configure the otm8009a 800x480 display panel from the stm32mp157f-dk2 dev kit on the Seeed Studio's stm32mp157c-odyssey board.
The issue is that by probing display with modetest -M stm I'm getting:

failed to open device 'stm': No such file or directory

But with modetest -M simpledrm I'm getting this output:

Encoders:
id crtc type possible crtcs possible clones
34 0 none 0x00000001 0x00000001

Connectors:
id encoder status name size (mm) modes encoders
35 0 connected Unknown-1 127x211 1 34
 modes:
 index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
 #0 480x800 60.00 480 480 480 480 800 800 800 800 23040 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: 3
 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
33 0 (0,0) (0x0)
 #0 nan 0 0 0 0 0 0 0 0 0 flags: ; type: 
 props:
 24 VRR_ENABLED:
 flags: range
 values: 0 1
 value: 0

Planes:
id crtc fb CRTC x,y x,y gamma size possible crtcs
31 0 0 0,0 0,0 0 0x00000001
 formats: RG16 XR24
 props:
 8 type:
 flags: immutable enum
 enums: Overlay=0 Primary=1 Cursor=2
 value: 1
 30 IN_FORMATS:
 flags: immutable blob
 blobs:

 value:
 01000000000000000200000018000000
 01000000200000005247313658523234
 03000000000000000000000000000000
 0000000000000000
 in_formats blob decoded:
 RG16: LINEAR
 XR24: LINEAR

Frame buffers:
id size pitch

So display is actually working with simpledrm and I am able to launch weston. But with the bad performance.
What am I doing wrong or missing something?
Any help or advice would be appreciated! Thanks!
This is the dts file I have so far: stm32mp157c-odyssey.dts 

Best answer by hypnotriod

Sorry. My bad. Didn't pay attention to the last logs I got.
I added pin configurations for the LCD GRB interface in the ltdc node. But this board doesn't have such type of connector, only MIPI DSI. So I've got conflicting pins.
Anyway, this is my working dts file so far.

debian@stm32mp157c-odyssey:~$ modetest -M stm
Encoders:
id crtc type possible crtcs possible clones
31 38 DSI 0x00000001 0x00000001

Connectors:
id encoder status name size (mm) modes encoders
32 31 connected DSI-1 52x86 1 31
 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: nhsync, nvsync; 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:
 33 dithering:
 flags: enum
 enums: Off=0 On=1
 value: 0

CRTCs:
id fb pos size
38 43 (0,0) (480x800)
 #0 480x800 50.00 480 578 610 708 800 815 825 839 29700 flags: nhsync, nvsync; 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
34 38 43 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
 XR24: LINEAR
 RG24: LINEAR
 RG16: LINEAR
 AR15: LINEAR
 XR15: LINEAR
 AR12: LINEAR
 XR12: LINEAR
 C8: LINEAR
 36 alpha:
 flags: range
 values: 0 65535
 value: 65535
 37 zpos:
 flags: immutable range
 values: 0 0
 value: 0
39 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
 RG24: LINEAR
 RG16: LINEAR
 AR15: LINEAR
 AR12: LINEAR
 C8: LINEAR
 41 alpha:
 flags: range
 values: 0 65535
 value: 65535
 42 zpos:
 flags: immutable range
 values: 1 1
 value: 1

Frame buffers:
id size pitch



1 reply

hypnotriod
hypnotriodAuthorBest answer
Associate
November 4, 2025

Sorry. My bad. Didn't pay attention to the last logs I got.
I added pin configurations for the LCD GRB interface in the ltdc node. But this board doesn't have such type of connector, only MIPI DSI. So I've got conflicting pins.
Anyway, this is my working dts file so far.

debian@stm32mp157c-odyssey:~$ modetest -M stm
Encoders:
id crtc type possible crtcs possible clones
31 38 DSI 0x00000001 0x00000001

Connectors:
id encoder status name size (mm) modes encoders
32 31 connected DSI-1 52x86 1 31
 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: nhsync, nvsync; 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:
 33 dithering:
 flags: enum
 enums: Off=0 On=1
 value: 0

CRTCs:
id fb pos size
38 43 (0,0) (480x800)
 #0 480x800 50.00 480 578 610 708 800 815 825 839 29700 flags: nhsync, nvsync; 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
34 38 43 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
 XR24: LINEAR
 RG24: LINEAR
 RG16: LINEAR
 AR15: LINEAR
 XR15: LINEAR
 AR12: LINEAR
 XR12: LINEAR
 C8: LINEAR
 36 alpha:
 flags: range
 values: 0 65535
 value: 65535
 37 zpos:
 flags: immutable range
 values: 0 0
 value: 0
39 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
 RG24: LINEAR
 RG16: LINEAR
 AR15: LINEAR
 AR12: LINEAR
 C8: LINEAR
 41 alpha:
 flags: range
 values: 0 65535
 value: 65535
 42 zpos:
 flags: immutable range
 values: 1 1
 value: 1

Frame buffers:
id size pitch