主题中讨论的其他器件:SK-AM62P-LP、 AM62P
工具/软件:
我们想在 DPI 模块的板中使用 BT656。
如何启用 DPI 输出 BT656?
DPI 输出 BT656?是否有任何指导文档和测试说明
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.
工具/软件:
我们想在 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 = 0;i < dispc->feat->num_Vps; i++){
VP_REG_FLD_MOD (dispc、I、DISPC_VP_CONFIG、1、2、 2);
/*在 VP 输出上选择 BT-656格式*/
VP_REG_FLD_MOD (dispc、I、DISPC_VP_CONFIG、1、20 20);
}
}
谢谢。
Linjun
硬件设计 SOC 为 AM62P52、使用的 DPI 引脚为 VOUT0_D2~D9 (AA23/Y23/AB23/AD23/AC23/AE23/AE22/AC22)。
我有 2个问题需要您确认:
&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>; }; }; };
你(们)好
我使用的 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#。 使用面板时如何使用寄存器?
您好、
我们的 EVM 不支持 BT656、并且我们没有任何说明如何启用 BT656的软件驱动程序或文档。
如前所述、目前我们不支持 YUV 数据格式。
Wangpg,
您能不能使用 GEL 转储 DSS 模块、我们将支持您 实现 BT656输出。 谢谢。
/cfs-file/__key/communityserver-discussions-components-files/791/DSI.tar.xz
Linjun
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); }
同步状态。
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
你(们)好
我使用的 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 没有面板参数:
尊敬的 Yong Zhang Divyansh Mittal :
我将 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是错误。
有这个错误吗?
你好 Divyansh Mittal:
kmsprint 信息正常。 谢谢。
有一个可以在 DSI 接口、上调用的 Linux 内核 API
of_find_mipi_DSI_HOST_BY_NODE
MIPI_DSI_DEVICE_REGISTER_FULL
但在 DPI 接口上未找到相同的 API? 接下来我应该怎么做?
同步此问题以使每个人进入同一页。
亲爱的 Divyansh。
感谢 Linjun 的帮助与鹏起测试,下面是来自客户关于 BT656支持状态的最新结果, 输出分辨率为720*480。
客户已经检查了 pclk 和数据时序、但 很难找到问题的根本原因。
您是否希望提供有关如何进一步调试的建议?
非常感谢!
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
非常感谢、是工作正常。
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, };