This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM625:DSS 未在 AM6254上初始化

Guru**** 1947850 points
Other Parts Discussed in Thread: SK-AM62B-P1, SK-LCD1, SK-AM62
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1406262/am625-dss-not-initializing-on-am6254

器件型号:AM625
主题中讨论的其他器件:SK-AM62SK-LCD1、SK-AM62B-P1

工具与软件:

我正在尝试在 AM6254ATCGGAALW 上使用双 OLDI 显示器。

我没有看到 tidss 在启动时初始化、如 SDK 文档第 3.2.2.6节中所述。 DSS 第3.2.2.6.6.1小节和我没有看到/dev/dri 目录出现。

我正在使用 TISDK v09.01.00.08 (2023年12月18日)。 我认为此版本支持 TIDSS 和双 OLDI、无需补丁、对吗?

我在编写代码时将以下文章作为参考:

AM625:OLDI 驱动程序或 DTS 示例

PROCESSOR-SDK-AM62X:如何在内核中启用 LVDS

我在启动期间确实看到了以下内核消息:

root@am62xx-evm:~# dmesg | grep dss
[   11.746589] platform 30200000.dss: deferred probe pending

 我在设备树或 kernel .config 中犯了什么错误?

以下是我的相关内核配置:

CONFIG_DRM_PANEL=y
CONFIG_DRM_PANEL_LVDS=y
CONFIG_DRM_PANEL_SIMPLE=y

CONFIG_DRM_BRIDGE=y
CONFIG_DRM_PANEL_BRIDGE=y
CONFIG_DRM_TIDSS=y
CONFIG_DRM_LEGACY=y
CONFIG_DRM_NOMODESET=y

CONFIG_FB_CMDLINE=y
CONFIG_FB_NOTIFY=y
CONFIG_FB=y
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_SYS_FILLRECT=m
CONFIG_FB_SYS_COPYAREA=m
CONFIG_FB_SYS_IMAGEBLIT=m
CONFIG_FB_SYS_FOPS=m
CONFIG_FB_DEFERRED_IO=y
CONFIG_FB_MODE_HELPERS=y
CONFIG_FB_SIMPLE=y

CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_BACKLIGHT_PWM=m
CONFIG_VIDEOMODE_HELPERS=y

以下是我的相关器件树代码部分:

#include <dt-bindings/soc/ti,sci_pm_domain.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>	
#include "k3-pinctrl.h"
#include <dt-bindings/net/ti-dp83867.h>
#include "k3-am625.dtsi"



dss_oldi_io_ctrl: dss-oldi-io-ctrl@8600 {
	compatible = "syscon";
	reg = <0x8600 0x200>;
};

	dss: dss@30200000 {
		compatible = "ti,am625-dss";
		pinctrl-names = "default";
		pinctrl-0 = <&main_oldi0_pins_default &main_oldi1_pins_default>;

		reg = <0x00 0x30200000 0x00 0x1000>, /* common */
		      <0x00 0x30201000 0x00 0x1000>, /* common1 */
		      <0x00 0x30202000 0x00 0x1000>, /* vidl1 */
		      <0x00 0x30206000 0x00 0x1000>, /* vid */
		      <0x00 0x30207000 0x00 0x1000>, /* ovr1 */
		      <0x00 0x30208000 0x00 0x1000>, /* ovr2 */
		      <0x00 0x3020a000 0x00 0x1000>, /* vp1: Used for OLDI */
		      <0x00 0x3020b000 0x00 0x1000>; /* vp2: Used as DPI Out */

		reg-names = "common", "common1",
			    "vidl1", "vid",
			    "ovr1", "ovr2",
			    "vp1", "vp2";

		ti,am65x-oldi-io-ctrl = <&dss_oldi_io_ctrl>;
            power-domains = <&k3_pds 67 TI_SCI_PD_EXCLUSIVE>;
            clocks =        <&k3_clks 67 1>,
                            <&k3_clks 216 1>,
                            <&k3_clks 67 2>;

		clock-names = "fck", "vp1", "vp2";

		interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;

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

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

	chosen {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		stdout-path = "serial2:115200n8";
		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";

		framebuffer0: framebuffer@0 {
			compatible = "simple-framebuffer";
            power-domains = <&k3_pds 67 TI_SCI_PD_EXCLUSIVE>;
            clocks =        <&k3_clks 67 1>,
                            <&k3_clks 216 1>,
                            <&k3_clks 67 2>;
			display = <&dss>;
			reg = <0x00 0xff700000 0x00 0x008ca000>;
			width = <1920>;
			height = <1200>;
			stride = <(1920 * 4)>;
			format = "x8r8g8b8";
		};
	};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果您基于 SDK 9.1、则不需要任何其他补丁、而且我们的9.x SDK 基线都支持 LVDS。 您能否共享 DTS 文件并完成引导日志? 此外、您是否已将内核配置与 TI 配置进行了比较? 在大多数情况下、递延探测器意味着 TIDSS 依赖于某些无法初始化的其他驱动程序/模块。  

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    通常、我不会看到客户修改 k3-am62-main.dtsi 文件或 在 DTSI 文件中添加 LVDS 支持。 此外、您在哪里定义了 LCD 时序? 我建议您参考以下内容作为参考: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am625-sk-microtips-mf101hie-panel.dtso?h=ti-linux-6.1.y 兼容字段在此处定义: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/panel/panel-simple.c?h=ti-linux-6.1.y#n2706

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan、您好!

    克鲁纳尔在本周剩余时间内不在办公室。 如果您在9月25日前未收到响应、可随意 ping 通该主题。

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    电源警告正常、您能在 LCD 上看到输出吗? kmsprint 的输出是什么?

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    LCD 上尚无输出。

    这就是 kmsprint 所说的。

    root@am62xx-EVM:~# kmsprint
    连接器0 (35) Unknown-1 (已连接)
     编码器0 (34)无
       CRTC 0 (33) 1920x1200@60.00 138.240 1920/0/0/0/? 1200/0/0/0/? 60 (60.00) 0x0 0x48
         平面0 (31) fb-id:36 (crtcs:0) 0 1920x1200 -> 0 1920x1200 (XR24 AR24 RG16 RG24)
           FB 36 1920x1200

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Krunal:

    我在 k3-am62-main.dtsi 中备份了 DSS 更改、

    创建了 k3-am625-sk-truly-2K51525.dtso to

    TI-PROCESSOR-SDK-LINUX-RT-am62xx-evm-09.01.00.08/board-support/ti-linux-kernel-6.1.46+gitAUTOINC+b871cde8c-gb871cde8c/arch/arm64/boot/dts/ti

    如下所示、并将这个覆盖图添加到了此目录中的 Makefile 来生成.dtbo。

    然后重新编译并重新刷新内核。


    然后在 U-boot 中停止处理器、

    我运行了以下命令

    => setenv name_overlays ti/k3-am625-sk-truly-2K51525.dtbo  
    => boot

    这将产生以下结果

    root@am62xx-evm:~# kmsprint                                                                                                                                                                                                                                   
    Connector 0 (35) Unknown-1 (connected)                                                                                                                                                                                                                        
      Encoder 0 (34) NONE                                                                                                                                                                                                                                         
        Crtc 0 (33) 1212x412@60.00 29.960 1212/0/0/0/? 412/0/0/0/? 60 (60.00) 0x0 0x48                                                                                                                                                                            
          Plane 0 (31) fb-id: 36 (crtcs: 0) 0,0 1212x412 -> 0,0 1212x412 (XR24 AR24 RG16 RG24)                                                                                                                                                                    
            FB 36 1212x412
            
    root@am62xx-evm:~# dmesg | grep drm
    [    0.950284] [drm] Initialized simpledrm 1.0.0 20200625 for ff700000.framebuffer on minor 0
    [    0.985270] simple-framebuffer ff700000.framebuffer: [drm] fb0: simpledrmdrmfb frame buffer device
    
    root@am62xx-evm:~# dmesg | grep dss
    [   11.745649] platform 30200000.dss: deferred probe pending
    
    root@am62xx-evm:~# kmstest.kms++
    Connector 0/@35: Unknown-1
      Crtc 0/@33: 1212x412@60.00 29.960 1212/0/0/0/? 412/0/0/0/? 60 (60.00) 0x0 0x48
      Plane 0/@31: 0,0-1212x412
        Fb 39 1212x412-XR24
    Atomic commit failed when disabling: -22
    

    ---------------

    // 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 = "truly,2K51525";
    		/*
    		* 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>;
    	};
    };
    */

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan、您好。

    克鲁纳尔在本周的剩余时间内不在办公室。 请在下周回复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    运行 kmstest 后、您是否在时钟和数据线上看到任何活动?

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    另外、我/dev/dri/renderD128在 microtips+am62 EVK 演示中看不清。

    运行 kmstest 时、LVDS 数据和时钟是否需要该接口?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    renderD128适用于 GPU、无需启用基本 LVDS。 您可以读取寄存器0x3020A160的值吗?

    此外、如果 AM62 EVK 具有功能、请尝试使用您的自定义更改修改微孔覆盖层。 LVDS 面板没有 EEPROM、因此您实际上不需要连接到物理面板。 只需  使用自定义值修改时序参数、除了兼容字段外、两个设置之间的覆盖条目应相同。 这将帮助我们确定问题是否与您的配置文件或覆盖文件有关。

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Krunal:

    这是寄存器的值。 这是什么寄存器?它的值是什么意思?

    root@am62xx-evm:/usr/bin# devmem2 0x3020A160
    /dev/mem opened.
    Memory mapped at address 0xffffbb401000.
    Read at address  0x3020A160 (0xffffbb401160): 0x00000000
    
    root@am62xx-evm:/bin# k3conf read 0x3020A160 64                                                                                │
    |--------------------------------------------------------------------------------|                                             │
    | VERSION INFO                                                                   |                                             │
    |--------------------------------------------------------------------------------|                                             │
    | K3CONF | (version 0.3-nogit built Thu Sep 19 20:59:57 UTC 2024)                |                                             │
    | SoC    | AM62X SR1.0                                                           |                                             │
    | SYSFW  | ABI: 3.1 (firmware version 0x0008 '8.6.4--v08.06.04 (Chill Capybar)') |                                             │
    |--------------------------------------------------------------------------------|                                             │
                                                                                                                                   │
    Value at addr 0x3020a160 = 0x68f0490000000000              

    我在从 uboot 加载覆盖层时遇到问题、所以我要采用将所有内容添加到 k3-am62x-sk-common.dtsi 文件中的方法... 我曾尝试从 k3-am62x-sk-common.dtsi 中调用微提示面板、仅在 panel-simple.c.中的 microtips_mf_101hiebcaf0_mode 和 microtips_mf_101hiebcaf0结构中添加我的自定义面板参数。 会产生相同的行为:

    root@am62xx-evm:~# kmstest.kms++                                                                                               │
    Connector 0/@35: Unknown-1                                                                                                     │
      Crtc 0/@33: 1212x156@60.00 11.344 1212/0/0/0/? 156/0/0/0/? 60 (60.00) 0x0 0x48                                               │
      Plane 0/@31: 0,0-1212x156                                                                                                    │
        Fb 39 1212x156-XR24                                                                                                        │
    Atomic commit failed when disabling: -22  

    LVDS 数据和时钟上仍然没有显示。 我移除了显示模块、以确保在这些信号击中显示控制器之前能够看到这些信号。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    本质上、我曾让您读取 LVDS 配置寄存器。 如果转到 TRM、请查找 DSS_OLDI_CFG 寄存器、根据您的值、LVDS 甚至似乎没有被初始化。 应设置位0、但位0表示已禁用。  

    以下是我推荐的内容:

    步骤1:使用 TI EVM、SK-LCD1和 TI SDK 以确保 LVDS 导通。
    步骤2:卸下 LVDS。 使用您的自定义值修改 TI SDK。 完成该步骤后、确保生成 LVDS 时钟。
    第3步:采用 TI SDK、删除覆盖文件并在  k3-am62x-sk-common.dtsi 中添加 DSS 支持。 完成该步骤后、确保生成 LVDS 时钟。

    应在 TI EVM 和 TI SDK 上执行上述所有步骤。 上述操作成功后、我们可以查看移植到您的设置的后续步骤。  

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Krunal:

    在步骤2中、您是否指的是我放入 panel-simple.c 中的参数? 如果是这样、我不知道我会怎么做、因为我没有这个"默认".Wix.xz 映像中找到的内核配置(/boot/Image-6.1.46-rt13-gb871cdee8c)。

    您能否提供此.config?

     我尝试了类似的方法、即在 SD 中的 uEnv.txt 中指定使用我的内核映像(之前显示的是.config)。 所有其他固件组件(uBoot、DT、FS)保持不变。 已应用 Microtips 覆层。 结果如下

    root@am62xx-evm:~# kmsprint
    Connector 0 (35) Unknown-1 (connected)
      Encoder 0 (34) NONE
        Crtc 0 (33) 1920x1200@60.00 138.240 1920/0/0/0/? 1200/0/0/0/? 60 (60.00) 0x0 0x48
          Plane 0 (31) fb-id: 37 (crtcs: 0) 0,0 1920x1200 -> 0,0 1920x1200 (XR24 AR24 RG16 RG24)
            FB 37 1920x1200
    root@am62xx-evm:~# devmem2 0x3020A160 
    /dev/mem opened.
    Memory mapped at address 0xffff91642000.
    Read at address  0x3020A160 (0xffff91642160): 0x0000198D
    root@am62xx-evm:~# k3conf read 0x3020A160 64
    |------------------------------------------------------------------------------|
    | VERSION INFO                                                                 |
    |------------------------------------------------------------------------------|
    | K3CONF | (version 0.3-nogit built Fri Oct 06 12:20:16 UTC 2023)              |
    | SoC    | AM62X SR1.0                                                         |
    | SYSFW  | ABI: 3.1 (firmware version 0x0009 '9.1.8--v09.01.08 (Kool Koala))') |
    |------------------------------------------------------------------------------|
    
    Value at addr 0x3020a160 = 0x68f049000000198d

    kmstest 输出和以前一样、我仍然看到
    [   11.755822] platform 30200000.dss: deferred probe pending

    但是、这略有不同。。。

    root@am62xx-evm:~# dmesg | grep drm
    [    0.838352] WARNING: CPU: 3 PID: 1 at drivers/gpu/drm/panel/panel-simple.c:621 0xffff80000857a844
    [    1.018445] [drm] Initialized simpledrm 1.0.0 20200625 for ff700000.framebuffer on minor 0
    [    1.129630] simple-framebuffer ff700000.framebuffer: [drm] fb0: simpledrmdrmfb frame buffer device
    [    2.695901] systemd[1]: Starting Load Kernel Module drm...

    在尝试第3步之前、我想知道为什么使用已知的良好 DT、BL 和 FS 时会出现与我在定制电路板上看到的相同的行为。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否已安装 TI SDK? 如果是、以下是生成配置并修改面板 simple 的方法:

    ~转到内核目录:cd /ti-processor-sdk-linux-am62pxx-evm-10.00.07.04/board-support/ti-linux-kernel-6.6.6.32+git-ti
    2.导出变量:
    a. export ARCH=ARM64
    b. export cross_compile=/home/toolchains/arm-gnu-toolchain-13.3.rel1-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
    3.运行命令: make defconfig ti_arm64_prune.config (该步骤将生成.conf 文件)
    4.修改面板简单文件:搜索结构 microtips_mf_101hiebcaf0_c_mode 并修改计时值。 我们的默认 SDK 将从 microtips 结构中读取时序值。  
    5.编译一切: make -j 图像 dtbs 模块
    6.将文件复制到引导介质:
    sudo cp ./arch/arm64/boot/Image /media/rootfs/boot
    sudo cp .dtb/*.dtb*/arch/arm64/boot/dts/ti /media/rootfs/boot/dtb/ti
    sudo -E env "path=$path" install_MOD_path=/media/rootfs make modules_install

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外、寄存器显示已启用 LVDS、我认为在您的情况下它全部为0 (意味着关闭)。 你是否尝试过探测时钟?

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用 defconfig ti_arm64_prune.config 选项构建了内核、并使用 microtips 演示板在 SK 上运行了该内核。 已经初始化了 DSS、但没有/dev/dri/. 我使用最佳判断将一些 DRM 选项添加到此.config 中、然后看到了/dev/dri/card0、但没有 Card1或 RenderD128。

    KMSprint 未找到 LVDS 连接器、KMStest 再次失败(如之前所示)、大概是因为 DSS 取消了探头待处理错误(如之前所示)。

    我没有在显示演示 SK 上探测时钟、因为我们谈到的状态寄存器中的值看起来正确、并且在微提示显示屏上出现了一些 TI 评估仪表板屏幕。

    在默认 k3-am62x-sk-common.dtsi 中的以下引脚定义中、GPMC0定义是什么、如果我没有这些定义会发生什么情况?

    	main_dss0_pins_default: main-dss0-pins-default {
    		pinctrl-single,pins = <
    			AM62X_IOPAD(0x0100, PIN_OUTPUT, 0) /* (AC25) VOUT0_VSYNC */
    			AM62X_IOPAD(0x00f8, PIN_OUTPUT, 0) /* (AB24) VOUT0_HSYNC */
    			AM62X_IOPAD(0x0104, PIN_OUTPUT, 0) /* (AC24) VOUT0_PCLK */
    			AM62X_IOPAD(0x00fc, PIN_OUTPUT, 0) /* (Y20) VOUT0_DE */
    			AM62X_IOPAD(0x00b8, PIN_OUTPUT, 0) /* (U22) VOUT0_DATA0 */
    			AM62X_IOPAD(0x00bc, PIN_OUTPUT, 0) /* (V24) VOUT0_DATA1 */
    			AM62X_IOPAD(0x00c0, PIN_OUTPUT, 0) /* (W25) VOUT0_DATA2 */
    			AM62X_IOPAD(0x00c4, PIN_OUTPUT, 0) /* (W24) VOUT0_DATA3 */
    			AM62X_IOPAD(0x00c8, PIN_OUTPUT, 0) /* (Y25) VOUT0_DATA4 */
    			AM62X_IOPAD(0x00cc, PIN_OUTPUT, 0) /* (Y24) VOUT0_DATA5 */
    			AM62X_IOPAD(0x00d0, PIN_OUTPUT, 0) /* (Y23) VOUT0_DATA6 */
    			AM62X_IOPAD(0x00d4, PIN_OUTPUT, 0) /* (AA25) VOUT0_DATA7 */
    			AM62X_IOPAD(0x00d8, PIN_OUTPUT, 0) /* (V21) VOUT0_DATA8 */
    			AM62X_IOPAD(0x00dc, PIN_OUTPUT, 0) /* (W21) VOUT0_DATA9 */
    			AM62X_IOPAD(0x00e0, PIN_OUTPUT, 0) /* (V20) VOUT0_DATA10 */
    			AM62X_IOPAD(0x00e4, PIN_OUTPUT, 0) /* (AA23) VOUT0_DATA11 */
    			AM62X_IOPAD(0x00e8, PIN_OUTPUT, 0) /* (AB25) VOUT0_DATA12 */
    			AM62X_IOPAD(0x00ec, PIN_OUTPUT, 0) /* (AA24) VOUT0_DATA13 */
    			AM62X_IOPAD(0x00f0, PIN_OUTPUT, 0) /* (Y22) VOUT0_DATA14 */
    			AM62X_IOPAD(0x00f4, PIN_OUTPUT, 0) /* (AA21) VOUT0_DATA15 */
    			AM62X_IOPAD(0x005c, PIN_OUTPUT, 1) /* (R24) GPMC0_AD8.VOUT0_DATA16 */
    			AM62X_IOPAD(0x0060, PIN_OUTPUT, 1) /* (R25) GPMC0_AD9.VOUT0_DATA17 */
    			AM62X_IOPAD(0x0064, PIN_OUTPUT, 1) /* (T25) GPMC0_AD10.VOUT0_DATA18 */
    			AM62X_IOPAD(0x0068, PIN_OUTPUT, 1) /* (R21) GPMC0_AD11.VOUT0_DATA19 */
    			AM62X_IOPAD(0x006c, PIN_OUTPUT, 1) /* (T22) GPMC0_AD12.VOUT0_DATA20 */
    			AM62X_IOPAD(0x0070, PIN_OUTPUT, 1) /* (T24) GPMC0_AD13.VOUT0_DATA21 */
    			AM62X_IOPAD(0x0074, PIN_OUTPUT, 1) /* (U25) GPMC0_AD14.VOUT0_DATA22 */
    			AM62X_IOPAD(0x0078, PIN_OUTPUT, 1) /* (U24) GPMC0_AD15.VOUT0_DATA23 */
    		>;
    	};

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    只是为了确认、您现在看到了/dev/dri/card0、并且屏幕上可以看到一些图像吗? 就/dev/dri/card1/renderD128而言、它适用于 GPU、并且很有可能 GPU 模块未加载。 硬件、在调试之前、我需要确认 DSS 可以正常工作。  

    pinctrl 用于 DPI 信号和 OLDI/LVDS、默认启用这些引脚、因此您可以删除上述代码片段。

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如前所述、在实现您的建议时、DSS 会在 SK-am62上初始化(寄存器读取正确、不会探测时钟)、但不会在我们的定制板上初始化(寄存器读取为0、不存在时钟)。

    您是说我可以从器件树文件中删除所有 LVDS 引脚定义(main_dss0_pins_default)吗? 那么、它们将在哪里定义?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    再确认一下、如果您进行 LVDS DT 更改并在 TI SDK 上申请、那么一切都有效。 但是、如果您进行相同的 LVDS DT 更改并应用于 自定义 BSP、则不会生成信号或 LVDS。 这是对我们到目前为止的测试的正确总结吗? 如果是、我假设缺少某些内核配置。

    关于 LVDS 引脚定义、您不需要对其进行定义、作为我们新 SDK 的一部分、我们实际上从 DTS 中删除了 LVDS 引脚定义。

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan、您好。

    您能提供以下信息吗?

    1.如何生成内核配置? 此外、您能与我分享最新的内核配置吗?

    2.是否可以共享内核目录的 git 状态日志? 我想看看 您已将 DTS 从"简易版"修改为"简易版"的所有内容。

    3.另外,请分享您所有修改过的 DTS 文件,以便查看您的所有更改。 如果您无法在公共论坛上共享、请随时将文件发送给 Frank、他可以转发给我。

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您说的10月29日@11:07中的总结用于说明 DT、部分正确。

    关于 DT:

    如果我进行 LVDS DT 更改并在 TI SDK 上应用、请使用这些更改构建 k3-am625-sk.dtb、然后在我的 SK-AM62B-P1上的/boot/dtb/ti 上使用该 DTB 作为 SD 卡上的替代品、我在引导时获得 GRUB 而不是 U-Boot、然后内核中出现引导故障。

    但是、如果我进行相同的 LVDS DT 更改并应用于自定义 BSP、则不会生成信号或 LVDS。

    关于内核:

    我在10/9@9:32和10/22@3:30中实施了你的建议,并描述了我在以前的答复中看到的行为。

    请参阅我发送给 Frank 的电子邮件、其中包含构建流程的日志、完整来源和说明。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan、您好。

    谢谢! 我正在等待 Frank 分享您的 DT。 通常、如果您看到 GRUB、则表示您的覆盖不正确。 我假设 DT CONFIG 仍然有一些错误、但我们将审查并提供反馈。

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan、您好。

    对于延迟响应深表歉意、并感谢您将您的文件分享给 Frank。 下面是我使用您的共享文件进行测试的摘要:

    内核配置 mod:

    通常、要启用 LVDS、您只需以下配置:

    CONFIG_DRM=y
    CONFIG_DRM_TIDSS=y
    CONFIG_DRM_PANEL_SIMPLE=y

    我认为您不需要定义以下内容、并且在我的设置中未定义这些内容:

    CONFIG_DRM_SIMPLEDRM
    CONFIG_DRM_LVDS_CODEC

    在我的设置中、我匹配了您的配置、并将配置从"模块"修改为"内置":

    CONFIG_DRM_TIDSS
    CONFIG_DRM_SIMPLE_BRIDGE
    CONFIG_DRM_DISPLAY_CONNECTOR
    CONFIG_DRM_PANEL_LVDS
    CONFIG_DRM_PANEL_SIMPLE
    CONFIG_DRM
    CONFIG_DRM_KMS_HELPER
    CONFIG_DRM_GEM_DMA_HELPER

    随附了完整配置、供您参考。 另外、尝试使用我所使用的编译器来确保100%兼容性。  

    e2e.ti.com/.../lvds_5F00_config.txt

    内核 dts mod:

    为了将覆盖文件与图片隔离、我移动了 k3-am62x-sk-common.dtsi 文件中的 LVDS 配置。 我已附上我修改的 SDK9.01文件和要注意的重要事项:
    1、添加显示节点。 您的节点位于错误的位置、它不断给我带来探测错误。 请查看我的位置并进行相应更新。
    2.没有 pinmux 需要,如果你看我的文件我删除 pin muxing.
    3.对于当前帖子,我无法添加被重命名为 txt 文件的 dtsi 文件。

    e2e.ti.com/.../6371.k3_2D00_am62x_2D00_sk_2D00_common.txt

    内核面板驱动程序 mod:

    我相信您的小组简单有错误的计时信息。 使用您的时序、我无法获得 LVDS 进行枚举、并且不断出现以下错误:  
    找不到任何 CRTC 或尺寸

    由于我没有您的数据表、因此我使用以下 Linux 命令生成时序:

    cvt 2424 156 60
    # 2424x156 57.35 Hz (CVT) hsync: 9.86 kHz; pclk: 29.75 MHz
    Modeline "2424x156_60.00"   29.75  2424 2480 2720 3016  156 159 169 172 -hsync +vsync
    

    通过上述时序、我能够使显示进行初始化。 此外、 您还拥有两个 Truly_2K51525_mode (Truly_2K51525_mode 和 Truly_2K51624模式)。 我最后删除了624条目、因为它没有被使用。 这是我的 panel-simple.c 文件。

    e2e.ti.com/.../6371.panel_2D00_simple.c

    内核输出摘要:

    在配置、dts 更改并简化面板后、以下是 Linux 输出:

    root@am62xx-evm:~# kmsprint
    Connector 0 (40) LVDS-1 (connected)
      Encoder 0 (39) LVDS
        Crtc 0 (38) 2424x156@56.29 29.200 2424/56/240/296/? 156/3/10/3/? 56 (56.29) 0x0 0x48
          Plane 0 (31) fb-id: 48 (crtcs: 0) 0,0 2424x156 -> 0,0 2424x156 (AR12 AB12 RA12 RG16 BG16 AR15 AB15 AR24 AB24 RA24 BA24 RG24 BG24 AR30 AB30 XR12 XB12 RX12 XR15 )
            FB 48 2424x156
    

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Krunal:

    感谢您发送编修。

    根据您对9/25:23次@的建议、在 k3-am62x-sk-common.dtsi 中、我当时将显示节点放置在所选节点中、但显示节点似乎需要放置在其外部。

    然后、根据下面&DSS 中同一文件中11/8@10:23的建议、我注释掉了对 k3-am625-sk.dts 中 OLDI 引脚定义的引用。

    通过这些 DT 更改、我将转至 panel-simple.c、然后测试使用 CVT 命令生成的时序参数。

    然后、我在 SDK v9.1.0.8中使用编译器编译了 DT 和 Kernel。

    通过测试这两个 DT 更改和面板简单更改、我确认我现在在 DSS 状态寄存器中看到了正确的值、我看到了正确的 kmsprint 和 kmstest 终端输出、我在示波器上看到 LVDS 时钟!!

    但是、kmstest 不会在 LCD 上生成任何显示数据...

    然后、我首先尝试重新测试我的旧时序参数、 然后我看到以下几点证实了您的测试:

    root@am62xx-evm:~# kmsprint                                                                                                                                                                                                                                   
    Connector 0 (40) LVDS-1 (connected)                                                                                                                                                                                                                           
      Encoder 0 (39) LVDS                                                                                                                                                                                                                                         
    root@am62xx-evm:~# kmstest.kms++                                                                                                                                                                                                                              
    Mode not valid for LVDS-1
    '

    我根据显示供应商提供的下表给出了这些时序参数。

    我缺少什么会导致什么 找不到任何 CRTC 或尺寸 错误?

    -------

    参数 符号 人员
    最小 推荐 最大值
    CLK 频率 tCLK - 29.2. 45.0 MHz
    水平显示区 THD 2424. tCLK
    水平脉冲宽度 tHPW   2. 20. tCLK
    水平后沿 tHBP   30. 100 tCLK
    水平前沿 tHFP   30. 100 tCLK
    水平周期 tH   2484. 2624. tCLK
    垂直显示区 TVD 156. tH
    垂直脉冲宽度 tVPW   2. 20. tH
    垂直后沿 tVBP   20. 65 tH
    垂直前沿 tVFP   20. 65 tH
    垂直周期 电视   196 286. tH
    帧速率   60. 60. Hz
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    只是为了确认,如果你使用我的 CVT 生成的时间,然后你看不到错误" 找不到任何 CRTC 或尺寸  错误"? 我只在 Panel-Simple 时序错误时看到了错误。

    下图有助于生成面板简单计时:

    此致、
    Krunal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    正确、对于 CVT 生成的时序、我没有看到该错误、我看到的 Linux 输出与11/8@10:23上显示的相同。 不过、在这些时序参数中、我看不到显示屏上显示任何内容。 我已验证显示屏未复位且背光灯已打开。 我看到14.5MHz 的 LVDS 时钟。

    我使用了您展示的时序图来设置我的原始面板简单的时序参数、但这些参数导致了不正确的 kmprint 和 kmstest 输出。

    下面显示的是显示器供应商提供的时序图。
    根据我可以知道的、使用从 CVT 命令获取的 HSYNC=240[tCLK]和 VSYNC=10[tCLK]将导致水平周期超过 RETRY 指定的最大值2624。

    对于29.2 MHz 像素时钟和 RGB888_1X7X4_SPWG 格式、14.5MHz LVDS 时钟声音是否正确? 我可以将此时钟的值设置在某个位置还是在驱动器中进行计算?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我建议您与 LCD 供应商一起复查时序。 原因是、我们的 SK-LCD 具有类似的 行为、我们的供应商要求我们对 PCLK 的值和水平值进行2倍的编程。 以下是数据表和 Linux 计时、供您参考:

    数据表: https://www.mouser.com/datasheet/2/271/13_101HIEB0HF0_S_V1_0_20200507-1902010.pdf
    Linux 编程: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/gpu/drm/panel/panel-simple.c?h=ti-linux-6.6.y#n2830 

    由于以下数学运算、14.5MHz 的输出听起来是正确的:如果时钟是29MHz、则 OLDI 符号速率为 29*28/8。 此外、 该 时钟包括4个 LVDS 子符号高电平时间和3个 LVDS 子符号低电平时间。 PCLK 数学为29*28/8*7= 14.5 MHz。  

    此致、
    Krunal