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