SK-AM62: AM62xx-EVM LVDS Display half screen problem

Part Number: SK-AM62

Hi TI Team,

Currently, I am working on AM62xx-evm board and trying to activate LVDS CH1 (odd) port. I changed timing and resolutions for "k3-am625-sk-microtips-mf101hie-panel.dtso" in "panel-simple.c".

The display doesn't work properly. While it is working, it is flipping and half of the display works. Whole picture shrink and appears on half of the display. As you can see in the picture.

panel-simple.c ;

static const struct drm_display_mode microtips_mf_101hiebcaf0_mode = {

	.clock = 71100,

	.hdisplay = 1280,

	.hsync_start = 1280 + 32,

	.hsync_end = 1280 + 32 + 80,

	.htotal = 1280 + 32 + 80 + 48,

	.vdisplay = 800,

	.vsync_start = 800 + 8,

	.vsync_end = 800 + 8 + 5,

	.vtotal = 800 + 8 + 5 + 10,

};



static const struct panel_desc microtips_mf_101hiebcaf0 = {

	.modes = &microtips_mf_101hiebcaf0_mode,

	.bpc = 8,

	.num_modes = 1,

	.size = {

		.width = 217,

		.height = 136,

	},

	.delay = {

		.prepare = 50,

		.disable = 50,

	},

	.bus_flags = DRM_BUS_FLAG_DE_HIGH,

	.bus_format = MEDIA_BUS_FMT_RGB888_1X7X4_SPWG,

	.connector_type = DRM_MODE_CONNECTOR_LVDS,

};

I also tried many combinaitons of the timings. This is the last one. I use LVDSchannel 1

Display timing parameters like this;

Could you help me about this?

Thank you in advance!

