imx8mp-ldb Failed to create device link with phy

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

imx8mp-ldb Failed to create device link with phy

7,630 次查看
alex23
Contributor I

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?

0 项奖励
回复
7 回复数

6,070 次查看
osipovvo
Contributor II

Just as idea - take a look into the pwm settings for the backlight. I've faced the same problem migrating from kernel 5 to kernel 6 with previous version of the device tree. Here was the difference in the cells (params) count. So no pwm was available, so no ld phy, no panel and no driver and "Failed to create device link" error message in the dmesg output as the "top" (or statrt) of this story.

0 项奖励
回复

7,554 次查看
alex23
Contributor I

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;
}

 

 

0 项奖励
回复

7,574 次查看
alex23
Contributor I

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";
};

 

 

0 项奖励
回复

7,515 次查看
Harvey021
NXP TechSupport
NXP TechSupport

You can refer to imx8mp-evk-jdi-wuxga-lvds-panel.dts

 

Best regards

Harvey

0 项奖励
回复

7,452 次查看
alex23
Contributor I

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.

0 项奖励
回复

7,192 次查看
jay_kaneria
Contributor I

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. 

0 项奖励
回复

6,585 次查看
Zater
Contributor II

Hello Mr. Jay

did you find the reason of this problem ? I hope that you have solved it

0 项奖励
回复