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.

[参考译文] SN65DSI86EVM:使用 IMX8MP 时出现问题

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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1312014/sn65dsi86evm-problem-working-with-imx8mp

器件型号:SN65DSI86EVM
主题中讨论的其他器件:SN65DSI86

你好。 我有一个搭载 NXP i.MX 8M Plus 处理器的电路板和一个双通道 MIPI DSI 连接器、我正在尝试使用 DSI86 EVM。 我可以通过0x2D 地址上的 i2c 检测电桥、还可以使用 i2cset 设置寄存器以便在显示屏上显示色条。 但是桥的驱动器似乎无法识别桥并执行一些操作。

我将显示屏的面板描述添加到了 panel-pdp.c 驱动程序中、并编写了以下 DTS 覆盖层:

&{/} {
		sn65dsi86_refclk: sn65dsi86-refclk {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <27000000>;
			status = "okay";
		};
		panel: edp-panel {
				compatible = "hp,e24-g4";
				status = "okay";
            	dsi-lanes = <2>;
            	video-mode = <0>;
				port {
					panel_from_sn65: endpoint {
					remote-endpoint = <&sn65_to_panel>;
				};
			};	

		};	
};


&i2c2 {
	status = "okay";
	sn65dsi86@2d {
		compatible = "ti,sn65dsi86";
		status = "okay";
		reg = <0x2d>;
		ti,dsi-lanes = <2>;
		max,dsi-channel = <1>;
		ti,dp-lanes = <2>;	
		dsi-clocks;
		clocks = <&sn65dsi86_refclk>;
		clock-names = "refclk";
		ports {

			//IN(DSI===>SN65DSI)
			port@0 {
				reg = <0>;
				sn65_in: endpoint {
					remote-endpoint = <&dsim_to_sn65>;
				};
			};
			//out
			port@1 {
				reg = <1>;
				sn65_to_panel: endpoint {
					data-lanes = <0 1 2 3>;
					lane-polarities = <0 1 0 1>;
					remote-endpoint = <&panel_from_sn65>;
				};
			};
		};
	};
};

&lcdif1 {
	status = "okay";
};

&mipi_dsi {
	status = "okay";
	port@1 {
		reg = <1>;
		dsim_to_sn65: endpoint {
			remote-endpoint = <&sn65_in>;
			attach-bridge;
		};
	};
	
};

大多数情况下、当插入 ti-sn65dsi86.ko 内核模块时(或在引导板后)、我只收到以下消息:

[  544.693812] ti_sn65dsi86 1-002d: GPIO lookup for consumer enable
[  544.693829] ti_sn65dsi86 1-002d: using device tree for GPIO lookup
[  544.693841] of_get_named_gpiod_flags: can't parse 'enable-gpios' property of node '/soc@0/bus@30800000/i2c@30a30000/sn65dsi86@2d[0]'
[  544.693871] of_get_named_gpiod_flags: can't parse 'enable-gpio' property of node '/soc@0/bus@30800000/i2c@30a30000/sn65dsi86@2d[0]'
[  544.693897] ti_sn65dsi86 1-002d: using lookup tables for GPIO lookup
[  544.693902] ti_sn65dsi86 1-002d: No GPIO consumer enable found
[  544.693909] ti_sn65dsi86 1-002d: Looking up vcca-supply from device tree
[  544.693924] ti_sn65dsi86 1-002d: Looking up vcca-supply property in node /soc@0/bus@30800000/i2c@30a30000/sn65dsi86@2d failed
[  544.693956] ti_sn65dsi86 1-002d: supply vcca not found, using dummy regulator
[  544.694091] ti_sn65dsi86 1-002d: Looking up vcc-supply from device tree
[  544.694105] ti_sn65dsi86 1-002d: Looking up vcc-supply property in node /soc@0/bus@30800000/i2c@30a30000/sn65dsi86@2d failed
[  544.694131] ti_sn65dsi86 1-002d: supply vcc not found, using dummy regulator
[  544.694179] ti_sn65dsi86 1-002d: Looking up vccio-supply from device tree
[  544.694191] ti_sn65dsi86 1-002d: Looking up vccio-supply property in node /soc@0/bus@30800000/i2c@30a30000/sn65dsi86@2d failed
[  544.694215] ti_sn65dsi86 1-002d: supply vccio not found, using dummy regulator
[  544.694263] ti_sn65dsi86 1-002d: Looking up vpll-supply from device tree
[  544.694275] ti_sn65dsi86 1-002d: Looking up vpll-supply property in node /soc@0/bus@30800000/i2c@30a30000/sn65dsi86@2d failed
[  544.694299] ti_sn65dsi86 1-002d: supply vpll not found, using dummy regulator
[  544.700845] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
[  544.700978] imx_sec_dsim_drv 32e60000.mipi_dsi: version number is 0x1060200
[  544.701032] imx_sec_dsim_drv 32e60000.mipi_dsi: [drm] *ERROR* modalias failure on /soc@0/bus@32c00000/mipi_dsi@32e60000/port@1
[  544.712687] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/bus@32c00000/mipi_dsi@32e60000 to encoder DSI-34: -517
[  544.724454] imx_sec_dsim_drv 32e60000.mipi_dsi: Failed to attach bridge: 32e60000.mipi_dsi
[  544.732748] imx_sec_dsim_drv 32e60000.mipi_dsi: failed to bind sec dsim bridge: -517

