Verdin iMX8MP LVDS channel1

Hi,

It is possible to change LVDS channel from 0 to 1 on Verdin module?
I have this DTS:

/dts-v1/;

#include "imx8mp-verdin.dtsi"
#include "imx8mp-verdin-nonwifi.dtsi"
#include "imx8mp-verdin-dev.dtsi"

/ {
	model = "My Toradex Verdin iMX8M Plus on Verdin Development Board with KSZ8873";
	compatible = "mytoradex,verdin-imx8mp-nonwifi-dev-ksz8873",
			"toradex,verdin-imx8mp-nonwifi",
			"toradex,verdin-imx8mp",
			"fsl,imx8mp";
};

&backlight {
	compatible = "pwm-backlight";
	brightness-levels = <0 45 63 88 119 158 203 255>;
	default-brightness-level = <4>;
	/* MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28		0x1c4	/* SODIMM 21 */
	enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2s_2_d_out_dsi_1_bkl_en>;
	/* Verdin PWM_3_DSI/PWM_3_DSI_LVDS (SODIMM 19) */
	pwms = <&pwm3 0 6666667 PWM_POLARITY_INVERTED>;
	status = "okay";
};


&gpu_2d {
	status = "okay";
};

&gpu_3d {
	status = "okay";
};

&lcdif2 {
	status = "okay";
};



&ldb {
	status = "okay";

	lvds_channel1: lvds-channel@1 {
		fsl,data-mapping = "spwg";
		fsl,data-width = <24>;
		status = "okay";

		port@1 {
			reg = <1>;

			lvds_out1: endpoint {
				remote-endpoint = <&panel_lvds_in>;
			};
		};
	};
};

&ldb_phy {
	status = "okay";
};

&mix_gpu_ml {
	status = "okay";
};

&ml_vipsi {
	status = "okay";
};

&panel_lvds {
	backlight = <&backlight>;
	status = "okay";
	data-mapping = "vesa-24";
	width-mm = <199>;
	height-mm = <112>;
	panel-timing {
			clock-frequency = <60000000>;
			hactive = <1280>;
			hback-porch = <148>;
			hfront-porch = <88>;
			hsync-len = <44>;
			vactive = <720>;
			vback-porch = <36>;
			vfront-porch = <4>;
			vsync-len = <5>;
	};

	port {
		panel_lvds_in: endpoint {
			remote-endpoint = <&lvds_out1>;
		};
	};
};

but, kernel prints:

[    1.987165] imx-drm display-subsystem: failed to bind 32c00000.bus:ldb@32ec005c (ops imx8mp_ldb_ops): -16
[    1.996905] imx-drm display-subsystem: master bind failed: -16

I don’t know, what does it mean.
What exactly needs to be modified for channel 1?
It is possible to have same screen (dualscreen) on channel 0 and 1?

Thanks

Hi, I’m the Toradex AI Assistant. I’m in early beta, and I would appreciate your feedback.
The Toradex Support team will follow up with you shortly!


Hello,

I see you’re trying to configure the LVDS channel from 0 to 1 on a Verdin iMX8M Plus module and encountering an issue with the kernel not binding to the ldb device. This typically indicates a problem with the device tree configuration or a conflict with the resources.

To change the LVDS channel from 0 to 1, you’ve correctly identified the lvds_channel1: lvds-channel@1 node in your device tree source (DTS) file. However, the error message you’re seeing (master bind failed: -16) suggests that there’s a conflict or an issue with how the LVDS channel is being set up.

Here are a few steps to troubleshoot and potentially resolve the issue:

  1. Ensure Compatibility with the LVDS Interface: Verify that the LVDS interface you are trying to use is supported by the Verdin iMX8M Plus module. As you might already know, the i.MX 8M Plus SoC supports multiple display interfaces, but their availability and configuration might vary depending on the specific module and the carrier board design.

  2. Check the LDB Configuration: The error could be due to the configuration of the LDB (LVDS Display Bridge). Ensure that the &ldb node in your DTS file matches the hardware setup and that there are no conflicts with other peripherals that might be trying to use the same I/O pins or resources.

  3. Review the Port Configuration: The port configuration within the lvds_channel1 node should correctly match the physical connection to your display. The remote-endpoint property should point to the correct endpoint of the display panel’s device tree node. Double-check the display panel’s device tree configuration to ensure it’s correctly set up to receive input from the LVDS channel you are configuring.

  4. Dual Screen Configuration: For a dual-screen setup using both LVDS channels (channel 0 and channel 1), you would need to duplicate the configuration for the second channel, ensuring that both lvds_channel0 and lvds_channel1 are correctly configured and that they do not conflict with each other. This includes setting up separate endpoints for each channel and ensuring the display timings and configurations do not conflict.

  5. Kernel and Driver Support: Ensure that the Linux kernel version you are using supports dual LVDS configurations on the Verdin iMX8M Plus. The error could be related to limitations or bugs in the LVDS driver implementation for your specific kernel version

Please, also check if these links can help you solve your problem:

Display Output, Resolution and Timings (Linux) | Toradex Developer Center.


How did you like my response?

:+1: :-1:

Sorry for impetuous question, here is solution. It seems to be pretty simple…

/dts-v1/;

#include "imx8mp-verdin.dtsi"
#include "imx8mp-verdin-nonwifi.dtsi"
#include "imx8mp-verdin-dev.dtsi"

/ {
	model = "My Toradex Verdin iMX8M Plus on Verdin Development Board with KSZ8873";
	compatible = "mytoradex,verdin-imx8mp-nonwifi-dev-ksz8873",
			"toradex,verdin-imx8mp-nonwifi",
			"toradex,verdin-imx8mp",
			"fsl,imx8mp";


	panel_lvds1: panel-lvds {
		backlight = <&backlight>;
		status = "disabled";
		data-mapping = "vesa-24";
		width-mm = <199>;
		height-mm = <112>;
		panel-timing {
				clock-frequency = <60000000>;
				hactive = <1280>;
				hback-porch = <148>;
				hfront-porch = <88>;
				hsync-len = <44>;
				vactive = <720>;
				vback-porch = <36>;
				vfront-porch = <4>;
				vsync-len = <5>;
		};

		port {
			panel_lvds_in: endpoint {
				remote-endpoint = <&lvds_out>;
			};
		};
	};



	panel_lvds2: panel-lvds {
		backlight = <&backlight>;
		status = "okay";
		data-mapping = "vesa-24";
		width-mm = <199>;
		height-mm = <112>;
		panel-timing {
				clock-frequency = <60000000>;
				hactive = <1280>;
				hback-porch = <148>;
				hfront-porch = <88>;
				hsync-len = <44>;
				vactive = <720>;
				vback-porch = <36>;
				vfront-porch = <4>;
				vsync-len = <5>;
		};

		port {
			panel_lvds1_in: endpoint {
				remote-endpoint = <&lvds1_out>;
			};
		};
	};


};

&backlight {
	compatible = "pwm-backlight";
	brightness-levels = <0 45 63 88 119 158 203 255>;
	default-brightness-level = <4>;
	/* MX8MP_IOMUXC_SAI3_RXFS__GPIO4_IO28		0x1c4	/* SODIMM 21 */
	enable-gpios = <&gpio4 28 GPIO_ACTIVE_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_i2s_2_d_out_dsi_1_bkl_en>;
	/* Verdin PWM_3_DSI/PWM_3_DSI_LVDS (SODIMM 19) */
	pwms = <&pwm3 0 6666667 PWM_POLARITY_INVERTED>;
	status = "okay";
};


&gpu_2d {
	status = "okay";
};

&gpu_3d {
	status = "okay";
};

&lcdif2 {
	status = "okay";
};

@msv_zitnik,

Thank you for sharing. If you need further help feel free to contact us.

Best Regards,

Matthias