Drive LVDS panel on i.MX8QM board with Xen Hypervisor

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

Drive LVDS panel on i.MX8QM board with Xen Hypervisor

1,011 Views
nevozade
Contributor IV

Hello,

I am working on the i.MX8QM board and I desire to drive (display) LVDS panel on a DomU which is created with Xen hypervisor. Without Xen hypervisor, when I set the fdt_file as imx8qm-mek-jdi-wuxga-lvds1-panel.dtb on u-boot, the Weston service runs and I can get view on the LVDS panel. (imx8qm-mek-jdi-wuxga-lvds1-panel.dtsi is attached that I used, also screenshot of the status of the Weston when it is active.) 

ok.PNG

Then I reboot the board and, I run xenmmcboot to run with Xen hypervisor and Xen works properly. (I can see Domain-0 with xl list command as shown in the attached screenshot).

dom0ain.PNG

After that, I create DomU with the /etc/xen/domu-imx8qm-mek.cfg file which is also attached and I boot it with xl console DomU command. However, after booting, when I check the Weston service, I observed that it is failed so I cannot drive the LVDS panel from DomU. (imx8qm-mek-domu.dts is also attached.)

domu.PNG

err.PNG

Would you please check the attached screenshots and files, then reply for a solution to drive LVDS?

Best Regards,

Nevzat

1 Reply

983 Views
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

This problem is fixed and the display is working smoothly. 
For some reason defining in the device tree the deserializer node and the display timing inside the serializer node were causing an issue. Also just providing the deserializer I2C address in the serializer node is sufficient.

So I removed the deserializer node and created a panel node to define the display timing like this:

 

&ldb1 {
	status = "okay";
	fsl,dual-channel;
	
	lvds-channel@0 {
		fsl,data-mapping = "spwg";
		fsl,data-width = <24>;
		status = "okay";
 
		port@1 {
			reg = <1>;
			lvds0_out: endpoint {
				remote-endpoint = <&panel0_input>;
			};
		};
	};
};

/ {
	panel0: panel0 {
		status = "okay";
		compatible = "panel-lvds";
		data-mapping = "vesa-24";
		width-mm = <283>;
		height-mm = <159>;

		panel-timing {
			clock-frequency = <143200000>;
			hactive = <1920>;
			vactive = <1080>;
			hfront-porch = <32>;
			hback-porch = <32>;
			hsync-len = <16>;
			vback-porch = <16>;
			vfront-porch = <70>;
			vsync-len = <8>;
			hsync-active = <1>;
			vsync-active = <0>;
		};

		port {
			panel0_input: endpoint {
				remote-endpoint = <&lvds0_out>;
			};
		};
	};
};

&i2c0_lvds0 {
	#address-cells = <1>;
	#size-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_lvds0_lpi2c0>;
	clock-frequency = <100000>;
	status = "okay";

	serializer: serializer@c {
		compatible = "ti,ds90ub947";
		reg = <0x0c>;
		#address-cells = <0x1>;
		#size-cells = <0x0>;
		#reset-cells = <0x1>;
		dual-pixel-mode;
		ti,enable-bchnl-i2c = <0x1>;	// I2C Pass All/I2C Passthrough - reg 0x3 bit 3 - reg 0x17 bit 7
		ti,enable-bchnl-irq = <0x1>;	// Interrupt - 0xc6 bit 0 and 5
		ti,deser-addr = <0x2c>;			// DES Device ID - reg 0x6 bit 1:7
		ti,slave-addr = <0x00>;			// Slave ID 0 - reg 0x7 bit 1:7
		ti,slave-alias-addr = <0x00>;	// Slave Alias ID 0 - reg 0x8 bit 1:7
	};
	
	// Led Driver for backlight control
	lp8860@2d {
		compatible = "ti,lp8860";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x2d>;
		label = "display_cluster";
	};
};

 

Regards

0 Kudos
Reply