Troubleshooting MIPI DSI display init on VIM3L

I’m trying to use a MIPI DSI display of mine, but I’m having trouble finding where to edit and send the MIPI commands for display init and video data.

I have edited the khadas-ts050-panel.dtsi panel DTS (recompiled and installed) but it seems like it is ignoring any information I put here, I have even tried removing all of lcd_0 content and the display seems to be receiving the sleepout + displayon commands from elsewhere. I can tell this because the display IC is turning 2 output pins ON, which only happens whenI connect all MIPI lanes + clock.

I need some help understanding what is happening, because I think it should not do anything if I remove the configuration from the DTS.

Thank you!

@numbqq @Gouwa @Frank any helkp? Thank you!

@quatro Please refer to this commit about how to add panel support


Which kernel are you working on ?

The only one available on fenix for VIM3L: 4.9 .

In my case I don’t need PWM I’m using an OLED display with an external power regulator… so that commit is not what I’m needing…

Is there a kernel module which is driving the DSI, beyond the device tree? because when I remove the lcd from the DTS, it continues to pull up, the LCD_RESET and send MIPI DSI data

If you don’t need just ignore it.

Is there a kernel module which is driving the DSI, beyond the device tree?

Yes I already have the linux source, I’m looking for it, but not found it yet, where is the source file for the DSI module?

You can check this file:


I have checked the source, but it does not seem to be the driver of the ts050… I’m looking for the active code that is calling dsi_write_cmd, etc in order to edit it for my screen

I have read the meson lcd driver completely and got a better understanding of how to write the LCD init sequence in the DTS… This should be documented in the website!

My screen is being disabled by the kernel with no error being shown:

[ 13.242645] fb: osd[0] canvas.idx =0x40
[ 13.242648] fb: osd[0] canvas.addr=0x6b400000
[ 13.242650] fb: osd[0] canvas.width=7680
[ 13.242651] fb: osd[0] canvas.height=2160
[ 13.242653] fb: osd[0] frame.width=1920
[ 13.242655] fb: osd[0] frame.height=1080
[ 13.242656] fb: osd[0] out_addr_id =0x1
[ 13.346985] vout: vmode set to 1080p60hz
[ 13.349876] fb: current vmode=panel, cmd: 0x10000
[ 13.353540] lcd: set mute
[ 13.412116] bl: backlight power off
[ 13.416036] lcd: lcd_power_ctrl: 0
[ 13.418880] lcd: disable driver

is the syntax

dsi_init_on = <

  	0xfd 1 150    /* DELAY/WAIT 150 ms before next command*/

  	0xff 0>;  /* END OF SEQUENCE */

For example:
dsi_init_off = <
0x15 1 0x28 /* display off /
0xfd 1 60 /
delay 60ms /
0x15 1 0x10 /
sleep in /
0xfd 1 120 /
delay 120ms /
0xff 0>; /
end sequence */

Should output:
0x28 ...(60 ms later)... 0x10

can you confirm me please? Thank you!

1 Like

Seems not correct. Please check the command format.

  • 0x15- should with 1 parameter
  • 0x05 - should with no parameter

Great I will test it… where can I find that documentation?

Maybe you can google for that. I only have a Chinese version…

Thank you so much!
I have made all changes but it is still being disabled by the kernel… do you know what is causing this? it seems to start with a “set mute” 10 seconds after being initiated.

@quatro No idea yet, but one thing you should to know is that you need to unplug the HDMI cable if you want to use the panel.

And suggest you to debug the panel in u-boot in the first step, then is then is the kernel if you can display the logo in u-boot.

Can’t I have both displays? I was expecting to run both at the same time for my application.

For Android, you can, but for Ubuntu, you can’t at current stage.

I need to know will 24bit parallel RGB is supported