TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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:TDA4VM 无法在 Linux 上输出 DSI 频率信号

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1159173/tda4vm-tda4vm-can-not-output-dsi-frequency-signal-on-linux

器件型号:TDA4VM
主题中讨论的其他器件: SN65DSI83

你好

根据以下链接的内容、DSI 当前支持 TDA4VM 上的输出。
e2e.ti.com/.../tda4vm-tda4vm-dsi-support-on-linux

我们按照 TI 的说明修改内核相关设置。
但我们没有测量任何 DSI 时钟(E10/E11 DSI_TXCLKN/P 引脚)波形输出。

我的环境如下:

===================================================================================================================================

硬件:[J721e SoC]--DSI->[SN65DSI83]---LVD-->[LVDS 面板1280x720]
操作系统:Linux SDK 8.4.11/Kernel 5.10.120

===================================================================================================================================

内核 DTS 设置如下所示

k3-j721e-main.dtsi

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
dsi0: dsi@48000000 {
compatible = "ti,j721e-dsi";
reg = <0x0 0x04800000 0x0 0x100000>, <0x0 0x04710000 0x0 0x100>;
clocks = <&k3_clks 150 1>, <&k3_clks 150 5>;
clock-names = "dsi_p_clk", "dsi_sys_clk";
resets = <&k3_reset 150 1>;
reset-names = "dsi_p_rst";
power-domains = <&k3_pds 150 TI_SCI_PD_EXCLUSIVE>;
interrupt-parent = <&gic500>;
interrupts = <GIC_SPI 600 IRQ_TYPE_LEVEL_HIGH>;
phys = <&dphy2>;
phy-names = "dphy";
#address-cells = <1>;
#size-cells = <0>;
dsi0_ports: ports {
#address-cells = <1>;
#size-cells = <0>;
};
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

k3-j721e-test.dts

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
panel_disp0: panel_disp0@0 {
reg = <0 0 0x0 0x0>;
compatible = "panel-dpi";
power-supply = <&reg_backlight>;
enable-gpios = <&main_gpio0 117 GPIO_ACTIVE_HIGH>;
panel-timing {
clock-frequency = <75000000>;
hactive = <1280>;
vactive = <720>;
hback-porch = <140>;
hfront-porch = <14>;
vback-porch = <4>;
vfront-porch = <144>;
hsync-len = <2>;
vsync-len = <2>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <0>;
pixelclk-active = <0>;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

dmesg 日志作为附件文件

e2e.ti.com/.../6180.dmesg.txt

问题1:内核设置是否有任何问题?
Q2:如何使 DSI 时钟引脚输出频率信号?

谢谢。

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

    你好、Jason

    我发现某些代码不同、您可以参考 K3-j721s2-main.dtsi

    您可以先尝试此代码吗?  

    请检查时钟源设置

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    dphy0: phy@4480000 {
    compatible = "ti,j721e-dphy";
    reg = <0x0 0x04480000 0x0 0x1000>;
    clocks = <&k3_clks 363 8>, <&k3_clks 363 14>;
    clock-names = "psm", "pll_ref";
    #phy-cells = <0>;
    power-domains = <&k3_pds 363 TI_SCI_PD_EXCLUSIVE>;
    assigned-clocks = <&k3_clks 363 14>;
    assigned-clock-parents = <&k3_clks 363 15>;
    assigned-clock-rates = <19200000>;
    };
    dsi0: dsi@4800000 {
    compatible = "ti,j721e-dsi";
    reg = <0x0 0x04800000 0x0 0x100000>, <0x0 0x04710000 0x0 0x100>;
    clocks = <&k3_clks 154 4>, <&k3_clks 154 1>;
    clock-names = "dsi_p_clk", "dsi_sys_clk";
    power-domains = <&k3_pds 154 TI_SCI_PD_EXCLUSIVE>;
    interrupt-parent = <&gic500>;
    interrupts = <GIC_SPI 600 IRQ_TYPE_LEVEL_HIGH>;
    phys = <&dphy0>;
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    您需要在 K3-j721e-main.dtsi 中重命名节点"dphy0"、

    因为 dphy0已分配给 CSI-Rx

    尊敬的 TI 成员:

    我不确定这是正确的答案、

    有什么意见要问我吗?

    非常感谢

    )

    Gibbs

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

    您好、Jon、Gibbs、

    我在器件树设置中看到了几个问题

    DSI 连接到 DSS 的端口2、因此您将 dsi0连接到 DSS 的端口@2
      请参阅: https://github.com/beagleboard/BeagleBoard-DeviceTrees/blob/5973f30e9acf4e35606c6c39fcd539984e3556c5/src/arm64/overlays/k3-j721e-beagleboneai64-RPi-7inch-panel.dts#L82

    dphy2缺少分配的时钟
      请参阅: https://github.com/beagleboard/BeagleBoard-DeviceTrees/blob/5973f30e9acf4e35606c6c39fcd539984e3556c5/src/arm64/overlays/k3-j721e-beagleboneai64-RPi-7inch-panel.dts#L141
      您也可以将上述内容添加到主文件中,与 j721s2类似,如 Gibbs 指出的那样
      但 j721e 的值不同、因此请参阅上面的链接以获取值

    请修复上述更改并尝试

    此致
    拉胡尔

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

    感谢您的回复。

    现在 DSI_TXCLK 具有输出、但 DSI_TX 没有 数据输出。

    请参见下图。

    时钟通道:

    数据通道:

    Q1:DSI 时钟输出波形正确吗?

    Q2:如何使 DSI 输出正确的数据?

    谢谢。

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

    您好!

    是否启用 DSS 以通过 DSI 发送某些数据? 否则 、数据通道将 处于低功耗状态。  

    此致、

    Brijesh

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

    您好 Jason、

    您能否运行以下命令在检查数据信号之前在显示屏上呈现某些图形
    kmstest

    此致
    拉胡尔

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

    此外、您能否检查并共享以下命令的输出
    modetest -M tids

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

    你好、Jason  

    遵循 Brijesh 的评论。

    如果您还加载 L3-j721e-vision-apps.dtbo

    请帮助我们首先选中 DSS"启用或不启用"、

    您可以查看此 E2E 主题。

    TDA4VM:在应用 K3-j721e-vision-apps.dtbo -处理器论坛-处理器- TI E2E 支持论坛时、TI 驱动程序不起作用

    谢谢

    Gibbs

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

    感谢您的回复

    DSS 启用。

    执行 kmstest 命令后、没有数据和时钟输出。

    下面是最小日志。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    root@ccids:~# kmstest
    Connector 0/@39: DSI-1[ 3491.068626] gpiod_set_value_cansleep: invalid GPIO (errorpointer)
    Crtc 0/@37: 1280x720 75.000 1280/12/4/112/- 720/8/4/12/- 72 [ 3491.081334] gpiod_set_value_cansleep: invalid GPIO (errorpointer)
    (71.60) 0xa 0x48
    Plane 0/@31: 0,0-1280x720
    Fb 59 1280x72[ 3491.088486] cdns_dsi_j721e_enable
    0-XR24
    press enter to exit
    root@ccids:~# modetest -M tidss
    Encoders:
    id crtc type possible crtcs possible clones
    38 37 none 0x00000001 0x00000001
    Connectors:
    id encoder status name size (mm) modes encoders
    39 38 connected DSI-1 199x112 1 38
    modes:
    index name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
    #0 1280x720 71.60 1280 1292 1296 1408 720 728 732 744 75000 flags: nhsync, nvsync; type: preferred, driver
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    你好、Jason

    在学习了床单之后,我有一个想法...

    如何启用 TVG 发生器来生成 DSI 颜色模式

    我认为这种方法可以帮助我们确保 DSI 和 D-PHY 首先运行良好

    您可以使用 Linux 命令"devmem2" R/W 寄存器

    参考源:

    12.6.5.7 DSI 编程指南

    Gibbs

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

    您好、 Gibbs

    我尝试设置 TVG 相关寄存器、但数据通道仍然没有输出。

    下面是我的设置顺序。 如果有任何问题、请告诉我。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    root@tda4vm-sk:~# devmem2 0x04800004
    /dev/mem opened.
    Memory mapped at address 0xffffabbe5000.
    Read at address 0x04800004 (0xffffabbe5004): 0x00020027
    root@tda4vm-sk:~# [ 131.617048] Initializing XFRM netlink socket
    [ 132.374647] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
    [ 132.389172] Bridge firewalling registered
    [ 133.205903] process 'docker/tmp/qemu-check342296845/check' started with executable stack
    devmem2 0x0480000c
    /dev/mem opened.
    Memory mapped at address 0xffffa7f35000.
    Read at address 0x0480000C (0xffffa7f3500c): 0x000040F9
    root@tda4vm-sk:~# devmem2 0x0480000c w 0x000020f9
    /dev/mem opened.
    Memory mapped at address 0xffff8bd5a000.
    Read at address 0x0480000C (0xffff8bd5a00c): 0x000040F9
    Write at address 0x0480000C (0xffff8bd5a00c): 0x000020F9, readback 0x000020F9
    root@tda4vm-sk:~# devmem2 0x0480000c
    /dev/mem opened.
    Memory mapped at address 0xffffb3904000.
    Read at address 0x0480000C (0xffffb390400c): 0x000020F9
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    谢谢。

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

    你好、Jason

    我发现有问题。

    1。 DSI_MCTL_MAIN_EN 寄存器、设置 IF1_EN = 1? 我认为它应该设置为0、  

    DSI_MCTL_MAIN_DATA_CTL 寄存器、TVG_SEL 正确! 但您选择了错误的视频接口、应设置 VID_IF_SELECT = 01

    3. DSI_TVG_CTL 寄存器、如何设置单色模式? TVG_MODE = 00。 因为您只需要数据通道的输出

    我的意见是、 TVG_Color1_BIS、TVG_COLOR2、VG_COLOR2_BIS 寄存器设置为 TVG_MODE 设置后

    如下所示备注您的日志。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* DSI_MCTL_MAIN_DATA_CTL Register */
    root@tda4vm-sk:~# devmem2 0x04800004
    /dev/mem opened.
    Memory mapped at address 0xffffabbe5000.
    Read at address 0x04800004 (0xffffabbe5004): 0x00020027
    /* DSI_MCTL_MAIN_EN REGISTER, SET IF1_EN = 1?? I think It should be set 0, please check it again */
    root@tda4vm-sk:~# [ 131.617048] Initializing XFRM netlink socket
    [ 132.374647] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
    [ 132.389172] Bridge firewalling registered
    [ 133.205903] process 'docker/tmp/qemu-check342296845/check' started with executable stack
    devmem2 0x0480000c
    /dev/mem opened.
    Memory mapped at address 0xffffa7f35000.
    Read at address 0x0480000C (0xffffa7f3500c): 0x000040F9
    root@tda4vm-sk:~# devmem2 0x0480000c w 0x000020f9
    /dev/mem opened.
    Memory mapped at address 0xffff8bd5a000.
    Read at address 0x0480000C (0xffff8bd5a00c): 0x000040F9
    Write at address 0x0480000C (0xffff8bd5a00c): 0x000020F9, readback 0x000020F9
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX