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.
您好!
我们希望使用 TDA4VM 的 MIPI-DSI 输出、而不是 DisplayPort。 简单的原因是、我们希望允许使用显示接口、并且可以访问 SERDES4、将其用作 SGMII 或 QSGMII、以便从 CPSW9G 提供4个 GbE 端口。 如果使用 DisplayPort、SERDES4的 TX 通道将与 DP 功能一同使用。
从1年前发布的这篇文章中可以解释说、Linux 不支持 DSI、未来也没有计划:
但是、从以下 e2e 帖子中、TI 似乎打算在 SDK 8.4中添加对 DSI 的支持:
但是、最新的 PSDK Linux 发行说明(8.4)似乎不支持 DSI:
具有 DSI 支持将允许将更具成本效益的 LCD 面板直接连接到 TDA4VM。 此外、扩展到 LVDS、HDMI 和 FPDLinkIII 也是非常可能的。 我们的用例涉及将其用作 HMI、而不是摄像头预览屏幕、因此使用 Linux 而不是 RTOS 来驱动它更有意义。
在 J7上向 Linux 添加 DSI 支持的计划是什么?
谢谢!
尊敬的 John Weber:
我认为应该已经得到了支持、让我与团队内部进行核实、然后就此向您回复。
此致、
Brijesh
您好、Brijesh、
选中8.04后、我们可以在 DTS 中找到一些对 MIPI-DSI 的引用。 这意味着即使发行说明中另有说明、也确实添加了支持。
您是否知道这是否通过了显示器测试?
谢谢!
尊敬的 John Weber:
是的、这已经过验证、但在 TDA4VL 器 件上、我认为即使在 TDA4VM 上、也可以使用相同的器件节点进行检查。
此致、
Brijesh
您好、Brijesh:
您能否为我们提供一些有关如何在 TDA4VM 的 DSI 节点中设置时钟、电源域和中断的线索?
BR、
Richard
您好 Richard、
请参阅以下 DTS 节点吗? 这些用于 j721e、但类似的也可用于 j721s2。
github.com/.../k3-j721e-main.dtsi
github.com/.../k3-j721e-beagleboneai64.dts
此致、
Brijesh
您好、Brijesh:
我正在努力通过我们的定制 TDA4VM 电路板 DS90UB941/DS90UB948来启用 LVDS 面板。
TDA4VM (MIPI DSI 4通道)-> DS90SUB941 ->(FPDLINK) DS90UB948 ->(LVDS) 1280x800面板
我们已在 NXP i.mx8MP 平台上成功启用它。
在 TDA4VM 上、我遇到了 DSI 面板无法在 CDNS-DSI-core.c 中"通过 mode_valid"且始终在"phy_validate"中失败的问题。
----------------------------------------------------------------------
Kern :debug:[DRM:DRM_sysfs_connector_add]将"DSI-1"添加到 sysfs 中
Kern :debug:[DRM:DRM_sysfs_hotplug_event]生成热插拔事件
Kern :info :[DRM]为次要0上的4a00000.dss 初始化了 tids 1.0.0 20180215
Kern :debug :[DRM:DRM_CLIENT_MODEET_PROM]
Kern :debug:[DRM:DRM_MODE_OBJECT_GET] OBJ ID:39 (2)
Kern :debug:[DRM:DRM_helper_probe_single_connector_modes][connector:39:DSI-1]
Kern :debug:[DRM:DRM_helper_probe_single_connector_modes][connector:39:DSI-1]状态从未知更新为已连接
-->文件:drivers/GPU/DRM/BRIDE/CADEN/CDS-DSI-CORE.c,函数:CDNS_DSI_BRIDGE_MODE_VALID,行:249
--> CDNS_DSI_CHECK_conf -启动
--> CDNs_DSI_CHECK_conf - CDNS_DSI_mode2cfg
--> CDNs_DSI_CHECK_conf - phy_mipi_dphy_get_ddefault_config
--> CDNS_DSI_ADJUST_phy_config - CDNS_DSI_ADJUST_phy_config
-->文件:drivers/GPU/DRM/BRIDE/BRIDEN/CDNS-DSI-CORE.c,函数:CDNS_DSI_ADJUST_phy_config,行:129
--> CDNS_DSI_ADJUST_phy_config,通道号:4.
--> CDNS_DSI_ADJUST_phy_config - phy_validate
--> CDNs_DSI_BRIDGE_MODE_VALID - MODE_BAD
Kern :debug:[DRM:DRM_MODE_DEBUG_printmodeline] Modeline“1280x800”:58 68900 1280 1320 1400 1440 800 813 803 823 0x48 0xA
Kern :debug:[DRM:DRM_MODE_prune_invalid]未使用1280x800模式:错误
Kern :debug:[DRM:DRM_CLIENT_MODEET_PROM]未报告与模式连接的连接器
Kern :debug:[DRM:DRM_CLIENT_MODEET_PROM]连接器39是否已启用? 是的
Kern :debug:[DRM:DRM_CLIENT_MODEET_PROM]不使用固件配置
Kern :debug:[DRM:DRM_CLIENT_modeset_probe]在连接器39上查找命令行模式
Kern :debug:[DRM:DRM_CLIENT_MODEET_PROM]在连接器39 0上查找首选模式
Kern :debug:[DRM:DRM_CLIENT_MODEET_PROM]找到模式无
Kern :debug:[DRM:DRM_CLIENT_Modeset_probe]为8096x8096配置挑选 CRC
Kern :debug:[DRM:DRM_MODE_OBJECT_PLOT.PLE3.3] OBJ ID:39 (2)
Kern :debug : tids 4a00000.dss:[DRM:__DRM_fb_helper_initial_config_and_unlock]测试 CRTC 0主平面
Kern :info : tids 4a00000.dss:[DRM]找不到任何 CRTC 或大小
----------------------------------------------------------------------
示波器上没有显示 DSI 时钟输出。
我们只能看到要启用的背光。 它说明了 SERDES 面板的配置生效。
我已尝试在 CDNS-DSI-CORE.c 中标记"phy_validate"检查
但仍然没有 DSI 时钟输出。
我们可以测量 NXP i.mx8MP 上的 DSI 时钟。
要启用 MIPI DSI 支持、我修改了:
1.我应用 K3-j721e-main.dts 中的 DSI 相关补丁。
https://github.com/TechNexion-customization/linux-ti/commit/c9d231f24fc7c726919fb75453c91d1b28dc2f7b
2.在"drrivers/GPU/DRM/panel/panel-simple.c"中添加显示时序设置
https://github.com/TechNexion-customization/linux-ti/commit/13f14b309407046c43f22af54e025119ec2bd9c2
3.将设备树覆盖添加到启用面板
https://github.com/TechNexion-customization/linux-ti/commit/558bbb76379a786b4fc728ae1bca1ebc67905b0d
我的问题是如何使 CDNS-DSI-CORE 通过'phy_validate'? 在"phy_validate"中失败时、这意味着什么?
是否有任何示例可演示 TDA4VM 的 CDN DSI? (例如,MIPI 面板可与 面板模拟和 CDNS-DSI 驱动器配合使用。)
然后、虽然我没有物理面板、但我仍然可以测量 DSI 时钟输出以证明 DSI 控制器工作正常。
谢谢~!!!
BR、
Richard
我按照下面的更改在 'panel-simple.c'的'rm_display_mode'设置中添加了 CRTC_clock、CRTC_hdisplay 、然后 CDNS-DSI-CORE 可以通过'phy_validate'。
https://github.com/beagleboard/linux/commit/77f3db77d12b545326d33a9d7e2807da16af4f2f
下面是我所做的更改:
https://github.com/TechNexion-customization/linux-ti/commit/ac541020a6b17cddfed7fa8ee97da24e9d07d359
但我仍然无法在示波器上测量 DSI 时钟。
我没有从 tids 中获取 bus_formats 消息、我将尝试解决它。
root@j7-evm:~# systemctl stop Weston
root@J7-EVM:~#[ 35.689557] tids 4a00000。dss:tids_encoder_at原 子检查:已连接显示中没有 bus_formats
[35.701290] tids 4a00000.dss:tids_encoder_at原 子_check:连接的显示中没有 bus_formats
根目录@J7-EVM:~# kmsprint
连接器0 (39) DSI-1 (已连接)
[43.305264] tids 4a00000.dss:tids_encoder_atel_check:连接的显示中没有 bus_formats
编码器0 (38)无
root@J7-EVM:~# kmstest -c 0
连接器0/@39:DSI-1[51.854265] tids 4a00000。dss:tids_encoder_at原 子检查:连接的显示屏中没有 bus_formats
CRTC 0/@37:1280x800 68.900 1280/40/80/40/- 800/3/10/10/- 58[ 51.864986] tids 4a00000。dss:tidss_encoder_at原 子_check:在连接的显示屏中没有 bus_formats
(58.14) 0xA 0x48
平面0/@31:0、0-1280x800
FB 59 1280x800-XR24
原子测试失败:-22
|
我注意到 BeagleBone AI 64发生了变化、改为对 RPI 7英寸面板使用 VESA 计时。
CDN DSI 驱动程序是否需要?
导致无 DSI 时钟输出的任何其他可能原因吗?
BR、
Richard
在使用 panel-simple.c 的自定义面板中指定总线格式后、我可以看到有 DSI 时钟输出:
https://github.com/TechNexion-customization/linux-ti/commit/b0c027c8a48ab786e22a841545a6eddf272f085d
但显示屏仍然没有显示任何内容。 我将继续处理它。
我可以从 DES 获取 LVDS 时钟输出。
但显示屏上仍然没有显示任何内容。
不确定是什么问题导致不显示。
当我执行 kmstest 时、DSI 时钟停止。
正确吗? 如果显示正常、则应输出测试图案。
BR、
Richard
您好 Richard:
我将与 TI Rnd 一起检查此 E2E。
在得出结论之前,我认为这可能是根本原因。 tids 4a00000:dss:vp2:时钟速率600000000与请求的68900000相差5%以上
您可以检查时钟设置吗?
谢谢。
BR RIO
可能会降低该值以进行尝试吗? =>.CRTC_CLOCK = 68900、/* 68900、*/
感谢您的反馈。
我尝试将像素时钟增加到71000kHz、降低到67900kHz、并设置精确的68900kHz 时钟。
它看起来没有区别。 我仍然看到黑色显示屏。
更新最新状态:
在定制的 TDA4VM 电路板上、我可以测量示波器上的 DSI 时钟输出和 LVDS 时钟输出。
(TDA4VM 的 DSI 时钟输出大约为213MHz,如下所示)
但我看不到下面显示的示波器中显示的 DSI 数据输出。
我认为这可能是导致屏幕上显示黑屏的根本原因。
我们已在 NXP i.mx8mp 上启用 SERDES 面板。
我们可以从 i.mx8mp 获取清晰的 DSI 时钟和 DSI 数据输出。
(i.mx8mp 的 DSI 时钟输出如下所示。)
(imx8mp 的 DSI 数据输出如下所示。)
我的问题是:
1.我不确定我没有漏掉什么来使 TI DSS 和 DSI 不输出 DSI 数据。
这是我所做的更改。
2.我们了解到08.04.00 BSP 中的 TDA4VM 不支持 DSI、因此我们的职责是启用自定义面板。
但是、您能否为我们提供一个示例或演示如何使用 panel-simple-DSI 驱动程序(panel-simple.c)启用 DSI 面板。
因此、即使我没有手头上的面板、我仍然可以测量 DSI 时钟和数据输出、以确保 DSS 和 DSI 正常工作。
BR、
Richard
您好 Richard:
感谢您的快速回复。
我们的 RND 正在为该问题找到正确的补丁。
我们将尽快回来。
BR RIO
您好 Richard、
DSI 从 DSS 获取输入数据、因此为了从 DSI 获取数据输出、我们需要通过 DSS 发送一些数据。 是否可以使用以下命令发送一些数据?
kmstest
此致、
Brijesh
尊敬的 Richard Hu:
以下 TT 有类似的问题、您可以参考吗?
此致、
Brijesh
e2e.ti.com/.../modetest_5F002D00_M_5F00_tidss_5F00_on_5F00_custom_5F00_tda4vm_5F00_20221012.txt
感谢您的反馈。
将附加 modetest 的日志文件。
我检查过这个帖子、看起来我穿着他的鞋子。
他还只获得 DSI 时钟输出、而没有 DSI 数据输出。
BR、
Richard
您好 Richard、
您是否还可以运行 kmstest 命令并查看输出中是否有任何内容?
此致、
Brijesh
另请参阅以下命令的输出。 这将在实际显示屏上显示一些测试模式。
modetest -M tids -s 39@37:1280x800
另外、请确认以下链接中提到的两个项目是否已得到处理。
此致、
Brijesh
e2e.ti.com/.../modetest_5F002D00_M_5F00_tidss_5F00_on_5F00_custom_5F00_tda4vm_5F00_20221013.txt
随附测试命令结果。
1.除了"tids 4a00000.dss:vp2:时钟速率600000000与请求的6700000相差5%以上"之外,我没有看到任何错误消息。
2.我可以在开头的示波器上看到 DSI 时钟输出。 但是在我发出"kmstest"后、DSI 时钟停止输出。
3. Weston 应该已经在屏幕上输出 wayland 桌面。 kmstest 仅输出特定模式以检查显示大小和颜色。
BR、
Richard
Ri Brijesh
在开始本 e2e 主题之前、我们已根据 BeagleBoard DTS 的参考实现了 DS/DSI、因此我们应该很好。 请查看:
1) 1)对于 DSS 端口分配:
github.com/.../k3-j721e-rovy-4vm-vizionpanel-vl10112880.dts
2) 2)对于 phy2时钟分配、请参阅:
你(们)好、Richard
我看到您之前提到的关于"item3"的消息
3. Weston 应该已经在屏幕上输出 wayland 桌面。 kmstest 仅输出特定模式以检查显示大小和颜色。
根据您的案例、有一点好奇、
所以您可以输出屏幕形式"DSI TX"?
只需检查一下
非常感谢
Gibbs
我对这种误解感到抱歉。
我无法从"DSI TX"输出屏幕、因为没有来自 TDA4VM 的 DSI 数据信号输出。
我在第3项中的意思是"Weston 已经利用了 kms 来呈现某些东西。 无需使用 kmstest 进行渲染。 如果我不发出 kmstest 命令、这不应该是导致无显示输出的原因。"
BR、
Richard
因为 DSI 控制器配置为在连续模式下工作。
因此、即使没有数据、它也会不断输出 DSI 时钟。(看起来 DSI 控制器已正确激活。)
我同意你的说法。
DSS 可能不会将数据流输出到 DSI 控制器。
但是、我如何检查和验证它呢?
谢谢~!!!
BR、
Richard
你(们)好、Richard
我不确定这是有用的信息
我正在学习 TVG 发生器、它可能会确保 DSI+D PHY 首先运行良好
供您参考。
Gibbs
TRM 中有关 DSI 块的信息有限、我找不到有关 DSI 寄存器表的任何说明。
是否有任何其他文档包含 DSI 详细信息?
谢谢~
BR、
Richard
你(们)好、Richard
selsct 用户指南(RevC)
* spruil1c.pdf --> 12.6.5.7 DSI 编程指南,p3149
* J721E_register5.pdf
Gibbs
谢谢! 我没有注意到寄存器表位于另一个 pdf 中...
我尝试转储 DSI 状态寄存器并获取一些信息:
根目录@J7-EVM:~# devmem2 0x0480002C/dev/mem 已打开。映射到地址0xff80970000的存储器。在地址 0x0480002C (0xff8097002c)上读取:0x000402A6
它表示只有 CLK 通道处于 HS 模式、4个数据通道处于空闲状态。
它与我在示波器上看到的结果相匹配。
根目录@J7-EVM:~# devmem2 0x04800024/dev/mem 已打开。映射到地址0xffffff5437000的存储器。在地址 0x04800024 (0xffa5437024)处读取:0x0000003F
它表示 clk 通道、4个数据通道就绪。
根目录@J7-EVM:~# devmem2 0x048000F0/dev/mem 已打开。映射到地址0xFFbd858000的存储器。在地址 0x048000F0 (0xffbd8580f0):0x00000004处读取
它指示"显示 HSYNC "。 不确定是如何发生的。
root@j7-EVM:~# cat /proc/interrupts | grep -i "DSI\|DSS"41: 0 0 GICv3 632等级 4800000。DSI42: 1286 0 GICv3 634级 链接
它表示 tids 处于活动状态!?
但在我“最可爱”之后。 DSI 状态寄存器显示如下:
根目录@J7-EVM:~# devmem2 0x0480002C
/dev/mem 已打开。
映射到地址0xff86c74000的内存。
在地址 0x0480002C (0xff86c7402c)上读取:0x00000000
根目录@J7-EVM:~# devmem2 0x04800024
/dev/mem 已打开。
映射到地址0xff920b5000的内存。
读取地址 0x04800024 (0xff920b5024):0x00000001
根目录@J7-EVM:~# devmem2 0x048000F0
/dev/mem 已打开。
映射到地址0xff89a04000的存储器。
在地址 0x048000F0 (0xff89a040f0):0x00000000处读取
它看起来时钟和数据通道尚未处于就绪状态!?
BR、
Richard
您好 Richard、
我想您现在可以在从 Rohit 应用补丁后从 DSI 获取一些有效数据、因此请告知我们是否可以关闭此 TT。
此致、
Brijesh
我们可以关闭此 TT。 谢谢!