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.

[参考译文] AM62P-Q1:DPI 输出 BT656

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1474864/am62p-q1-dpi-output-bt656

器件型号:AM62P-Q1
主题中讨论的其他器件:SK-AM62P-LPAM62P

工具/软件:

我们想在 DPI 模块的板中使用 BT656。  

如何启用 DPI 输出 BT656?

DPI 输出 BT656?是否有任何指导文档和测试说明

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

    尊敬的客户:

     您能参考以下代码和反馈吗?

    静态 void dispc_vp_init (struct dispc_device *dispc)

    unsigned int i

    dev_dbg (dispc->dev、"%s()\n"__func__);

    /*为所有 VP 启用伽玛阴影位字段*/

    对于(i = 0i < dispc->feat->num_Vps; i++){

    VP_REG_FLD_MOD (dispc、I、DISPC_VP_CONFIG1、2、 2);

    /*在 VP 输出上选择 BT-656格式*/

    VP_REG_FLD_MOD (dispc、I、DISPC_VP_CONFIG120 20);

    }

    }

    谢谢。

    Linjun

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

    您好、

    我们可以要求我们的开发团队查看上述内容、但我们的 EVM 不支持 BT656、并且我们没有任何展示如何启用 BT656的软件驱动程序或文档。

    此致、
    Krunal

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

    硬件设计 SOC 为 AM62P52、使用的 DPI 引脚为  VOUT0_D2~D9 (AA23/Y23/AB23/AD23/AC23/AE23/AE22/AC22)。

    我有 2个问题需要您确认:

    1.   我是否应该在 DTS 文件中使用 DSS0或 DSS1?
    2.    我看到示例文件 "k3-am62p5-sk-DSI-RpI-7inch-panel.dtso" DSI 配置是:
      &dss1_ports {
      	#address-cells = <1>;
      	#size-cells = <0>;
      
      	/* DSS1-VP1: DSI Output */
      	port@1 {
      		reg = <1>;
      
      		dss1_dpi1_out: endpoint {
      			remote-endpoint = <&dsi0_in>;
      		};
      	};
      };
         那么 我配置 dpi 输出使用 DSS1-VP2参数是正确的吗?
      &dss1 {
      	status = "okay";
      	
      	/* DSS1-VP2: DPI Output */
      	port@1 {
      		reg = <1>;
      
      		dpi_out: endpoint {
      			remote-endpoint = <&panel_bridge_in>;
      		};
      	};
      };
       
         
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    您可以使用 DSS0或 DSS1来获得 DPI 输出。 我们建议使用 DSS0、因为我们已经有一个使用 DSS0的 DPI DTS 条目。

    此致、
    Krunal

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

    你(们)好  

    我使用的 DTS 是 DSS0 DPI 输出

    panel0 {
    		compatible = "raspberrypi,7inch-dsi";
    		port {
    			panel_in: endpoint {
    				remote-endpoint = <&panel_bridge_out>;
    			};
    		};
    };
    
    bridge@40 {
    		compatible = "adi,max96705";
    		reg = <0x40>;
    		status = "okay";
    
    		ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			port@0 {
    				reg = <0>;
    
    				panel_bridge_in: endpoint {
    					remote-endpoint = <&dss0_dpi1_out>;
    				};
    			};
    
    			port@1 {
    				reg = <1>;
    				panel_bridge_out: endpoint {
    					remote-endpoint = <&panel_in>;
    				};
    			};
    		};
    
    	};
    
    &dss0_ports {
    	/* DSS0-VP2: DPI/HDMI Output */
    	hdmi0_dss: port@1 {
    		reg = <1>;
    
    		dss0_dpi1_out: endpoint {
    			remote-endpoint = <&panel_bridge_in>;
    		};
    	};
    };

     kmstest 为 printf

    root@longhorn:/app# kmstest
    Connector 0/@40: DPI-1
      Crtc 0/@38: 1920x1080@25.00 56.992 1920/48/32/80/- 1080/3/7/6/- 25 (25.00) 0xa 0x48
      Plane 0/@31: 0,0-1920x1080
        Fb 49 1920x1080-XR24
    Atomic test failed: -22

    我执行  devmem2命令、但失败并执行 printf  

    root@longhorn:/app# devmem2 0x3020b004
    /dev/mem opened.
    Memory mapped at address 0xffff9aaa9000.
    Bus error (core dumped)
    root@longhorn:/app#
    
    。 使用面板时如何使用寄存器?

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

    您好、

    我无法理解您的设置。 在 DTS 文件中、配置为将 DSI 面板 (应与 DSS1 VP2配合使用)与 DPI 输出(DSS0 VP2)配合使用。  

    请详细分享有关您的设置、您尝试实现的目标、您打算使用哪些面板、您选择的 DSS 和 VP 以及如何将寄存器与 devmem2一起使用的详细信息。

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

    您好、

    我解决了问题  devmem2命令失败。

    我还有一个问题需要你的帮助来解决。 如何将 YUV 数据输入到 DSS 中? 您能否向我提供一个示例?

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

    您好、

    我们的 EVM 不支持 BT656、并且我们没有任何说明如何启用 BT656的软件驱动程序或文档。

    如前所述、目前我们不支持 YUV 数据格式。

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

    Wangpg,

      您能不能使用 GEL 转储 DSS 模块、我们将支持您 实现 BT656输出。 谢谢。

        /cfs-file/__key/communityserver-discussions-components-files/791/DSI.tar.xz

    Linjun

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

    问题发生在这里、

      [ 0.205089] tidss 30220000.dss:[DRM]找不到兼容格式
      [0.205100] tidss 30220000.dss:[DRM]找不到任何 CRTC 或大小

      

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    drm_fb_helper_find_color_mode_format()
    {
        bpp = depth = color_mode = 16;
        return drm_fb_helper_find_format(fb_helper, formats, format_count, bpp, depth);
    }
    这里没有问题、我看到 DSI demsg 也具有此日志、但显示正常。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    同步状态。

    20250421中提供的初始修补程序。

    e2e.ti.com/.../AM62P_5F00_DPI_5F00_BT656_5F00_patch_5F00_20250421.7z

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

    将来自 LH 团队的验证结果与初始补丁同步。

    增补程序合并后、kmsprint 具有以下异常日志:

    因此、客户检查了代码、发现 drivers/GPU/DRM/panel/panel-simple.c 与所需内容存在一些差异。

    客户希望请求 TI 支持进行检查。 再发送一个问题。

    1.再次检查 panel-simple.c 中的 bt656_480p 参数。

    2.kmsprint 命令打印:编码器0 (39)无与日志不同、如何解决此错误?

    非常感谢!

    Yong

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

    查看您的日志、您似乎已对修补程序进行了修改。

    1.请在不对修补程序进行任何更改的情况下尝试、然后分享结果。

    2.请列出您对当前结果补丁程序所做的所有更改。

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

    亲爱的彭奇。

    请您帮助说明您的身份吗?  

    您能否遵循 Divyansh 的最后一篇文章并提供反馈?

    非常感谢!

    Yong

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

    你(们)好

      我使用的 SDK 版本是: 10.01.10.04; Linux Kerner 版本:TI-linux-kernel-6.6.58+git-ti。  

      1.我仅更改 硬件的 DDR 参数的源代码。

      2.我已经合并了 bt656补丁,并看到文件:   bt656_patch-20250428.tar.gz

     但 kmsprint 没有面板参数:

    e2e.ti.com/.../bt656_5F00_patch_2D00_20250428.tar.gz

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

    尊敬的 Yong Zhang Divyansh 

     我将 bt656合并到 EVM 板(SK-AM62P-LP)的 ti-processor-sdk-linux-am62xx-evm-10.01.10.04-Linux-x86-Install.bin。

     我只修改内核(ti-linux-kernel-6.6.58+git-ti)源代码:

       

      修改源代码见: bt656_patch-20250429.tar.gz

       e2e.ti.com/.../bt656_5F00_patch_2D00_20250429.tar.gz

      但 EVM 板通电,我 看到 kmsprint 错误:(如下面的 )所示

        

       并且请参阅附件以了解  bt656_patch-20250429.tar.gz 中的完整启动日志。

       请再次确认补丁是否完整且正确!!!

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

    您好、
    我看到你发布了2个结果,在第一个 kmsprint 没有抛出一个错误,而在第二个它确实。
    您在两个版本之间有何变化? 请提供 git diff。

    我看到您没有完全应用补丁!!  
    例如、对于 0003-hack-drm-tidss-Add-Bt656-progressive-mode-support.patch 中给出的修补程序、

    tidss_disp.c 文件在 dispc_vp_enable ()函数中显示以下内容:

    vfp = mode->vsync_start - mode->vdisplay;
    	vsw = mode->vsync_end - mode->vsync_start;
    	vbp = mode->vtotal - mode->vsync_end;
    
    	dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_H,
    		       FLD_VAL(hsw - 1, 7, 0) |
    		       FLD_VAL(hfp - 1, 19, 8) |
    		       FLD_VAL(hbp - 1, 31, 20));
    	if (dispc->tidss->bt656_enabled) {
    		dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_H,
    				FLD_VAL(((hsw & 0xFF) - 1), 7, 0) |
    				FLD_VAL(hfp - 1, 19, 8) |
    				FLD_VAL(hbp - 1, 31, 20));
    	} else {
    		dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_H,
    				FLD_VAL(hsw - 1, 7, 0) |
    				FLD_VAL(hfp - 1, 19, 8) |
    				FLD_VAL(hbp - 1, 31, 20));
    	}
    	dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_V,
    		       FLD_VAL(vsw - 1, 7, 0) |
    		       FLD_VAL(vfp, 19, 8) |
    		       FLD_VAL(vbp, 31, 20));
    	if (dispc->tidss->bt656_enabled) {
    		dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_V,
    				FLD_VAL(((hsw) >> 8), 3, 0) |
    				FLD_VAL(vfp, 19, 8) |
    				FLD_VAL(vbp, 31, 20));
    	} else {
    		dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_V,
    				FLD_VAL(vsw - 1, 7, 0) |
    				FLD_VAL(vfp, 19, 8) |
    				FLD_VAL(vbp, 31, 20));
    	}
    	ivs = !!(mode->flags & DRM_MODE_FLAG_NVSYNC);
    
    	ihs = !!(mode->flags & DRM_MODE_FLAG_NHSYNC);
    

    而该补丁提到:

    @@ -1350,15 +1351,29 @@ void dispc_vp_enable(struct dispc_device *dispc, u32 hw_videoport,
     	vsw = mode->vsync_end - mode->vsync_start;
     	vbp = mode->vtotal - mode->vsync_end;
     
    -	dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_H,
    -		       FLD_VAL(hsw - 1, 7, 0) |
    -		       FLD_VAL(hfp - 1, 19, 8) |
    -		       FLD_VAL(hbp - 1, 31, 20));
    +	if (dispc->tidss->bt656_enabled) {
    +		dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_H,
    +				FLD_VAL(((hsw & 0xFF) - 1), 7, 0) |
    +				FLD_VAL(hfp - 1, 19, 8) |
    +				FLD_VAL(hbp - 1, 31, 20));
    +	} else {
    +		dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_H,
    +				FLD_VAL(hsw - 1, 7, 0) |
    +				FLD_VAL(hfp - 1, 19, 8) |
    +				FLD_VAL(hbp - 1, 31, 20));
    +	}
     
    -	dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_V,
    -		       FLD_VAL(vsw - 1, 7, 0) |
    -		       FLD_VAL(vfp, 19, 8) |
    -		       FLD_VAL(vbp, 31, 20));
    +	if (dispc->tidss->bt656_enabled) {
    +		dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_V,
    +				FLD_VAL(((hsw) >> 8), 3, 0) |
    +				FLD_VAL(vfp, 19, 8) |
    +				FLD_VAL(vbp, 31, 20));
    +	} else {
    +		dispc_vp_write(dispc, hw_videoport, DISPC_VP_TIMING_V,
    +				FLD_VAL(vsw - 1, 7, 0) |
    +				FLD_VAL(vfp, 19, 8) |
    +				FLD_VAL(vbp, 31, 20));
    +	}
     
     	ivs = !!(mode->flags & DRM_MODE_FLAG_NVSYNC);
     

    似乎处理了行添加、但行减法没有。 在其他一些地方也发现了这种情况。
    请准确地应用补丁。 该补丁已经过测试、可以在我们这边正确地生成 kmprint 输出

    如需进一步回复、请使用 git diff{file}>{name}.patch、然后共享这些补丁文件。  

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

    你好 

      很抱歉,我检查了源代码,然后执行 git format-patch (0001-merge-ti-Bt656-patch.patch )。  

      但 kmsprint 错误信息是相同的(0001-merge-ti-Bt656-patch.log)。

      e2e.ti.com/.../0001_2D00_merge_2D00_ti_2D00_bt656_2D00_patch.tar.gz

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

    你好 

     我使用 git am 合并补丁、0001和0002成功、但0003是错误。

       

     有这个错误吗?

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

    你好 

      kmsprint 信息正常。 谢谢。

      有一个可以在 DSI 接口、上调用的 Linux 内核 API

        of_find_mipi_DSI_HOST_BY_NODE

        MIPI_DSI_DEVICE_REGISTER_FULL

        MIPI_DSI_Attach

        

      但在 DPI 接口上未找到相同的 API?  接下来我应该怎么做?

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

    探测时您是否在输出端看不到任何信号?
    这些是 DSI 特定的 API、为什么此处需要这些 API?

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

    同步此问题以使每个人进入同一页。

    亲爱的 Divyansh。

    感谢 Linjun 的帮助与鹏起测试,下面是来自客户关于 BT656支持状态的最新结果, 输出分辨率为720*480。

    • AM62P BT656输出无法通过第三方工具"Duxin Simulator"解码、客户已  将参数移植到 OEM 的板上(AM62P 即将取代竞争对手提供的解决方案)、 无法正常工作。
    • 客户使用 OEM 电路板在 AM62P 上的时序参数、"du xin 模拟器" 仍然无法解码数据。
    • OEM 电路板由"Duxin Simulator"工作

     客户已经检查了 pclk 和数据时序、但 很难找到问题的根本原因。

    您是否希望提供有关如何进一步调试的建议?

    非常感谢!

    Yong

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

    由于讨论已移至电子邮件、我将关闭此 TT、并将在此 TT 结束后发布最终摘要。

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

    亲爱的 Divyansh。

    抱歉。 请保留此 TT、因为客户可以了解进度。

    非常感谢!

    Yong

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

    您好、
    使用最新进度更新此主题:
    使用以下更新的补丁 来更改先前使用的时序参数:
    e2e.ti.com/.../bt656_5F00_23may.tar.gz

    客户已经能够验证720x480帧缓冲区的工作情况。
    客户需要分享  他们在屏幕上看到的内容? 该补丁启用测试图形。 您需要注释掉以下代码以禁用测试模式并查看实际显示是否正常:

    //Setup test pattern
    // OVR_REG_FLD_MOD(dispc, hw_videoport, DISPC_OVR_CONFIG,
    // 1, 1, 1);

    然后使用以下命令检查您是否获得了正确的刷新率:
    $ kmstest --flip


    客户还尚未验证1920x720分辨率并分享结果。

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

    非常感谢、是工作正常。

     
    static const struct drm_display_mode bt656_1080p_mode = {
        .clock = 109600,    // 25fps OK
        .hdisplay = 1920,
        .hsync_start = 1920 + 48,
        .hsync_end = 1920 + 48 + 32,
        .htotal = 1920 + 48 + 32 + 80, // 2080+1920 = 4000
        .vdisplay = 1080,
        .vsync_start = 1080 + 3,
        .vsync_end = 1080 + 3 + 7,
        .vtotal = 1080 + 3 + 7 + 6, // 1096
        .flags = DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_NVSYNC,
    };
    static const struct panel_desc bt656_1080p = {
        .modes = &bt656_1080p_mode,
        .num_modes = 1,
        .bpc = 8,
        .size = {
            .width = 129,
            .height = 86,
        },
        .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
        .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE |
                 DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE,
        .connector_type = DRM_MODE_CONNECTOR_DPI,
    };