Other Parts Discussed in Thread: AM62P, TFP410
Tool/software:
We are integrating a DSI panel (using a Himax hx8394 bridge chip) to the DSI output of an AM62P. The panel is a 720x1280 RGB888 supporting 60 Hz. I am using the ti-linux-6.6.y branch consistent with the linux processor SDK 10.1.
We are using panel control / timings code from a mature design. I know that the AM62P DSI is working in LP / command mode as I can program the bridge chip properly and cause it to generate test patterns on the display and I can properly control the backlight, etc. I can also read back several registers including the panel ID, etc., and all of those commands work as expected.
However, using the kmstest or manipulating the framebuffer results in a blank screen when the system should be transmitting HS video data. It appears that there is no MIPI DSI clock / data running on the interface, even though the framebuffer / kmstest reports a proper frame rate and active display, etc. This problem looks very similar to this thread : https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1464278/am62p-q1-there-is-no-display-when-setting-display-resolution-1920x1008-w-dsi/5642166#5642166.
We have tried cutting the framerate down to 30 Hz, as the mentioned thread suggested that lower clock rates would work.
Here are the results from modetest -D 30220000.dss:
root@mitysom-am62px:~# modetest -D 30220000.dss
trying to open device 'i915'...done
[ 183.622619] cdns-dsi 30500000.dsi: Computed HS_CLK_RATE = 373788000
Encoders:
id crtc type possible crtcs possible clones
39 38 none 0x00000001 0x00000001
Connectors:
id encoder status name size (mm) modes encoders
40 39 connected DSI-1 62x110 1 39
modes:
index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot
#0 720x1280 60.00 720 738 774 792 1280 1292 1296 1311 62298 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:
CRTCs:
id fb pos size
38 48 (0,0) (720x1280)
#0 720x1280 60.00 720 738 774 792 1280 1292 1296 1311 62298 flags: nhsync, nvsync; type: preferred, driver
props:
24 VRR_ENABLED:
flags: range
values: 0 1
value: 0
27 CTM:
flags: blob
blobs:
value:
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
31 38 48 0,0 0,0 0 0x00000001
formats: AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 1
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001d00000018000000
01000000900000004152313241423132
52413132524731364247313641523135
41423135415232344142323452413234
42413234524732344247323441523330
41423330585231325842313252583132
58523135584231355852323458423234
52583234425832345852333058423330
59555956555956594e56313200000000
ffffff1f000000000000000000000000
0000000000000000
in_formats blob decoded:
AR12: LINEAR(0x0)
AB12: LINEAR(0x0)
RA12: LINEAR(0x0)
RG16: LINEAR(0x0)
BG16: LINEAR(0x0)
AR15: LINEAR(0x0)
AB15: LINEAR(0x0)
AR24: LINEAR(0x0)
AB24: LINEAR(0x0)
RA24: LINEAR(0x0)
BA24: LINEAR(0x0)
RG24: LINEAR(0x0)
BG24: LINEAR(0x0)
AR30: LINEAR(0x0)
AB30: LINEAR(0x0)
XR12: LINEAR(0x0)
XB12: LINEAR(0x0)
RX12: LINEAR(0x0)
XR15: LINEAR(0x0)
XB15: LINEAR(0x0)
XR24: LINEAR(0x0)
XB24: LINEAR(0x0)
RX24: LINEAR(0x0)
BX24: LINEAR(0x0)
XR30: LINEAR(0x0)
XB30: LINEAR(0x0)
YUYV: LINEAR(0x0)
UYVY: LINEAR(0x0)
NV12: LINEAR(0x0)
33 zpos:
flags: range
values: 0 1
value: 0
34 COLOR_ENCODING:
flags: enum
enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
value: 0
35 COLOR_RANGE:
flags: enum
enums: YCbCr limited range=0 YCbCr full range=1
value: 1
36 alpha:
flags: range
values: 0 65535
value: 65535
37 pixel blend mode:
flags: enum
enums: Pre-multiplied=0 Coverage=1
value: 0
41 0 0 0,0 0,0 0 0x00000001
formats: AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 0
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
01000000000000001d00000018000000
01000000900000004152313241423132
52413132524731364247313641523135
41423135415232344142323452413234
42413234524732344247323441523330
41423330585231325842313252583132
58523135584231355852323458423234
52583234425832345852333058423330
59555956555956594e56313200000000
ffffff1f000000000000000000000000
0000000000000000
in_formats blob decoded:
AR12: LINEAR(0x0)
AB12: LINEAR(0x0)
RA12: LINEAR(0x0)
RG16: LINEAR(0x0)
BG16: LINEAR(0x0)
AR15: LINEAR(0x0)
AB15: LINEAR(0x0)
AR24: LINEAR(0x0)
AB24: LINEAR(0x0)
RA24: LINEAR(0x0)
BA24: LINEAR(0x0)
RG24: LINEAR(0x0)
BG24: LINEAR(0x0)
AR30: LINEAR(0x0)
AB30: LINEAR(0x0)
XR12: LINEAR(0x0)
XB12: LINEAR(0x0)
RX12: LINEAR(0x0)
XR15: LINEAR(0x0)
XB15: LINEAR(0x0)
XR24: LINEAR(0x0)
XB24: LINEAR(0x0)
RX24: LINEAR(0x0)
BX24: LINEAR(0x0)
XR30: LINEAR(0x0)
XB30: LINEAR(0x0)
YUYV: LINEAR(0x0)
UYVY: LINEAR(0x0)
NV12: LINEAR(0x0)
43 zpos:
flags: range
values: 0 1
value: 1
44 COLOR_ENCODING:
flags: enum
enums: ITU-R BT.601 YCbCr=0 ITU-R BT.709 YCbCr=1
value: 0
45 COLOR_RANGE:
flags: enum
enums: YCbCr limited range=0 YCbCr full range=1
value: 1
46 alpha:
flags: range
values: 0 65535
value: 65535
47 pixel blend mode:
flags: enum
enums: Pre-multiplied=0 Coverage=1
value: 0
Frame buffers:
id size pitch
root@mitysom-am62px:~#
When running the kmstest (reporting 60 Hz output rate) and pausing it, and inspecting the clocks, it looks like the dsi_p_clk is not running (231:2) and I don't see any clock that is running at the calculated HS_CLK_RATE (373788000 Hz) that the cnds drivers come up with for the number of lanes and display resolution.
kmstest --flip --device="/dev/dri/card0"
[ 397.372136] cdns-dsi 30500000.dsi: Computed HS_CLK_RATE = 373788000
Connector 0/@40: DSI-1
[ 397.386033] panel-himax-hx8394 30500000.dsi.0: hx8394_disable: Enter
Crtc 0/@38: 720x1280@60.00 62.298 720/18/36/18/- 1280/12/4/15/[ 397.394097] cdns-dsi 30500000.dsi: cdns_dsi_transfer complete 0 (tx/rx = 1/0)
- 60 (60.00) 0xa 0x48
Plane 0/@31: 0,0-720x1280
Fb 50 720x1280-XR24
press enter to exit
Connector 0: fps 60.03, slowest 16.75 ms
Connector 0: fps 59.96, slowest 16.73 ms
Connector 0: fps 59.96, slowest 16.73 ms
Connector 0: fps 59.96, slowest 16.77 ms
Connector 0: fps 59.96, slowest 16.73 ms
Connector 0: fps 59.96, slowest 16.75 ms
^Z
[1]+ Stopped(SIGTSTP) kmstest --flip --device="/dev/dri/card0"
root@mitysom-am62px:~# k3conf dump clocks | grep -i DSS
| 186 | 0 | DEV_DSS0_DPI_0_IN_CLK | CLK_STATE_READY | 300000000 |
| 186 | 2 | DEV_DSS0_DPI_1_IN_CLK | CLK_STATE_READY | 300000000 |
| 186 | 3 | DEV_DSS0_DPI_1_IN_CLK_PARENT_HSDIV0_16FFT_MAIN_17_HSDIVOUT0_CLK | CLK_STATE_READY | 300000000 |
| 186 | 4 | DEV_DSS0_DPI_1_IN_CLK_PARENT_BOARD_0_VOUT0_EXTPCLKIN_OUT | CLK_STATE_READY | 0 |
| 186 | 5 | DEV_DSS0_DPI_1_OUT_CLK | CLK_STATE_READY | 0 |
| 186 | 6 | DEV_DSS0_DSS_FUNC_CLK | CLK_STATE_READY | 320000000 |
| 232 | 0 | DEV_DSS1_DPI_0_IN_CLK | CLK_STATE_READY | 62254901 |
| 232 | 1 | DEV_DSS1_DPI_0_IN_CLK_PARENT_MAIN_DSS1_DPI0__PLLSEL_OUT0 | CLK_STATE_READY | 62254901 |
| 232 | 2 | DEV_DSS1_DPI_0_IN_CLK_PARENT_BOARD_0_VOUT0_EXTPCLKIN_OUT | CLK_STATE_READY | 0 |
| 232 | 3 | DEV_DSS1_DPI_0_OUT_CLK | CLK_STATE_READY | 0 |
| 232 | 4 | DEV_DSS1_DPI_1_IN_CLK | CLK_STATE_READY | 62254901 |
| 232 | 5 | DEV_DSS1_DPI_1_IN_CLK_PARENT_MAIN_DSS1_DPI1__PLLSEL_OUT0 | CLK_STATE_READY | 62254901 |
| 232 | 6 | DEV_DSS1_DPI_1_IN_CLK_PARENT_BOARD_0_VOUT0_EXTPCLKIN_OUT | CLK_STATE_READY | 0 |
| 232 | 7 | DEV_DSS1_DPI_1_OUT_CLK | CLK_STATE_READY | 0 |
| 232 | 8 | DEV_DSS1_DSS_FUNC_CLK | CLK_STATE_READY | 320000000 |
| 241 | 0 | DEV_DSS1_DPI0_PLLSEL_DEV_VD_CLK | CLK_STATE_READY | 62254901 |
| 241 | 1 | DEV_DSS1_DPI0_PLLSEL_DEV_VD_CLK_PARENT_HSDIV0_16FFT_MAIN_18_HSDIVOUT0_CLK | CLK_STATE_READY | 62254901 |
| 241 | 2 | DEV_DSS1_DPI0_PLLSEL_DEV_VD_CLK_PARENT_HSDIV0_16FFT_MAIN_17_HSDIVOUT0_CLK | CLK_STATE_READY | 300000000 |
| 240 | 0 | DEV_DSS1_DPI1_PLLSEL_DEV_VD_CLK | CLK_STATE_READY | 62254901 |
| 240 | 1 | DEV_DSS1_DPI1_PLLSEL_DEV_VD_CLK_PARENT_HSDIV0_16FFT_MAIN_18_HSDIVOUT0_CLK | CLK_STATE_READY | 62254901 |
| 240 | 2 | DEV_DSS1_DPI1_PLLSEL_DEV_VD_CLK_PARENT_HSDIV0_16FFT_MAIN_17_HSDIVOUT0_CLK | CLK_STATE_READY | 300000000 |
| 231 | 0 | DEV_DSS_DSI0_DPHY_0_RX_ESC_CLK | CLK_STATE_READY | 0 |
| 231 | 1 | DEV_DSS_DSI0_DPHY_0_TX_ESC_CLK | CLK_STATE_READY | 16000000 |
| 231 | 2 | DEV_DSS_DSI0_DPI_0_CLK | CLK_STATE_READY | 0 |
| 231 | 3 | DEV_DSS_DSI0_PLL_CTRL_CLK | CLK_STATE_READY | 500000000 |
| 231 | 4 | DEV_DSS_DSI0_PPI_0_TXBYTECLKHS_CL_CLK | CLK_STATE_READY | 0 |
| 231 | 5 | DEV_DSS_DSI0_SYS_CLK | CLK_STATE_READY | 250000000 |
| 58 | 0 | DEV_MMCSD1_EMMCSDSS_IO_CLK_I | CLK_STATE_READY | 0 |
| 58 | 1 | DEV_MMCSD1_EMMCSDSS_IO_CLK_I_PARENT_BOARD_0_MMC1_CLKLB_OUT | CLK_STATE_READY | 0 |
| 58 | 2 | DEV_MMCSD1_EMMCSDSS_IO_CLK_I_PARENT_BOARD_0_MMC1_CLK_OUT | CLK_STATE_READY | 0 |
| 58 | 3 | DEV_MMCSD1_EMMCSDSS_IO_CLK_O | CLK_STATE_READY | 0 |
| 58 | 5 | DEV_MMCSD1_EMMCSDSS_VBUS_CLK | CLK_STATE_READY | 250000000 |
| 58 | 6 | DEV_MMCSD1_EMMCSDSS_XIN_CLK | CLK_STATE_READY | 200000000 |
| 58 | 7 | DEV_MMCSD1_EMMCSDSS_XIN_CLK_PARENT_POSTDIV4_16FF_MAIN_0_HSDIVOUT5_CLK | CLK_STATE_READY | 200000000 |
| 58 | 8 | DEV_MMCSD1_EMMCSDSS_XIN_CLK_PARENT_HSDIV4_16FFT_MAIN_2_HSDIVOUT2_CLK | CLK_STATE_READY | 200000000 |
| 184 | 0 | DEV_MMCSD2_EMMCSDSS_IO_CLK_I | CLK_STATE_READY | 0 |
| 184 | 1 | DEV_MMCSD2_EMMCSDSS_IO_CLK_I_PARENT_BOARD_0_MMC2_CLKLB_OUT | CLK_STATE_READY | 0 |
| 184 | 2 | DEV_MMCSD2_EMMCSDSS_IO_CLK_I_PARENT_BOARD_0_MMC2_CLK_OUT | CLK_STATE_READY | 0 |
| 184 | 3 | DEV_MMCSD2_EMMCSDSS_IO_CLK_O | CLK_STATE_READY | 0 |
| 184 | 5 | DEV_MMCSD2_EMMCSDSS_VBUS_CLK | CLK_STATE_READY | 250000000 |
| 184 | 6 | DEV_MMCSD2_EMMCSDSS_XIN_CLK | CLK_STATE_READY | 200000000 |
| 184 | 7 | DEV_MMCSD2_EMMCSDSS_XIN_CLK_PARENT_POSTDIV4_16FF_MAIN_0_HSDIVOUT5_CLK | CLK_STATE_READY | 200000000 |
| 184 | 8 | DEV_MMCSD2_EMMCSDSS_XIN_CLK_PARENT_HSDIV4_16FFT_MAIN_2_HSDIVOUT2_CLK | CLK_STATE_READY | 200000000 |
| 235 | 2 | DEV_OLDI_TX_CORE1_OLDI_0_FWD_P_CLK_PARENT_MAIN_DSS1_DPI0_PCLK_OUT0 | CLK_STATE_READY | 62254901 |
root@mitysom-am62px:~# k3conf dump clocks | grep -i DPHY
| 185 | 2 | DEV_DPHY_RX0_IO_RX_CL_L_M | CLK_STATE_READY | 0 |
| 185 | 3 | DEV_DPHY_RX0_IO_RX_CL_L_P | CLK_STATE_READY | 0 |
| 185 | 4 | DEV_DPHY_RX0_JTAG_TCK | CLK_STATE_READY | 0 |
| 185 | 5 | DEV_DPHY_RX0_MAIN_CLK_CLK | CLK_STATE_READY | 125000000 |
| 185 | 6 | DEV_DPHY_RX0_PPI_RX_BYTE_CLK | CLK_STATE_READY | 0 |
| 238 | 0 | DEV_DPHY_TX0_CLK | CLK_STATE_READY | 125000000 |
| 238 | 1 | DEV_DPHY_TX0_DPHY_REF_CLK | CLK_STATE_READY | 25000000 |
| 238 | 2 | DEV_DPHY_TX0_DPHY_REF_CLK_PARENT_GLUELOGIC_HFOSC0_CLKOUT | CLK_STATE_READY | 25000000 |
| 238 | 3 | DEV_DPHY_TX0_DPHY_REF_CLK_PARENT_POSTDIV4_16FF_MAIN_0_HSDIVOUT9_CLK | CLK_STATE_READY | 100000000 |
| 238 | 4 | DEV_DPHY_TX0_IP1_PPI_M_RXCLKESC_CLK | CLK_STATE_READY | 0 |
| 238 | 5 | DEV_DPHY_TX0_IP1_PPI_M_TXCLKESC_CLK | CLK_STATE_READY | 16000000 |
| 238 | 6 | DEV_DPHY_TX0_IP1_PPI_TXBYTECLKHS_CL_CLK | CLK_STATE_READY | 0 |
| 238 | 8 | DEV_DPHY_TX0_IP2_PPI_M_TXCLKESC_CLK | CLK_STATE_READY | 16000000 |
| 238 | 11 | DEV_DPHY_TX0_IP3_PPI_M_TXCLKESC_CLK | CLK_STATE_READY | 16000000 |
| 238 | 14 | DEV_DPHY_TX0_IP4_PPI_M_TXCLKESC_CLK | CLK_STATE_READY | 16000000 |
| 238 | 16 | DEV_DPHY_TX0_PSM_CLK | CLK_STATE_READY | 16000000 |
| 238 | 20 | DEV_DPHY_TX0_TAP_TCK | CLK_STATE_READY | 0 |
| 231 | 0 | DEV_DSS_DSI0_DPHY_0_RX_ESC_CLK | CLK_STATE_READY | 0 |
| 231 | 1 | DEV_DSS_DSI0_DPHY_0_TX_ESC_CLK | CLK_STATE_READY | 16000000 |
root@mitysom-am62px:~#
Are there known issues with the DSI driver at this point? Can you suggest something to try / debug?
We have a high volume opportunity for this part but must demonstrate the DSI display is capable of supporting this panel (which should be pretty easy).
Thanks,
Mike
