Dear Friends;
Hello. I have a annoying problem with IMXMQ MCU while using LCDIF LVDS Configuration. First of all, let me give you some information about my system.
I have MIPI-DSI to LVDS bridge to support lvds and we use our custom carrier board. Our solution must support both dual display ( LVDS + HDMI configuration) in one image at the same time. However, when ı use only dcss-lvds devicetree, it works perfectly with lvds display. Also, when ı a build with hdmi devicetree to support hdmi, it work perfectly again. When ı check the devicetree, hdmi is also driver by dcss.
So, HDMI by DCSS and LVDS by DCSS work correctly. However, when ı build with dual display devicetree to support dual display, it does not work. When ı check dual display device tree, it says lvds is driver by lcdif and hdmi is driven by dcss. So ı recognize that when ı use dual-display devicetree, it actually include lcdif-lvds devicetree and define the hdmi part. So ı have focused on lcdif-lvds devicetree which is not working.
When ı check the dmesg log, it acually defines buffer or any other related things. Let me show you.
[ 3.000151] panel-simple-dsi 30a00000.mipi-dsi.0: supply power not found, using dummy regulator
[ 3.009021] panel-simple-dsi 30a00000.mipi-dsi.0: Specify missing connector_type
[ 3.016460] nwl-dsi 30a00000.mipi-dsi: [drm:nwl_dsi_host_attach] lanes=4, format=0x0 flags=0x3
[ 3.025160] nwl-dsi 30a00000.mipi-dsi: [drm:nwl_dsi_probe] Using LCDIF as input source
[ 3.629600] [drm] Initialized mxsfb-drm 1.0.0 20160824 for 30320000.lcd-controller on minor 0
[ 4.087404] [drm] Initialized vivante 1.0.0 20170808 for 38000000.gpu3d on minor 1
Kernel boots up to one point and then suddenly ı have seen black screen on my display and nothing happened for a 1min. After 1 min, kernel reboot itself. I have seen booting penguin on my screen up to rebooting point. Kernel boot up to this message and then reboot itself.
[ 10.657078] wait_for_keymaster: Keymaster HAL #1: SoftwareKeymasterDevice from Google SecurityLevel: SOFTWARE HAL: android.hardware.keymaster@4.1::IKeymasterDevice/default
When ı make a research ı have learnt that lcdif is not supporting 1920x1080. My display has 1920x1080 spec, but when ı change the resolution it did not work also.
I checked the kernel_imx/drivers/gpu/drm/panel/panel-simple.c source file and gradually decreased the clock value from 148500 to 9000 in steps of 500, but nothing changed.
I have used "auo_g240hw01_mode" compatible name in my devicetree and change the values on panel-simple.c source file to test. I have checked .flags, .bus_flags and etc. but nothing happened so it is really annoying. I will attached the device-tree files. Please check lcdif-lvds and dual-display devicetree source files, panel-simple.c and my dmesg log for lcdif-lvds. I have also set BOARD_KERNEL_CMDLINE += androidboot.primary_display=mxsfb-drm to support primary display as lcdif but not working.
I am using SN65DSI84 lvds bridge. Why this works in dcss+lvds or dcss+hdmi configuration and not working with dual display(dcss+hdmi and lcdif+lvds) configuration? Or not working only lcdif+lvds configuration ? Dmesg says it is running correctly as driver.
This is my panel simple definition.
static const struct drm_display_mode auo_g240hw01_mode = {
.clock = 148500, //148500 before topkarag
.hdisplay = 1920,
.hsync_start = 1920 + 88,
.hsync_end = 1920 + 88 + 44,
.htotal = 1920 + 88 + 44 + 148,
.vdisplay = 1080,
.vsync_start = 1080 + 4,
.vsync_end = 1080 + 4 + 5,
.vtotal = 1080 + 4 + 5 + 36,
.flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
};
Please check attach files
device-tree-files.zip
demsg-logz.zip
panel-simple.c file (auo_g240hw01_mode is used)
Please if you have solved any issue like this, please write any suggestion even if it is not directly the solution of this issue. It may help for me.
Best Regards