Hello,
we use a SN65DSI84 to convert from MIPI to LVDS. We have a working setup for a 10.1" display using single channel LVDS.
Now we attached a 21.5" 1080p panel using dual channel LVDS.
For the configuration we use the https://www.ti.com/tool/DSI-TUNER (this links to the old version 2.0 but we use 2.1 that can be found in this forum. The installer attempts to download a JRE from www.sun.com which fails, so install a recent JRE first).
MIPI is 4 lane, non burst video mode, event sync, format RGB888.
Panel timing (dual channel LVDS):
clock = 148500, /* kHz */
hdisplay = 1920,
hsync_start = 1920 + 2 * (60),
hsync_end = 1920 + 2 * (60 + 32),
htotal = 1920 + 2 * (60 + 32 + 48), /* 2200 */
vdisplay = 1080,
vsync_start = 1080 + 33,
vsync_end = 1080 + 33 + 4,
vtotal = 1080 + 33 + 4 + 8, /* 1125 */
datasheet:

After initialization via I2C we can enable the built-in pattern generator by setting 0x3c to 0x10. The LVDS the shows the bar pattern, the LVDS data and clock are correct. The note on the datasheet says "DE mode only", apparently DE pulses are generated correctly. So I assume that the path SN65DSI84 -> LVDS panel is ok.
Since we have no external crystal, the LVDS clock (74.25MHz) is derived from the MIPI clock (445.5MHz), that seems to work too.
Also the register 0x5e remains 0x00, I assume that:
- PLL is locked properly
- there are no MIPI protocol errors (CRC, ECC, protocol related bits are 0)
- there are no synchronization errors, i.e. H-sync and V-sync are detected properly
Is that correct?
Here is the annotated initialization:
# reset registers
i2cset -y 1 0x2c 0x09 0x01
sleep 0.05
# disable pll
i2cset -y 1 0x2c 0x0d 0x00
sleep 0.05
# lvds range 74.25 MHz - lvds pixel clock from mipi A
i2cset -y 1 0x2c 0x0a 0x05
# div refclk by 6
i2cset -y 1 0x2c 0x0b 0x28
# mipi = 4 lanes
i2cset -y 1 0x2c 0x10 0x26
# no equalization
i2cset -y 1 0x2c 0x11 0x0C
# dsi clock range (445.5MHz)
i2cset -y 1 0x2c 0x12 0x59
i2cset -y 1 0x2c 0x13 0x00
# lvds - dual channel - 24bbp - format1
i2cset -y 1 0x2c 0x18 0x6c
i2cset -y 1 0x2c 0x19 0x00
i2cset -y 1 0x2c 0x1a 0x03
i2cset -y 1 0x2c 0x1b 0x00
# timings
i2cset -y 1 0x2c 0x20 0xc0
i2cset -y 1 0x2c 0x21 0x03
i2cset -y 1 0x2c 0x22 0x00
i2cset -y 1 0x2c 0x23 0x00
i2cset -y 1 0x2c 0x24 0x38
i2cset -y 1 0x2c 0x25 0x04
i2cset -y 1 0x2c 0x26 0x00
i2cset -y 1 0x2c 0x27 0x00
i2cset -y 1 0x2c 0x28 0x21
i2cset -y 1 0x2c 0x29 0x00
i2cset -y 1 0x2c 0x2a 0x00
i2cset -y 1 0x2c 0x2b 0x00
i2cset -y 1 0x2c 0x2c 0x20
i2cset -y 1 0x2c 0x2d 0x00
i2cset -y 1 0x2c 0x2e 0x00
i2cset -y 1 0x2c 0x2f 0x00
i2cset -y 1 0x2c 0x30 0x04
i2cset -y 1 0x2c 0x31 0x00
i2cset -y 1 0x2c 0x32 0x00
i2cset -y 1 0x2c 0x33 0x00
i2cset -y 1 0x2c 0x34 0x30
i2cset -y 1 0x2c 0x35 0x00
i2cset -y 1 0x2c 0x36 0x08
i2cset -y 1 0x2c 0x37 0x00
i2cset -y 1 0x2c 0x38 0x3c
i2cset -y 1 0x2c 0x39 0x00
i2cset -y 1 0x2c 0x3a 0x21
i2cset -y 1 0x2c 0x3b 0x00
i2cset -y 1 0x2c 0x3c 0x00
i2cset -y 1 0x2c 0x3d 0x00
i2cset -y 1 0x2c 0x3e 0x00
# clear errors
i2cset -y 1 0x2c 0xe5 0xff
sleep 0.05
# enable pll
i2cset -y 1 0x2c 0x0d 0x01
sleep 0.05
# reset
i2cset -y 1 0x2c 0x09 0x00
sleep 0.05
# clear errors
i2cset -y 1 0x2c 0xe5 0xff
Are there any mistakes in the initialization?
Does the SN65DSI84 generate DE pulses from H/V sync MIPI information?
How can I debug further?
Br,
Lo2

