MIPI DSI with only ONE data lane on imx8qxp

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MIPI DSI with only ONE data lane on imx8qxp

516 Views
olliistmeinname
Contributor II

Hi all,

 

We simply cannot make a small display (368x448, one DSI data lane only) work on a imx8qxp. No matter what timings we use for the display, there are no MIPI signals neither on the clock nor on MIPI_DSI0_DATA0_N/P. If we switch to two data lanes, we can see neat mipi signals. A dmesg | grep -n "drm" gives the following output:

 

268:[ 2.107833] [drm] Initialized vivante 1.0.0 20170808 for 80000000.imx8_gpu0_ss on minor 0

329:[ 2.618298] nwl-dsi 56228000.dsi_host: [drm:nwl_dsi_host_attach] lanes=1, format=0x0 flags=0x805

330:[ 2.627235] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).

331:[ 2.633878] [drm] No driver support for vblank timestamp query.

332:[ 2.639883] imx-drm display-subsystem: bound imx-drm-dpu-bliteng.2 (ops 0xffff800010f8ca40)

333:[ 2.648899] imx-drm display-subsystem: bound imx-dpu-crtc.0 (ops 0xffff800010f8c710)

334:[ 2.657216] imx-drm display-subsystem: bound imx-dpu-crtc.1 (ops 0xffff800010f8c710)

335:[ 2.665384] imx-drm display-subsystem: bound 56228000.dsi_host (ops 0xffff800010f9e380)

336:[ 2.673927] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1

339:[ 2.696574] imx-drm display-subsystem: fb0: imx-drmdrmfb frame buffer device

422:[ 4.760206] systemd[1]: Starting Load Kernel Module drm...

It looks like everything is fine, but we noticed that the DSI driver is not calling the "prepare" nor the "enable" functions of the panel driver when dsi.lanes=1, hence the display is not initialised properly. It does call everyting correctly when dsi.lanes=2.

 

Has anyone else encountered a similar issue? Any idea what could be wrong?

 

Cheers,

 

Olli

0 Kudos
Reply
1 Reply

371 Views
manuelcarrascos
Contributor II

Hi

  One data lane does not work because it is necessary to patch the file drivers/gpu/drm/bridge/nwl-dsi.c

  The function nwl_dsi_bridge_atomic_check makes lanes=1 not a choice

if (config->lanes < 2 || config->lanes > 4)
  return -EINVAL;

  With "(config->lanes < 1" the function continues executing.

 

Please let me know if it works for you

0 Kudos
Reply