有时(比如30次中的一次)我得到了这个。 即使在电桥根本没有连接的情况下、这种情况也是非常随机的、因此我想知道它来自哪里以及为什么:

[  710.460491] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
[  710.460639] imx_sec_dsim_drv 32e60000.mipi_dsi: version number is 0x1060200
[  710.460677] imx_sec_dsim_drv 32e60000.mipi_dsi: [drm] *ERROR* modalias failure on /soc@0/bus@32c00000/mipi_dsi@32e60000/port@1
[  710.472928] imx-drm display-subsystem: bound 32e60000.mipi_dsi (ops imx_sec_dsim_ops)
[  710.473235] [drm] Initialized imx-drm 1.0.0 20120507 for display-subsystem on minor 1
[  710.473399] cma: cma_alloc(cma 0000000077aa1180, count 2025, align 8)
[  710.475231] cma: cma_alloc(): returned 00000000c106d400
[  710.477453] imx_sec_dsim_drv 32e60000.mipi_dsi: failed to get pmsk for: fin = 12000, fout = 0
[  710.477486] Console: switching to colour frame buffer device 240x67
[  710.477582] imx_sec_dsim_drv 32e60000.mipi_dsi: failed to get pmsk for: fin = 12000, fout = 0
[  710.506418] imx-drm display-subsystem: [drm] fb0: imx-drmdrmfb frame buffer device
[  710.828014] imx_sec_dsim_drv 32e60000.mipi_dsi: failed to get pmsk for: fin = 12000, fout = 0
[  711.263914] vgaarb: vga_arb_open
[  711.739995] imx_sec_dsim_drv 32e60000.mipi_dsi: failed to get pmsk for: fin = 12000, fout = 0
[  711.748773] imx_sec_dsim_drv 32e60000.mipi_dsi: failed to get pmsk for: fin = 12000, fout = 0
[  716.921122] imx_sec_dsim_drv 32e60000.mipi_dsi: failed to get pmsk for: fin = 12000, fout = 0

一旦我设法得到了错误、这意味着驱动器实际上与桥进行了通信:

[2.170625]   IMX-DRM 显示子系统:Bound 32e6000.mipi_DSI (ops imx_sec_dsim_ops)
[   2.840998] ti_sn65dsi86 1-002D:[drm:ti_sn_bridge_atomic_enable [ti_sn65dsi86]]*错误*链接训练失败,链接关闭(-5)
[  13.824711] ti_sn65dsi86 1-002D:[drm:ti_sn_bridge_atomic_enable [ti_sn65dsi86]]*错误*链接训练失败,链接关闭(-5)

在该错误消息之后、我还检查了寄存器:

~# i2cdump -y 1 0x2D
未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef    
00: 36 38 49 53 44 20 20 20 02 00 06 00 00 00   68ISD  ?...
10:26 00 33 85 00 00 00 00 00 00 00 00 00 00 00 00   & 0.3?..........
20:80 07 00 38 04 00 00 00 00 00 00 00 00 2c 00 00 00   ?...8?…… 、...
30: 05 00 00 00 00 94 00 24 00 58 00 04 00 10 00 00 00   ?………………………………………………………………………………………………………
40:01 00 00 00 80 00 98 08 65 04 C0 00 29 00 2c 00   ?...????e...)...
50:05 00 80 07 38 04 20 00 40 E4 00 A4 00 11 00 b0 00   ????8? @………………………………………………
60:A0 60 A4 00 06 00 06 00 00 00 00 00 00 00 00 00   `………………………………………………………
70:00 00 00 00 00 01 02 01 80 17 00 00 00 00 00 00   。 ????? ......
80:00 00 00 00 00 00 00 00 00 1f 7c f0 c1 07 1f 7c   。 ?|????|
90:F0 C1 07 20 82 00 04 01 00 00 00 00 00 00 00 00   ??? …………………………………
A0:01 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?..........
b0:04 78 AC 08 6c 9c 0c 5c 5c 5c 5c 0c 0c 0c 0c 0c   ?x?l?????
C0:3F 3f 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?............
D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   .
E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   .
F0:02 03 00 01 20 00 00 13 00 00 00 00 00 00 00   ?... ………………………

不幸的是、即使我没有更改任何内容、也无法获得再次显示的相同错误消息

您有什么建议吗?

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

    Eduard、您好!

    很遗憾、我们不支持此器件的软件、所提供的所有软件都按原样提供、最终不会更改。 您是否已经在使用我在之前的 E2E 中与您关联的 DSI 潜水员?

    链接: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/1302102/sn65dsi86evm-display-bridge-evaluation-board-usage-problem?tisearch=e2e-sitesearch&keymatch=DSI86%252520driver#

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

    我设法使驱动程序正常工作。 但我仍然得到这些误差寄存器、您能为我们解决什么问题吗?

    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef    
    00:36 38 49 53 44 20 20 20 02 00 86 00 01 00   68ISD  ?..
    10:26 00 58 00 00 00 00 00 00 00 00 00 00 00 00 00 00   &.X...
    20:80 07 00 38 04 00 00 00 00 00 00 00 00 2c 80 00 00   ?...8?... 、?...
    30: 05 80 00 00 94 00 24 00 58 00 04 00 00 00 00 00 00   ?..
    40:01 00 00 00 80 00 98 08 65 04 c0 00 29 00 2c 80   ?...???e??)、??
    50:05 80 07 38 04 20 00 40 E4 0d 00 11 00 b0 00   ???8? @………………………………………………
    60:A0 60 A4 00 06 06 06 06 00 00 00 00 00 00 00 00   `………………………………………………………
    70:00 00 00 00 00 01 02 01 80 81 77 00 00 00 00 00   ..... ????? w...
    80:00 00 00 00 00 00 00 ce 1f 7c f0 c1 07 1f 7c   ........ ???|????|
    90:F0 C1 07 34 22 00 01 01 00 00 00 00 00 00 00   ?4?……
    A0:01 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?..........
    b0:04 78 AC 08 6c 9c 0c 5c 5c 5c 5c 0c 0c 0c 0c 0c   ?x?l?????
    C0:3F 3f 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ?............
    D0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   .
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   .
    F0:02 03 00 01 00 00 00 01 00 00 00 00 00 00 00   ?………………

    0xF0:位1
    CHA_SOT_SYNC_ERR。 当 DSI 通道时、数据包处理器检测到损坏的 SOT、
    该位被置位、表示无法期望正确同步;该位被置位;写入1或
    SN65DSI86对通用读取/写入请求或者未经请求的 BTA 进行响应、
    错误报告。

    0xF1:位1:

    CHA_UNC_ECC_ERR 当 DSI 通道 A 数据包处理器检测到不可纠正的 ECC 错误时、
    该位被置位;通过写入1或者当 SN65DSI86响应通用读取/写入时、该位被清零
    向 BTA 申请或主动提供确认和错误报告。

    0xF1:位0:

    CHA_COR_ECC_ERR 当 DSI 通道 A 数据包处理器检测到可纠正的 ECC 错误时、
    该位被置位;通过写1或者当 SN65DSI86响应通用读取/写入时、该位被清零
    通过确认和错误报告申请或未经请求的 BTA

    0xF4:位0。

    SEND_INT。 每当发送位从1转换为0时、就会设置该字段。

    0xF8:位0

    LT_PASS。 只要半自动链路训练成功训练 DisplayPort 链路、就会设置此字段。

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

    从外观上看、器件的布线时间存在问题。

    您是否已使用 DSI86寄存器计算器电子表格。 可以在 E2E 主题中找到电子表格: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/945404/faq-sn65dsi86-how-do-i-programming-the-sn65dsi86-registers

    此外、还可以查看以下常见问题解答: https://e2e.ti.com/support/interface-group/interface/f/interface-forum/945403/faq-sn65dsi86-sn65dsi86-black-screen-debugging-guide?tisearch=e2e-sitesearch&keymatch=sn65dsi86