Part Number: SN65DSI86EVM
Other Parts Discussed in Thread: SN65DSI86, TEST2
I'm trying to use the SN65DSI86EVM to do a color bar test on a BenQ GW2480 monitor connected to the development kit via a DisplayPort cable. I have tried to reference several posts here on E2E as well as use the SN65DSI86_PANEL_VIDEOREGISTER_CALC excel document with the EDID I collected from the display.
I'm using a Raspberry Pi 5 to send the I2C commands to the SN65DSI86 using the script below. I'm also attaching the EDID data I got using read-edid | parse-edid on a Linux machine connected to the GW2480.
# reset registers
i2cset -y 1 0x2d 0x09 0x01
sleep 1
# select clock
# 3-1: 100 - REFCLK at 27 Mhz
#i2cset -y 1 0x2D 0x0A 0x06
echo "Get 0x0A"
i2cget -y 1 0x2D 0x0A
# dsi
# 6-5: 01 - four DSI lanes (A)
# 4-3: 00 - 4 lanes
i2cset -y 1 0x2D 0x10 0x26
echo "Get 0x10"
i2cget -y 1 0x2D 0x10
# DSIA Clock
i2cset -y 1 0x2D 0x5C
# select datarate (we need 3.24 Gbps to do 1920*1080@60 over 2 lanes)
i2cset -y 1 0x2D 0x94 0x80
### enable pll
i2cset -y 1 0x2D 0x0D 0x01
sleep 1
echo "Get 0x0D"
i2cget -y 1 0x2D 0x0D
# check if pll is locked - MSB must be set.
echo "Get 0x0A"
i2cget -y 1 0x2D 0x0A
# this returns 0x86 -> pll = locked.
# enable assr on panel (native aux command)
i2cset -y 1 0x2D 0x64 0x01
sleep 1
i2cset -y 1 0x2D 0x74 0x00
sleep 1
i2cset -y 1 0x2D 0x75 0x01
sleep 1
i2cset -y 1 0x2D 0x76 0x0A
sleep 1
i2cset -y 1 0x2D 0x77 0x01
sleep 1
i2cset -y 1 0x2D 0x78 0x81
# enable enhanced framing & ASSR
i2cset -y 1 0x2D 0x5A 0x05
# 2 lanes - disable spread spectrum
i2cset -y 1 0x2D 0x93 0x20
### start semi auto link
i2cset -y 1 0x2D 0x96 0x0A
sleep 1
# i2cset -y 2 0x2D 0x96 0x09
echo "Get 0x96 and 0xF0"
i2cget -y 1 0x2D 0x96
i2cget -y 1 0x2D 0xF0
echo "Get 0xF1"
i2cget -y 1 0x2D 0xF1
echo "Get 0xF2"
i2cget -y 1 0x2D 0xF2
echo "Get 0xF3"
i2cget -y 1 0x2D 0xF3
echo "Get 0xF4"
i2cget -y 1 0x2D 0xF4
echo "Get 0xF5"
i2cget -y 1 0x2D 0xF5
echo "Get 0xF6"
i2cget -y 1 0x2D 0xF6
echo "Get 0xF7"
i2cget -y 1 0x2D 0xF7
echo "Get 0xF8"
i2cget -y 1 0x2D 0xF8
# this returns 0x01 -> link ok + switched to normal
### set resolution (calculated with excel sheet)
# active line length
i2cset -y 1 0x2D 0x20 0x08
i2cset -y 1 0x2D 0x21 0x70
# vertical active size
i2cset -y 1 0x2D 0x24 0x05
i2cset -y 1 0x2D 0x25 0xA0
# horizontal pulse width
i2cset -y 1 0x2D 0x2C 0x00
i2cset -y 1 0x2D 0x2D 0x20
# vertical pulse width
i2cset -y 1 0x2D 0x30 0x00
i2cset -y 1 0x2D 0x31 0x0A
# HBP
i2cset -y 1 0x2D 0x34 0x50
# VBP
i2cset -y 1 0x2D 0x36 0x1B
# HFP
i2cset -y 1 0x2D 0x38 0x30
# VFP
i2cset -y 1 0x2D 0x3A 0x03
# DP color format - 24bpp
i2cset -y 1 0x2D 0x5B 0x00
### colorbar
i2cset -y 1 0x2D 0x3C 0x12
echo "Get 0x3C"
i2cget -y 1 0x2D 0x3C
sleep 1
# Enable video stream - enable ASSR & enhanced framing
i2cset -y 1 0x2D 0x5A 0x0C
echo "Get 0x5A"
i2cget -y 1 0x2D 0x5A
Section "Monitor"
Identifier "BenQ GW2480"
ModelName "BenQ GW2480"
VendorName "BNQ"
# Monitor Manufactured week 33 of 2023
# EDID version 1.4
# Digital Display
DisplaySize 530 300
Gamma 2.20
Option "DPMS" "true"
Horizsync 30-83
VertRefresh 50-76
# Maximum pixel clock is 170MHz
#Not giving standard mode: 1920x1080, 60Hz
#Not giving standard mode: 1680x1050, 60Hz
#Not giving standard mode: 1600x900, 60Hz
#Not giving standard mode: 1280x1024, 60Hz
#Not giving standard mode: 1280x800, 60Hz
#Not giving standard mode: 1280x720, 60Hz
#Extension block found. Parsing...
Modeline "Mode 16" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
Modeline "Mode 0" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
Modeline "Mode 1" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
Modeline "Mode 2" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
Modeline "Mode 3" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync
Modeline "Mode 4" 74.250 1280 1720 1760 1980 720 725 730 750 +hsync +vsync
Modeline "Mode 5" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
Modeline "Mode 6" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
Modeline "Mode 7" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
Modeline "Mode 8" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
Modeline "Mode 9" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync
Modeline "Mode 10" 74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace
Modeline "Mode 11" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
Modeline "Mode 12" 27.027 1440 1478 1602 1716 480 484 487 525 -hsync -vsync interlace
Modeline "Mode 13" 27.000 1440 1464 1590 1728 576 578 581 625 -hsync -vsync interlace
Modeline "Mode 14" 27.000 1440 1464 1590 1728 576 578 581 625 -hsync -vsync interlace
Modeline "Mode 15" 74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace
Modeline "Mode 17" 74.25 1920 2008 2052 2200 540 542 547 562 +hsync +vsync interlace
Modeline "Mode 18" 74.25 1280 1390 1430 1650 720 725 730 750 +hsync +vsync
Modeline "Mode 19" 27.00 720 736 798 858 480 489 495 525 -hsync -vsync
Option "PreferredMode" "Mode 16"
EndSection
00 ff ff ff ff ff ff 00 09 d1 e7 78 45 54 00 00
21 21 01 04 a5 35 1e 78 3a 05 65 a7 56 52 9c 27
0f 50 54 a5 6b 80 d1 c0 b3 00 a9 c0 81 80 81 00
81 c0 01 01 01 01 02 3a 80 18 71 38 2d 40 58 2c
45 00 0f 28 21 00 00 1e 00 00 00 ff 00 4b 38 50
30 31 36 31 35 30 31 51 0a 20 00 00 00 fd 00 32
4c 1e 53 11 01 0a 20 20 20 20 20 20 00 00 00 fc
00 42 65 6e 51 20 47 57 32 34 38 30 0a 20 01 5b
02 03 1c f1 4f 90 1f 04 13 03 12 02 11 01 14 06
07 15 16 05 23 09 07 07 83 01 00 00 02 3a 80 18
71 38 2d 40 58 2c 45 00 0f 28 21 00 00 1f 01 1d
80 18 71 1c 16 20 58 2c 25 00 0f 28 21 00 00 9f
01 1d 00 72 51 d0 1e 20 6e 28 55 00 0f 28 21 00
00 1e 8c 0a d0 8a 20 e0 2d 10 10 3e 96 00 0f 28
21 00 00 18 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 8d