\Ismail

  • Hello,

    What SW baseline are you using? Also, is this a single link or dual link LVDS?

    Regards,
    Krunal

  • Hello,
    I am using version: TI SDK 09_01_00_08. The application is Single Link.

    Here You can see k3-am625-sk-microtips-mf101hie-panel.dtso

    // SPDX-License-Identifier: GPL-2.0
    
    /**
    
     * Microtips integrated OLDI panel (MF-101HIEBCAF0) and touch DT overlay for AM625 - SK
    
     *
    
     * Copyright (C) 2021 Texas Instruments Incorporated - http://www.ti.com/
    
     */
    
    
    
    /dts-v1/;
    
    /plugin/;
    
    
    
    #include <dt-bindings/gpio/gpio.h>
    
    #include <dt-bindings/interrupt-controller/irq.h>
    
    
    
    #include "k3-pinctrl.h"
    
    
    
    &{/} {
    
    	display {
    
    		compatible = "microtips,mf-101hiebcaf0";
    
    		/*
    
    		* Note that the OLDI TX 0 transmits the odd set of pixels
    
    		* while the OLDI TX 1 transmits the even set. This is a
    
    		* fixed configuration in the IP integration and is not
    
    		* changeable. The properties, "dual-lvds-odd-pixels" and
    
    		* "dual-lvds-even-pixels" have been used to merely
    
    		* identify if a Dual Link configuration is required.
    
    		* Swapping them will not make any difference.
    
    		*/
    
    		port@0 {
    
    			dual-lvds-odd-pixels;
    
    			lcd_in0: endpoint {
    
    				remote-endpoint = <&oldi_out0>;
    
    			};
    
    		};
    
    		
    
    	};
    
    };
    
    
    
    &main_pmx0 {
    
    	main_oldi0_pins_default: main-oldi0-pins-default {
    
    		pinctrl-single,pins = <
    
    			AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
    
    			AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
    
    			AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
    
    			AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
    
    			AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
    
    			AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
    
    			AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
    
    			AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
    
    			AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
    
    			AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
    
    			AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
    
    			AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
    
    			AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
    
    			AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
    
    			AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
    
    			AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
    
    			AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
    
    			AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
    
    			AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
    
    			AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
    
    		>;
    
    	};
    
    };
    
    
    
    &dss {
    
    	pinctrl-names = "default";
    
    	pinctrl-0 = <&main_oldi0_pins_default &main_dss0_pins_default>;
    
    };
    
    
    
    &dss_ports {
    
    	#address-cells = <1>;
    
    	#size-cells = <0>;
    
    
    
    	/* VP1: LVDS Output (OLDI TX 0) */
    
    	port@0 {
    
    		reg = <0>;
    
    		oldi_out0: endpoint {
    
    			remote-endpoint = <&lcd_in0>;
    
    		};
    
    	};	
    
    };

    Best regards,
    Ismail

  • Hello Ismail,

    The single link config should look like the following:

    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    
    #include "k3-pinctrl.h"
    
    &{/} {
    	display {
    		compatible = "microtips,mf-101hiebcaf0";
    		/*
    		* Note that the OLDI TX 0 transmits the odd set of pixels
    		* while the OLDI TX 1 transmits the even set. This is a
    		* fixed configuration in the IP integration and is not
    		* changeable. The properties, "dual-lvds-odd-pixels" and
    		* "dual-lvds-even-pixels" have been used to merely
    		* identify if a Dual Link configuration is required.
    		* Swapping them will not make any difference.
    		*/
    		port@0 {
    			lcd_in0: endpoint {
    				remote-endpoint = <&oldi_out0>;
    			};
    		};
    	};
    };
    
    &main_pmx0 {
    	main_oldi0_pins_default: main-oldi0-pins-default {
    		pinctrl-single,pins = <
    			AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
    			AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
    			AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
    			AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
    			AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
    			AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
    			AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
    			AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
    			AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
    			AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
    			AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
    			AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
    			AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
    			AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
    			AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
    			AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
    			AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
    			AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
    			AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
    			AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
    		>;
    	};
    };
    
    &dss {
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_oldi0_pins_default &main_dss0_pins_default>;
    };
    
    &dss_ports {
    	#address-cells = <1>;
    	#size-cells = <0>;
    
    	/* VP1: LVDS Output (OLDI TX 0) */
    	port@0 {
    		reg = <0>;
    		oldi_out0: endpoint {
    			remote-endpoint = <&lcd_in0>;
    		};
    	};
    
    };
    

    Also I am assuming you updated the microtips struct in panel-simple and recompiled the Kernel and DTB. Lastly, if you run kmsprint, the reported timing match your programmed timing? 

    Regards,
    Krunal

  • Hello Krunal,
    Yes, I recompiled the kernel and DTB files. 

    I used this timing settings in panel-simple file:

    .clock = 71100,
    .hdisplay = 1280,
    .hsync_start = 1280 + 48,
    .hsync_end = 1280 + 48 + 80,
    .htotal = 1280 + 48 + 80 + 32,
    .vdisplay = 800,
    .vsync_start = 800 + 10,
    .vsync_end = 800 + 10 + 5,
    .vtotal = 800 + 10 + 5 + 8,

    kmsprint results are like this:

    Connector 0 (40) LVDS-1 (connected)
    Encoder 0 (39) LVDS
    Crtc 0 (38) 1280x800@59.99 71.100 1280/48/80/32/? 800/10/5/8/? 60 (59.99) 08
    Plane 0 (31) fb-id: 51 (crtcs: 0 1) 0,0 1280x800 -> 0,0 1280x800 (AR12 AB)
    FB 51 1280x800
    Connector 1 (50) HDMI-A-1 (disconnected)
    Encoder 1 (49) NONE

    Results are same on the display; I can't see anything on display

    Best regards,

    Ismail

  • Hello,

    Just to clarify, this is your custom board with custom panel? or you are using TI SDK EVM with microtips panel?

    Regards,
    Krunal

  • Hello,

    I am using am62xx-evm and custom adapter board. The panel is not microtips panel. 

    I also checked the signals;

    Clock:

    Data:

    Regards,

    Ismail

  • Hello,

    I am not familiar with your custom adapter board and can only offer limited help. In general, the SK-EVM is only compatible with dual link LVDS panel. From software perspective, the DT changes look correct.

    Regards,
    Krunal

  • Hi Krunal,

    Do you mean: SK-am62 EVM can't work in Single Link LVDS mode? 

  • I have tried on different LCD (1024x600). The image is clear and work stabil but still it is half of the display. I think When I try to use on Single Link LVDS mode, software close LVDS channel 2 pins. It doesnt send data on this channel, but internally something happens and it sends still only odd pixels. 


      

    You can see the current display above (1024x600).

    Regards

    Ismail

  • Hello,

    In general, single link is supported by IP but our EVM is only compatible with the following dual link panel: https://www.ti.com/tool/SK-LCD1. Also, in single link the pixels will only be transmitted on the below signals.

    Regards,
    Krunal

  • Hi Krunal,
    It was half display. on 1024*600 display I used 2048*600 resolution. It worked I got full screen but sametime I got low fps because of the 2048. I think it shows When we set single link lvds, It only close outputs, it does not change internal processes. Is there any solution for this?

    Regards,

    Ismail

  • Hi,

    I am not sure I understand your single link lvds comment and could you please clarify?

    Regards,
    Krunal

  • I tried a dts file on 1024x600 display. I got half display. here is the code:

    #include <dt-bindings/gpio/gpio.h>
    
    #include <dt-bindings/interrupt-controller/irq.h>
    
    
    
    #include "k3-pinctrl.h"
    
    
    
    &{/} {
    
    	display {
    
    		compatible = "panel-lvds";
    
    		//backlight = <&lvds_bl>;
    
    
    
    		width-mm = <217>;
    
    		height-mm = <136>;
    
    
    
    		data-mapping = "vesa-24";
    
    
    
    		panel-timing {
    
    			clock-frequency = <51100000>;
    
    			hactive = <1024>;
    
    			vactive = <600>;
    
    
    
    			hfront-porch = <25>;
    
    			hsync-len = <15>;
    
    			hback-porch = <15>;
    
    
    
    			vfront-porch = <5>;
    
    			vsync-len = <8>;
    
    			vback-porch = <10>;
    
    
    		};
    
    
    
    		port@0 {
    
    			lcd_in0: endpoint {
    
    				remote-endpoint = <&oldi_out0>;
    
    			};
    
    		};
    
    	};
    
    };
    
    
    
    &main_pmx0 {
    
    	main_oldi0_pins_default: main-oldi0-pins-default {
    
    		pinctrl-single,pins = <
    
    			AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
    
    			AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
    
    			AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
    
    			AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
    
    			AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
    
    			AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
    
    			AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
    
    			AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
    
    			AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
    
    			AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
    
    			AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
    
    			AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
    
    			AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
    
    			AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
    
    			AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
    
    			AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
    
    			AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
    
    			AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
    
    			AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
    
    			AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
    
    		>;
    
    	};
    
    
    
    	lvds0_rst_pins_default: lvds0-rst-pins-default {
    
    		pinctrl-single,pins = <
    
    			AM62X_IOPAD(0x0094, PIN_OUTPUT, 7) /* (N20) GPMC0_BE1n.GPIO0_36 */
    
    		>;
    
    	};
    
    	
    
    };
    
    
    
    &dss {
    
    	pinctrl-names = "default";
    
    	pinctrl-0 = <&lvds0_rst_pins_default &main_oldi0_pins_default>;
    
    };
    
    
    
    
    
    
    
    &dss_ports {
    
    	#address-cells = <1>;
    
    	#size-cells = <0>;
    
    
    
    	/* VP0: LVDS Output (OLDI TX 0) */
    
    	port@0 {
    
    		reg = <0>;
    
    		oldi_out0: endpoint {
    
    			remote-endpoint = <&lcd_in0>;
    
    		};
    
    	};
    
    
    
    };

    If I change the resolution to something like 2048*600. It works. That way I can get fullscreen, but at the same time I get low fps because now I have 2x the resolution.
    It was the same with 1280x800 screen.
    The connection is single link LVDS. I use only one LVDS port (OLDI CH1). How can I make the SDK for correct operation?

    Regards 

    Ismail

  • Hi Ismail,

    I was internally reviewing your changes and one thing to check with your vendor is the units (Tc vs th) for the horizontal display area. In the past, when we used microtips panel, the datasheet showed 960 tCLK and we were programming 960. Upon boot, we saw frames similar to yours. After checking with vendor, they told us to 2x the number.

    In terms of performance, you mentioned about low FPS and how are you measuring the FPS? Are you running the out of box demo and if yes, do you have the gpu module loaded (lsmod | grpe -i pvr). If the GPU module is not loaded then CPU will be used for animations and performance will not be good.

    Regards,
    Krunal

  • Hi Krunal,

    I doubled the clock. It worked I got higher fps. But As I said before TI SDK sends only one type of pixel. (in my case it sends even pixels.) That's why I got bad images and texts on the display. I will show you how I proved it:


    Picture 1: I made this picture. It is 1280x800. The Odd pixel columns are green and The Even pixel columns are red in this picture. If you zoom it you will see.

    Picture 2: I took this photo from monitor. I printed Picture 1 to monitor through HDMI from SK-AM62 dev. kit.

    Picture 3: I took this photo from the 1280x800 display. The display is connected to the LVDS channel 1. Also you sent the channel schematic before.

    As you can see in the picture 3, it is red because it shows only even pixels. 

    Is there any solution about this? 

    Regards

    Ismail

  • Hi,

    Could you please help me understand the following:

    1. Just to confirm, are you using two different LCD (1024x600 and 1280x800) or just one LCD (1280x800)?
    2. For each LCD, have you confirmed with your vendor if they are single link or dual link?
    3. For each LCD, are you setting DSS to be single link or dual link mode?

    Regards,
    Krunal

  • Hi Krunal,

    1. I use 1280x800 LCD. the 1024x600 was for just testing.

    2. Yes, I have checked with the vendor it is single link LVDS (1280x800 one). You can see the pinouts below

    3. For each LCD I set as a single link. Also you sent code I double checked with it. You can see the dts file below.

    &{/} {
    
    	display {
    
    		compatible = "panel-lvds";
    		width-mm = <217>;
    		height-mm = <136>;
    
    		data-mapping = "vesa-24";
    
    		panel-timing {
    
    			clock-frequency = <71100000>;
    
    			hactive = <1280>;
    
    			vactive = <800>;
    
    			hfront-porch = <80>;
    
    			hsync-len = <32>;
    
    			hback-porch = <48>;
    
    			vfront-porch = <5>;
    
    			vsync-len = <8>;
    
    			vback-porch = <10>;
    		};
    
    		port@0 {
    
    			lcd_in0: endpoint {
    
    				remote-endpoint = <&oldi_out0>;
    
    			};
    
    		};
    
    	};
    
    };
    &main_pmx0 {
    
    	main_oldi0_pins_default: main-oldi0-pins-default {
    
    		pinctrl-single,pins = <
    
    			AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
    
    			AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
    
    			AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
    
    			AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
    
    			AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
    
    			AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
    
    			AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
    
    			AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
    
    			AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
    
    			AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
    
    			AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
    
    			AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
    
    			AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
    
    			AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
    
    			AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
    
    			AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
    
    			AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
    
    			AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
    
    			AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
    
    			AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
    
    		>;
    
    	};
    
    	lvds0_rst_pins_default: lvds0-rst-pins-default {
    
    		pinctrl-single,pins = <
    
    			AM62X_IOPAD(0x0094, PIN_OUTPUT, 7) /* (N20) GPMC0_BE1n.GPIO0_36 */
    
    		>;
    
    	};	
    
    };
    
    &dss {
    
    	pinctrl-names = "default";
    
    	pinctrl-0 = <&lvds0_rst_pins_default &main_oldi0_pins_default>;
    
    };
    
    &dss_ports {
    
    	#address-cells = <1>;
    
    	#size-cells = <0>;
    
    	/* VP0: LVDS Output (OLDI TX 0) */
    
    	port@0 {
    
    		reg = <0>;
    
    		oldi_out0: endpoint {
    
    			remote-endpoint = <&lcd_in0>;
    
    		};
    
    	};
    };
    
    

    Regards 

    Ismail

  • Hi,

    In the previous dts file instance If I change hactive part like this -->  hactive = <2560>     I get full screen on the display.

    Regards 

    Ismail

  • Hi Ismail,

    I high recommend you to check with your LCD vendor on the timing parameters. In the past, our team made adapter boards for connecting the following single link lvds panel: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am654-evm-oldi-lcd1evm.dtso?h=ti-linux-6.1.y . We did not see any issues with single link.

    Regards,
    Krunal

  • Hi Krunal,
    I checked with the vendor and we tested display, they work normal. I tried also your suggestion DTS example. It didn't work. 
    I want to show a different point:
    I checked other people's kmsprint results and noticed that when they use the single link lvds, the crtcs part is like this: (crtcs: 0).

    But my kmsprint result is like this:

    "Connector 0 (40) LVDS-1 (connected)
    Encoder 0 (39) LVDS
    Crtc 0 (38) 2560x800@63.52 142.200 2560/80/32/48/? 800/5/8/10/? 64 (63.52) 0x0 0x48
    Plane 1 (41) fb-id: 56 (crtcs: 0 1) 0,0 2560x800 -> 0,0 2560x800 (AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12)
    FB 56 2560x800
    Connector 1 (50) HDMI-A-1 (disconnected)
    Encoder 1 (49) NONE "

    You can see the crtcs part is (crtcs: 0 1). Who use Dual-Link-LVDS, their results have the same CRTCS.

    I can see, my DTS file settings are implemented. Except the single-link-lvds part. It is partly implemented.

    (I checked the tidss* codes. It parses correct and it closes the 2th channel outputs (measured). But something happens and the crtcs part can't detect my settings correct way. )

    You can see my DTS file example above in comments. I used the Single-Link-Lvds settings.

    Regards

    Ismail

  • Okay, let me check internally and I will get back to you.

    Regards,
    Krunal

  • Hello Krunal,

    I need to deliver the device soon. Is there any news about this issue?

    Regards

    Ismail

  • Hi,

    I was trying to setup a single link LVDS on my side and here is my kmsprint log:

    oot@am62xx-lp-evm:~# kmsprint
    Connector 0 (40) LVDS-1 (connected)
      Encoder 0 (39) LVDS
        Crtc 0 (38) 1280x800@59.99 71.100 1280/48/32/80/? 800/2/5/16/? 60 (59.99) 0x0 0x48
          Plane 0 (31) fb-id: 48 (crtcs: 0) 0,0 1280x800 -> 0,0 1280x800 (AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12)
            FB 48 1280x800
    root@am62xx-lp-evm:~# kmstest
    Connector 0/@40: LVDS-1
      Crtc 0/@38: 1280x800@59.99 71.100 1280/48/32/80/? 800/2/5/16/? 60 (59.99) 0x0 0x48
      Plane 0/@31: 0,0-1280x800
        Fb 50 1280x800-XR24
    press enter to exit
    
    root@am62xx-lp-evm:~#  

    Here is the code change I made in the overlay file:

    --- a/arch/arm64/boot/dts/ti/k3-am62-lp-sk-microtips-mf101hie-panel.dtso
    +++ b/arch/arm64/boot/dts/ti/k3-am62-lp-sk-microtips-mf101hie-panel.dtso
    @@ -15,7 +15,8 @@
     
     &{/} {
            display {
    -               compatible = "microtips,mf-101hiebcaf0";
    +               //compatible = "microtips,mf-101hiebcaf0";
    +               compatible = "rocktech,rk101ii01d-ct";
                    /*
                    * Note that the OLDI TX 0 transmits the odd set of pixels
                    * while the OLDI TX 1 transmits the even set. This is a
    @@ -26,17 +27,17 @@
                    * Swapping them will not make any difference.
                    */
                    port@0 {
    -                       dual-lvds-odd-pixels;
    +                       //dual-lvds-odd-pixels;
                            lcd_in0: endpoint {
                                    remote-endpoint = <&oldi_out0>;
                            };
                    };
    -               port@1 {
    -                       dual-lvds-even-pixels;
    -                       lcd_in1: endpoint {
    -                               remote-endpoint = <&oldi_out1>;
    -                       };
    -               };
    +               // port@1 {
    +               //      dual-lvds-even-pixels;
    +               //      lcd_in1: endpoint {
    +               //              remote-endpoint = <&oldi_out1>;
    +               //      };
    +               // };
            };
     };
     
    @@ -84,13 +85,13 @@
                    };
            };
     
    -       /* VP1: LVDS Output (OLDI TX 1) */
    -       port@2 {
    -               reg = <2>;
    -               oldi_out1: endpoint {
    -                       remote-endpoint = <&lcd_in1>;
    -               };
    -       };
    +       // /* VP1: LVDS Output (OLDI TX 1) */
    +       // port@2 {
    +       //      reg = <2>;
    +       //      oldi_out1: endpoint {
    +       //              remote-endpoint = <&lcd_in1>;
    +       //      };
    +       // };
     };

    Regards,
    Krunal

  • Hello Krunal,

    I tried this already before. For just being sure I tried again, the results did not change. You use "LP" version of am62xx. Could you try on the generic one (am62xx-evm)?

    Here you can see the dts file and kmsprint results:

    // SPDX-License-Identifier: GPL-2.0
    
    /**
    
     * Microtips integrated OLDI panel (MF-101HIEBCAF0) and touch DT overlay for AM625 - SK
    
     *
    
     * Copyright (C) 2021 Texas Instruments Incorporated - http://www.ti.com/
    
     */
    
    
    
    /dts-v1/;
    
    /plugin/;
    
    
    
    #include <dt-bindings/gpio/gpio.h>
    
    #include <dt-bindings/interrupt-controller/irq.h>
    
    
    
    #include "k3-pinctrl.h"
    
    
    
    &{/} {
    
    	display {
    
    		compatible = "rocktech,rk101ii01d-ct";
    
    		/*
    
    		* Note that the OLDI TX 0 transmits the odd set of pixels
    
    		* while the OLDI TX 1 transmits the even set. This is a
    
    		* fixed configuration in the IP integration and is not
    
    		* changeable. The properties, "dual-lvds-odd-pixels" and
    
    		* "dual-lvds-even-pixels" have been used to merely
    
    		* identify if a Dual Link configuration is required.
    
    		* Swapping them will not make any difference.
    
    		*/
    
    		port@0 {
    
    			//dual-lvds-odd-pixels;
    
    			lcd_in0: endpoint {
    
    				remote-endpoint = <&oldi_out0>;
    
    			};
    
    		};
    
    		//port@1 {
    
    		//	dual-lvds-even-pixels;
    
    		//	lcd_in1: endpoint {
    
    		//		remote-endpoint = <&oldi_out1>;
    
    		//	};
    
    		//};
    
    	};
    
    };
    
    
    
    &main_pmx0 {
    
    	main_oldi0_pins_default: main-oldi0-pins-default {
    
    		pinctrl-single,pins = <
    
    			AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
    
    			AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
    
    			AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
    
    			AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
    
    			AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
    
    			AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
    
    			AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
    
    			AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
    
    			AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
    
    			AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
    
    			AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
    
    			AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
    
    			AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
    
    			AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
    
    			AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
    
    			AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
    
    			AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
    
    			AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
    
    			AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
    
    			AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
    
    		>;
    
    	};
    
    };
    
    
    
    &dss {
    
    	pinctrl-names = "default";
    
    	pinctrl-0 = <&main_oldi0_pins_default &main_dss0_pins_default>;
    
    };
    
    
    
    &dss_ports {
    
    	#address-cells = <1>;
    
    	#size-cells = <0>;
    
    
    
    	/* VP1: LVDS Output (OLDI TX 0) */
    
    	port@0 {
    
    		reg = <0>;
    
    		oldi_out0: endpoint {
    
    			remote-endpoint = <&lcd_in0>;
    
    		};
    
    	};
    
    
    
    	/* VP1: LVDS Output (OLDI TX 1) */
    
    	//port@2 {
    
    	//	reg = <2>;
    
    	//	oldi_out1: endpoint {
    
    	//		remote-endpoint = <&lcd_in1>;
    
    	//	};
    
    	//};
    
    };
    
    
    
    &main_i2c0 {
    
    	#address-cells = <1>;
    
    	#size-cells = <0>;
    
    
    
    	touchscreen@41 {
    
    		compatible = "ilitek,ili251x";
    
    		reg = <0x41>;
    
    		interrupt-parent = <&exp1>;
    
    		interrupts = <22 IRQ_TYPE_EDGE_FALLING>;
    
    	};
    
    };

    Kmsprint result:

    root@am62xx-evm:~# kmsprint
    Connector 0 (40) LVDS-1 (connected)
      Encoder 0 (39) LVDS
        Crtc 0 (38) 1280x800@59.99 71.100 1280/48/32/80/? 800/2/5/16/? 60 (59.99) 0x0 0x48
          Plane 0 (31) fb-id: 53 (crtcs: 0 1) 0,0 1280x800 -> 0,0 1280x800 (AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 XB15 XR24 XB24 RX24 BX24 XR30 XB30 YUYV UYVY NV12)
            FB 53 1280x800
    Connector 1 (50) HDMI-A-1 (disconnected)
      Encoder 1 (49) NONE
    

    Regards 

    Ismail