NXP reference design code base:
i.MX8MQ platform / Android 13.0.0_2.0.0 (L6.1.22_2.0.0 BSP)
LCDIF connected to MIPI-DSI on Android 13(GKI) that does not work, but the function can work on Android 11.
Android 11 Log:(Android11_LCDIF_OK.log)
[ 3.511971] nwl-dsi 30a00000.mipi-dsi: [drm:nwl_dsi_probe] Using LCDIF as input source
[ 4.084346] [gm8775c_bridge_attach]
[ 4.084349] [gm8775c_simple_panel_host_register]
[ 4.084353] child node panel, panel@0
[ 4.084609] panel-simple panel0: DMA mask not set
[ 4.084653] [panel_simple_probe]
[ 4.084686] panel-simple panel0: supply power not found, using dummy regulator
[ 4.084862] [gm8775c_attach_dsi]
[ 4.084955] nwl-dsi 30a00000.mipi-dsi: [drm:nwl_dsi_host_attach] lanes=4, format=0x0 flags=0x15
[ 4.085966] [drm] Initialized mxsfb-drm 1.0.0 20160824 for 30320000.lcd-controller on minor 1
[ 4.237089] mxsfb 30320000.lcd-controller: [drm] fb0: mxsfb-drmdrmfb frame buffer device
Android 13 Log:(Android13_LCDIF_Fail.log)
[ 2.401658][ T8] nwl-dsi 30a00000.mipi-dsi: [drm:nwl_dsi_probe [nwl_dsi]] Using LCDIF as input source
[ 2.412617][ T8] [gm8775c_bridge_attach] DRM_BRIDGE_ATTACH_NO_CONNECTOR
[ 2.419684][ T8] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/bus@30800000/i2c@30a20000/gm8775c@2C2
[ 2.419734][ T1] __power_supply_register: Expected proper parent device for 'battery'
[ 2.420045][ T1] __power_supply_register: Expected proper parent device for 'usb'
[ 2.432612][ T8] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/bus@30800000/mipi-dsi@30a00000 to en2
[ 2.460891][ T8] mxsfb 30320000.lcd-controller: error -EINVAL: Failed to attach bridge
[ 2.469098][ T8] mxsfb 30320000.lcd-controller: error -EINVAL: Cannot connect bridge
[ 2.477247][ T8] mxsfb: probe of 30320000.lcd-controller failed with error -22
Attached LCDIF_Log.zip includes both Android11_LCDIF_OK.log and Android13_LCDIF_Fail.log.
Android 11 log shows "Initialized mxsfb-drm", but we can't find the message in Android 13 log.
We also look "mxsfb" up on the Internet:
[ 11.141177] mxsfb 30320000.lcdif: Cannot connect bridge: -22
[ 11.161062] mxsfb: probe of 30320000.lcdif failed with error -22
Does mxsfb equals lcdif ??
If mxsfb-drm can be initialized, can the issue be fixed?
If YES, how to enable mxsfb-drm on Android 13(GKI)?
If NO, how to fix the issue?
BTW, we thought DSI to LVDS bridge driver (gm8775c) can work, because we use &dcss instead of &lcdif, DCSS connected to MIPI-DSI of Android 13 can work.
We try to set the U-Boot environment variables as follows, it still can't work though.
u-boot=> setenv append_bootargs androidboot.primary_display=mxsfb-drm
u-boot=> saveenv
Solved! Go to Solution.
Hi @KyleChang
Does mxsfb equals lcdif ??
--> The lcdif driver in i.MX8MQ is drivers/gpu/drm/mxsfb/mxsfb_drv.c, so it is mxsfb. mxsfb-drm can't be initialized because bridge attach failed
It looks like relates to the way of handling DRM_BRIDGE_ATTACH_NO_CONNECTOR flag. Can you check this point?
The mxsfb will not pass the DRM_BRIDGE_ATTACH_NO_CONNECTOR, but dcss driver will.
ret = drm_bridge_attach(&mxsfb->encoder, bridge, NULL, 0);
if (ret)
return dev_err_probe(drm->dev, ret, "Failed to attach bridge\n");
mxsfb->bridge = bridge;
Best Regards
Zhiming
Hi @KyleChang
Does mxsfb equals lcdif ??
--> The lcdif driver in i.MX8MQ is drivers/gpu/drm/mxsfb/mxsfb_drv.c, so it is mxsfb. mxsfb-drm can't be initialized because bridge attach failed
It looks like relates to the way of handling DRM_BRIDGE_ATTACH_NO_CONNECTOR flag. Can you check this point?
The mxsfb will not pass the DRM_BRIDGE_ATTACH_NO_CONNECTOR, but dcss driver will.
ret = drm_bridge_attach(&mxsfb->encoder, bridge, NULL, 0);
if (ret)
return dev_err_probe(drm->dev, ret, "Failed to attach bridge\n");
mxsfb->bridge = bridge;
Best Regards
Zhiming
Dear Zhiming_Liu,
We will check the bridge driver again, because we porting GM8775C driver refer to imx8mp_ite6151_mipi2edp_linux_5.4.24_20200921.patch for Android 11 provided by NXP and adv7511 bridge driver on Android 13 BSP, so we are going to focus on DRM_BRIDGE_ATTACH_NO_CONNECTOR flag.
BTW, you said "mxsfb-drm can't be initialized because bridge attach failed"
=>Do you mean if bridge attach successfully, mxsfb-drm will be initialized in kernel space.
If yes, we want to use mxsfb in u-boot for Android boot animation(logo), do you have Android-13 doucuments for us to study and implement? thanks.
Please correct me if I'm wrong.
Do you mean if bridge attach successfully, mxsfb-drm will be initialized in kernel space.
-->Yes, we don't have such document, you can refer uboot and kernel source code.
Dear Zhiming,
We look up "primary_display", and Android_Quick_Start_Guide.pdf is not quite descriptive as the picture below.
Would you please organize what the terms of NXP proprietary mean? Thanks.
primary_display=mxsfb-drm
primary_display=imx-dcss
primary_display=imx-drm
primary_display=imx-dcnano
For i.MX8MQ, mxsfb is lcdif driver, lcdif can only ouput MIPI DSI. DCSS can both output DSI and HDMI.
imx-dcnano and imx-drm are also display controller driver in other i.MX platform.