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.

[参考译文] TDA4VH-Q1:没有 mhdp HPD、DP 无法正常工作

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1631825/tda4vh-q1-dp-can-not-work-without-mhdp-hpd

器件型号: TDA4VH-Q1

您好、专家

我目前正在研究如何通过将 miniDP 转换为 DP 将显示器连接到输出视频信号。 由于 miniDP 的热插拔信号连接到 i2c 扩展芯片的 IO、mhdp 驱动程序无法自动检测到它。 因此、我要修改 mhdp 的器件树、使其没有热插拔信号。 器件树修改如下。

&mhdp{
  状态=“正常“;
  // HPD-GPIOs =<&pcal6524_0 9 GPIO_ACTIVE_HIGH>;
  CDN、无 HPD;
  PHY =<&S serdes4_DP_LINK>;
  phy-names =“dpphy";“;
};
我已经阅读了 mhdp 的驱动程序。 这表明、当启用 CDN 和无 HPD 时、将通过辅助主动轮询来检测是否存在显示设备。 但是、我的开发板现在无法检测到显示器。 驱动程序中的相关打印信息如下所示。

root@j784s4-evm:~# dmesg | grep "dp"
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02830000 mtdparts=47040000.spi.0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);spi-nand0:512k(ospi_nand.tiboot3),2m(ospi_nand.tispl),4m(ospi_nand.u-boot),256k(ospi_nand.env),256k(ospi_nand.env.backup),98048k@32m(ospi_nand.rootfs),256k@130816k(ospi_nand.phypattern) root=PARTUUID=252d6653-05 rw rootfstype=ext4 rootwait
[    0.000000] Unknown kernel command line parameters "mtdparts=47040000.spi.0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);spi-nand0:512k(ospi_nand.tiboot3),2m(ospi_nand.tispl),4m(ospi_nand.u-boot),256k(ospi_nand.env),256k(ospi_nand.env.backup),98048k@32m(ospi_nand.rootfs),256k@130816k(ospi_nand.phypattern)", will be passed to user space.
[    0.764432] /bus@100000/bridge@a000000: Fixed dependency cycle(s) with /connector-dp0
[    0.772493] /connector-dp0: Fixed dependency cycle(s) with /bus@100000/bridge@a000000
[    1.023735] RPC: Registered udp transport module.
[    2.559517] pci 0000:01:00.0: [10ec:906a] type 00 class 0x020000 PCIe Endpoint
[    2.640675] pci 0000:01:00.1: [10ec:906f] type 00 class 0x028000 PCIe Endpoint
[    4.241924] pci 0002:01:00.0: [12be:bd31] type 00 class 0x028000 PCIe Endpoint
[    5.981498]     mtdparts=47040000.spi.0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),57088k@8m(ospi.rootfs),256k(ospi.phypattern);spi-nand0:512k(ospi_nand.tiboot3),2m(ospi_nand.tispl),4m(ospi_nand.u-boot),256k(ospi_nand.env),256k(ospi_nand.env.backup),98048k@32m(ospi_nand.rootfs),256k@130816k(ospi_nand.phypattern)
[    6.568694] systemd[1]: Created slice Slice /system/modprobe.
[    7.358356] systemd[1]: Starting Coldplug All udev Devices...
[    8.660678] cdns-mhdp8546 a000000.bridge: error -EINVAL: invalid resource (null)
[    8.673400] cdns-mhdp8546 a000000.bridge: Failed to get SAPB memory resource, HDCP not supported
[    8.685274] dp PHY initialized successfully
[    8.689738] dp func clk rate 125000000 Hz
[    8.698845] dp Initializing work for modeset retry and HPD handling
[    8.706294] dp Initializing work for firmware loading
[    8.711560] dp Firmware loading ret = 0
[    8.718552] dp firmware callback
[    8.726867] dp firmware activated
[    8.730974] dp firmware callback ret 0
[    8.839939] dp cdns-mhdp: cdns_mhdp_update_link_status: -22

继续打印会显示以下代码返回–22:

    ret = cdns_mhdp_mailbox_recv_header(mhdp, MB_MODULE_ID_DP_TX,
                        DPTX_READ_DPCD,
                        sizeof(reg) + len);
    if (ret) {
        dev_err(mhdp->dev, "dp mailbox_recv_header failed: %d\n", ret);
        goto out;
    }

顺便说一句,如果我想使用 i2c 扩展芯片上的一个 IO 端口作为热插拔信号,如何修改 mhdp 驱动程序? 是否有补丁?

谢谢。

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

    尊敬的 Bowen:

    使用的是哪个 SDK 版本?  

    至于更改 HPD 信号、以下引脚是数据表中唯一可用于热插拔检测的引脚 (https://www.ti.com/lit/ds/symlink/tda4vh-q1.pdf?、ts = 1774992114839 & ref_url=https://www.253A%252F%252Fwww.ti.com%252Fproduct%252FTDA4VH-Q1)

    此致、

    Takuma

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

    嗨、

    我的 SDK 是 11_00_00_08。

    对于 AG33、AC34 和 AM37、我已将它们重复用于其他功能。 目前、我的 HPD 信号绑定到 I2C 芯片上的通用 IO。 我想知道如何修改 mhdp 驱动程序。 是否有补丁?

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

    尊敬的 Bowen:

    我知道 HPD 引脚都用于其他功能。 但是、是否可以使用用于 HPD 的引脚来模拟 HPD? 也是一种故障排除方法?

    此致、

    Takuma

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

    嗨、 Takuma

      由于需要修改硬件、因此很难使用用于 HPD 的引脚来模拟 HPD。  但现在我使用 i2c 扩展芯片上的通用 GPIO 来模拟 HPD。 这样可以实现、当插入显示器时、GPIO 的值变为 1、而当显示器断开连接时、GPIO 的值变为 0。
    上述回复中给出了相关的驱动程序修改、问题也出在函数 cdns_mhdp_dpcd_read 和 cdns_mhdp_mailbox_recv_header 中。 主要问题是固件回复中的标头大小与预期的不一致。 我想知道如何修改它?

    谢谢。

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

    尊敬的 Bowen:

    我已经通读了这个补丁。 我看到它被评论得很好,和许多描述性的日志集成在 — 如果补丁是手动写的 ,相当令人印象深刻。

    在任何情况下、我怀疑需要来自 HPD 的中断来触发 MHDP IP 块内的事件。 作为一种疑难解答方法、如果可以手动更改 HPD 引脚状态、最好对物理连接了 HPD 引脚的系统进行仿真... 但如果无法实现、如何在读取发生之前添加延迟? 在 HPD 通过物理引脚的正常情况下、有些寄存器具有一些延迟值、等待 HPD 稳定。

    但免责声明、首先应注意这个没有任何 HPD 引脚可用于 HPD 的当前用例。 目前尚无已知的不使用 HPD 的工作案例(不过,在某些情况下,HPD 引脚存在、但无法像 J721S2 EVM 那样正确连接)。

    此致、

    Takuma