imx8mp-ldb Failed to create device link with phy

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

imx8mp-ldb Failed to create device link with phy

1,401 Views
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 Kudos
6 Replies

1,325 Views
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 Kudos

1,345 Views
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 Kudos

1,286 Views
Harvey021
NXP TechSupport
NXP TechSupport

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

 

Best regards

Harvey

0 Kudos

1,223 Views
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 Kudos

963 Views
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 Kudos

356 Views
Zater
Contributor II

Hello Mr. Jay

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

0 Kudos