anholt / linux

Other
134 stars 24 forks source link

[DSI] NULL packet instead of horizontal sync start in RPI CM3+ #155

Open TaQk opened 4 years ago

TaQk commented 4 years ago

Hi We have hard time trying to implement DSI panel in one of our products. The display works without any problems with HDMI-DSI adapter. The RPI CM3 is only able to configure the panel. We can write and read registers (using DSI) but not display anything (e.g. I can configure the display in a test mode and it starts to show test images).

I can see on my oscilloscope that sudo cat /dev/urandom > /dev/fb0 changes the bitstream.

We have noticed the video stream from RPI is quite different than from the adapter. Adapter exits LP mode, then sends 0x21 frame (HSYNC start) and 888RGB bitstream. The RPI exits LP mode but then… sends 1 or 2 null frames (0x09) and then 888RGB stream.

Adapter is in LP mode between frames. RPI exits LP mode between frames to only send NULL packet and enters LP mode again.

Just look at the images below (my scope is only 200MHz, the images show DP0 line):

Adapter:

adapter_1

RPI CM3+:

RPICM3_1

And the whole frame:

Adapter (LP mode, then HSYNC start and bitstream):

adapter_2

RPI CM3+ (LP mode, then null packet, then LP mode, then null packet and bitstream)

RPICM3_2

The OS version is 4.19.118-v7+. I tried also 5.4 (without success). Display driver: EK79030 datasheet

We tried to fix this in panel driver and vc4 driver but without any improvement. Do anybody have idea how to fix this?

Regards