Android 13 LCDIF of display interface can't work

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

Android 13 LCDIF of display interface can't work

Jump to solution
685 Views
KyleChang
Contributor I

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.

Display_Interface.png

eDP_LVDS.jpg

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

 

0 Kudos
Reply
1 Solution
659 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

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

View solution in original post

0 Kudos
Reply
6 Replies
660 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

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

0 Kudos
Reply
630 Views
KyleChang
Contributor I

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.

 

0 Kudos
Reply
612 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

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.

0 Kudos
Reply
582 Views
KyleChang
Contributor I

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

primary_display.png

 

0 Kudos
Reply
571 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

For i.MX8MQ, mxsfb is lcdif driver, lcdif can only ouput MIPI DSI. DCSS can both output DSI and HDMI.

Zhiming_Liu_0-1711677495978.png

 

imx-dcnano and imx-drm are also display controller driver in  other i.MX platform.

0 Kudos
Reply
557 Views
KyleChang
Contributor I
Thank you very much, LCDIF connected to MIPI-DSI on Android 13 can work.
0 Kudos
Reply