Good day!
For educational purposes try to make own yocto machine, based on imx8mp with dual LVDS channels.
Kernel version is 6.1. And now I get next error:
[ 1.938366] imx8mp-ldb 32c00000.bus:ldb@32ec005c: Failed to create device link (0x180) with 32c00000.bus:phy@32ec0128
on kernel load.
What should I do for investigate this question? What could be the reasons for this behavior?
I found a section in the kernel code that generates this message. This is the file drivers/base/core.c, line 2091. Because on kernel version 5, there were no such messages, I compared this file between kernels. I discovered that the problem area in the code of the fifth core is absent in principle. Here's a section of code. I still can’t figure out what 0x180 means in the diagnostic message.
if (con != sup_dev && !device_link_add(con, sup_dev, flags)) {
dev_err(con, "Failed to create device link (0x%x) with %s\n",
flags, dev_name(sup_dev));
ret = -EINVAL;
}
I continue to try to figure out the problem. So far the situation has not moved from a dead point. I suspected the device tree. I am attaching a fragment of it.
&lcdif2 {
status = "okay";
};
&gpu_2d {
status = "okay";
};
&gpu_3d {
status = "okay";
};
&ml_vipsi {
status = "okay";
};
&mix_gpu_ml {
status = "okay";
};
/{
lvds0_panel {
compatible = "panel-lvds", "fsl,dual-channel";
backlight = <&lvds_backlight>;
pinctrl-0 = <&pinctrl_lvds_panel_en>;
enable-gpio = <&gpio1 13 GPIO_ACTIVE_HIGH>;
panel-type = "lvds";
width-mm = <125>;
height-mm = <223>;
data-mapping = "vesa-24";
split-mode;
panel-timing {
hactive = <1080>;
vactive = <1920>;
hsync-len = <12>;
hback-porch = <16>;
hfront-porch = <26>;
vsync-len = <3>;
vback-porch = <5>;
vfront-porch = <8>;
clock-frequency = <131400000>;
};
port {
panel_lvds_in: endpoint {
remote-endpoint = <&lvds_out>;
};
};
};
};
&ldb {
status = "okay";
fsl,dual-channel;
lvds-channel@0 {
fsl,data-mapping = "jeida";
fsl,data-width = <24>;
status = "okay";
port@1 {
reg = <1>;
lvds_out: endpoint {
remote-endpoint = <&panel_lvds_in>;
};
};
};
};
&ldb_phy {
status = "okay";
};
You can refer to imx8mp-evk-jdi-wuxga-lvds-panel.dts
Best regards
Harvey
Thank you very much for your answer.
1. I analyzed the proposed device tree.
2. Saw jdi,tx26d202vm0bwa, that controls by panel-simple driver.
3. Checked it and it worked.
4. Added my LVDS display with timings to the panel-simple.c file.
5. Registered my display in the device tree as compatible.
But diagnostic message is not disappeared.
Hi @alex23
Did find the solution for this issue. I am having the same issue where I want to use the dual channel of lvds interface on imx8mp board.
[ 2.318536] imx8mp-ldb 32c00000.bus:ldb@32ec005c: Failed to create device link (0x180) with 32c00000.bus:phy@32ec0128
[ 2.329460] imx8mq-usb-phy 381f0040.usb-phy: supply vbus not found, using dummy regulator
[ 2.338048] imx8mq-usb-phy 382f0040.usb-phy: supply vbus not found, using dummy regulator
[ 2.348227] pwm-backlight backlight: supply power not found, using dummy regulator
[ 2.355824] imx6q-pcie 33800000.pcie: host bridge /soc@0/pcie@33800000 ranges:
[ 2.363124] imx6q-pcie 33800000.pcie: IO 0x001ff80000..0x001ff8ffff -> 0x0000000000
[ 2.364508] dwhdmi-imx 32fd8000.hdmi: Detected HDMI TX controller v2.13a with HDCP (samsung_dw_hdmi_phy2)
[ 2.371347] imx6q-pcie 33800000.pcie: MEM 0x0018000000..0x001fefffff -> 0x0018000000
[ 2.383403] dwhdmi-imx 32fd8000.hdmi: registered DesignWare HDMI I2C bus driver
[ 2.402563] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
[ 2.410795] imx-drm display-subsystem: bound 32c00000.bus:ldb@32ec005c (ops imx8mp_ldb_ops)
[ 2.420040] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1
I am getting the above error and the board is stuck here and the kernel doesn't load ahead of this point. I have added entry for timing parameter in panel_simple.c as you mention in your last reply.
Any suggestion on this will be helpful.
Hello Mr. Jay
did you find the reason of this problem ? I hope that you have solved it