Other Parts Discussed in Thread: AM62P
部件号: AM62P
1\物理连接

2\代码配置
panel-simple.c



dtsi

3\\n 请帮助检查此配置是否有任何问题。 为什么转换器芯片通过 DPI BT1120 接收数据格式? 您能否提供 DPI 的一些示例配置供我参考?
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.
尊敬的 Zijian:
在这方面、我们将利用专家的帮助。
在此之前、请提供更多详细信息吗?
1.您是否可以分享这样的连接系统图表?

2.您是否需要澄清对这两张之前需要的门票所做的更改? 它将帮助我们知道为什么您需要多种显示 BT656 DPI。
AM62P-Q1:DPI 输出 BT656 — 处理器论坛-处理器 — TI E2E 支持论坛
AM62P-Q1:AM62P52:具有隔行扫描模式的 BT656 — 处理器论坛-处理器 — TI E2E 支持论坛
3.请告诉我们您需要这项新功能的项目? 该功能的里程碑是什么?
非常感谢!
Yong
尊敬的 Zijian:
请参阅此 【常见问题解答】AM62P:在 DSS 中启用 BT.656 模式 、以实现 BT.656 逐行和逐行扫描模式。 您的同事已经验证了这两种模式补丁。
如果这些补丁已经到位、并且您仍然看到 BT1120、请将所有代码 diff(作为 git diff)与这些补丁共享、并分享您如何在 BT656 中验证 BT1120 信号。
你(们)好
我已根据以前的门票修改并修改了代码。 该 txt 文件包含我的修改内容。 参考 panel-simple.c 中的 BT656 修改、我更改了时序参数和间隔模式。 LT9211C 供应商拥有一个主机计算机工具,可以通过 I2C 直接捕获在 SoC 端配置的 CLK 和数据格式。
您好、
使用 kmsprint 进行检查时、它仍然显示一个 DSI 连接。 实际上、当前板使用 DPI 连接。 应如何修改器件树?

当前 LT9211C 设备树配置
e2e.ti.com/.../k3_2D00_am62p5_2D00_sk_2D00_dsi_2D00_LT9211C.txt
尊敬的 Zijian:
请重新检查寄存器地址。
DPI 输出本身不需要兼容的电桥、因为其时序参数是硬编码的、实际上不会检查是否连接了物理电桥/面板。
因此、将电桥连接到 DPI 输出可能需要、也可能不需要探测电桥驱动器、这取决于您的电桥。 请咨询您的网桥供应商和社区论坛以获取此信息。
还请与 正确的 devmem2 命令共享“kmsprint --device=/dev/dri/by-path/platform-30200000.dss-card “的输出。
你(们)好
抱歉、 我不太确定如何检查、在手册中找不到相关的寄存器地址 。
此外、我检查了 kmsprint 输出信息、可能仍然存在一些问题。 我需要您的帮助、以检查启用 DPI 输出(如 BT656)的器件树配置。
无法上传具有.dts 和.patch 扩展名的文件、因此我将其更改为.txt 格式。
e2e.ti.com/.../dts_5F00_change.txt
e2e.ti.com/.../8688.k3_2D00_am62p5_2D00_sk_2D00_dsi_2D00_LT9211C.txt
尊敬的 Zijian:
我看到您尝试为 DPI 输出配置 DSS1VP2。 请问是否有具体原因、为什么不使用默认的 DSS0VP2?
为此、您还需要更改正确路由的 MUX 选择值、但尚未在 DTS 中完成此操作。
请看这张照片
[/报价]该寄存器值 会验证 DSS0VP2 是否在 BT656 隔行扫描模式下运行、而不是在 BT1120 下运行。 我假设这是使用我之前提到的 bt656 补丁。
如果您将 DT 更改为具有 DSS1VP2 而不是 DSS0VP2 的 DPI 输出、则不确定为什么会看到此消息。 对于 DSS1VP2、应检查寄存器 0x3022b000。[/quote]抱歉、 我不太确定如何检查、在手册中找不到相关的寄存器地址 。
[/报价]我表示从您连接到面板的 SoC 输出探测 VOUT0_DATA10 系列 DPI 通道。
你(们)好
在上一电路板上、有一个 tp2803 占用了 DSS0VP2、因此使用了 DSS1VP2。 当前主板没有 tp2803、因此 DSS0VP2 可用于 LT9211C 链路。 使用 DSS0VP2 时、kmsprint 仍显示如下内容。 我想询问编码器 0 (40) 是否正常显示无、以及 768x576i 分辨率配置在何处? 我在 panel-simple.c 中找不到它

您好、
您能否分享以下输出:
kmsprint --device=/dev/dri/by-path/platform-30200000.dss-card kmsprint --device=/dev/dri/by-path/platform-30220000.dss-card
为此、您还需要更改正确路由的 MUX 选择值、但尚未在 DTS 中完成此操作。
[/报价]若要获取有关如何执行此操作的参考、请参阅以下图像和补丁 (t 他的示例显示了 DSS1VP1 而不是 DSS1VP2 配置 )。 您可以相应地进行修改:
diff --git a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi index 25e7c3797..035da4f4e 100644 --- a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi @@ -1153,9 +1153,8 @@ dss0: dss@30200000 { <&k3_pds 243 TI_SCI_PD_EXCLUSIVE>, /* OLDI0 */ <&k3_pds 244 TI_SCI_PD_EXCLUSIVE>; /* OLDI1 */ clocks = <&k3_clks 186 6>, - <&dss0_vp1_clk>, - <&k3_clks 186 2>; - clock-names = "fck", "vp1", "vp2"; + <&dss0_vp1_clk>; + clock-names = "fck", "vp1"; interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; ti,clk-ctrl = <&dss_clk_ctrl>; status = "disabled"; @@ -1202,31 +1201,16 @@ dss1: dss@30220000 { <0x00 0x30221000 0x00 0x1000>; /* common1 */ reg-names = "common", "vidl1", "vid", "ovr1", "ovr2", "vp1", "vp2", "common1"; - power-domains = <&k3_pds 232 TI_SCI_PD_EXCLUSIVE>, /* DSS0 */ + power-domains = <&k3_pds 232 TI_SCI_PD_EXCLUSIVE>, /* DSS1 */ <&k3_pds 244 TI_SCI_PD_EXCLUSIVE>; /* OLDI1 */ clocks = <&k3_clks 232 8>, - <&dss1_vp1_clk>, + <&k3_clks 232 0>, <&k3_clks 232 4>; clock-names = "fck", "vp1", "vp2"; interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>; ti,clk-ctrl = <&dss_clk_ctrl>; status = "disabled"; - oldi-transmitters { - #address-cells = <1>; - #size-cells = <0>; - - oldi1_dss1: oldi@1 { - reg = <1>; - clocks = <&k3_clks 232 0>; - clock-names = "serial"; - ti,oldi-io-ctrl = <&dss_oldi_io_ctrl>; - status = "disabled"; - - oldi1_dss1_ports: ports { - }; - }; - }; dss1_ports: ports { #address-cells = <1>; diff --git a/arch/arm64/boot/dts/ti/k3-am62p.dtsi b/arch/arm64/boot/dts/ti/k3-am62p.dtsi index 6f1125186..1555eea3f 100644 --- a/arch/arm64/boot/dts/ti/k3-am62p.dtsi +++ b/arch/arm64/boot/dts/ti/k3-am62p.dtsi @@ -156,14 +156,6 @@ dss0_vp1_clk: clock-divider-oldi-dss0 { clock-mult = <1>; }; - dss1_vp1_clk: clock-divider-oldi-dss1 { - compatible = "fixed-factor-clock"; - clocks = <&k3_clks 232 0>; - #clock-cells = <0>; - clock-div = <7>; - clock-mult = <1>; - }; - #include "k3-am62p-j722s-common-thermal.dtsi" }; diff --git a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts index 740c25d92..aa12ab9ab 100644 --- a/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts +++ b/arch/arm64/boot/dts/ti/k3-am62p5-sk.dts @@ -41,10 +41,11 @@ chosen { framebuffer0: framebuffer@0 { compatible = "simple-framebuffer"; - power-domains = <&k3_pds 186 TI_SCI_PD_EXCLUSIVE>; + power-domains = <&k3_pds 186 TI_SCI_PD_EXCLUSIVE>, + <&k3_pds 232 TI_SCI_PD_EXCLUSIVE>; clocks = <&k3_clks 186 6>, <&dss0_vp1_clk>, - <&k3_clks 186 2>; + <&k3_clks 232 0>; display = <&dss0>; status = "disabled"; }; @@ -160,6 +161,16 @@ vddshv_sdio: regulator-3 { bootph-all; }; + panel { + compatible = "newhaven,nhd-4.3-480272ef-atxl"; + port { + panel_in: endpoint { + remote-endpoint = <&dss1_dpi0_out>; + }; + }; + }; + + leds { compatible = "gpio-leds"; pinctrl-names = "default"; @@ -219,6 +230,7 @@ sound_master: simple-audio-card,codec { }; hdmi0: connector-hdmi { + status = "disabled"; compatible = "hdmi-connector"; label = "hdmi"; type = "a"; @@ -575,6 +587,7 @@ exp2: gpio@23 { sii9022: bridge-hdmi@3b { compatible = "sil,sii9022"; + status = "disabled"; reg = <0x3b>; interrupt-parent = <&exp1>; interrupts = <16 IRQ_TYPE_EDGE_FALLING>; @@ -594,7 +607,7 @@ port@0 { reg = <0>; sii9022_in: endpoint { - remote-endpoint = <&dss0_dpi1_out>; + remote-endpoint = <&dss1_dpi0_out>; }; }; @@ -884,17 +897,28 @@ &dss_oldi_io_ctrl { &dss0 { bootph-all; status = "okay"; - pinctrl-names = "default"; - pinctrl-0 = <&main_dpi_pins_default>; }; &dss0_ports { /* DSS0-VP2: DPI/HDMI Output */ - hdmi0_dss: port@1 { - reg = <1>; +}; + +&dss1 { + bootph-all; + status = "okay"; + pinctrl-names = "default"; + pinctrl-0 = <&main_dpi_pins_default>; + assigned-clocks = <&k3_clks 241 0>, <&k3_clks 245 0>; + assigned-clock-parents = <&k3_clks 241 2>, <&k3_clks 245 2>; +}; + +&dss1_ports { + /* DSS1-VP0: DPI/HDMI Output */ + hdmi0_dss: port@0 { + reg = <0>; - dss0_dpi1_out: endpoint { - remote-endpoint = <&sii9022_in>; + dss1_dpi0_out: endpoint { + remote-endpoint = <&panel_in>; }; }; }; diff --git a/drivers/gpu/drm/tidss/tidss_dispc.c b/drivers/gpu/drm/tidss/tidss_dispc.c index e0adf8fe4..3274f809b 100644 --- a/drivers/gpu/drm/tidss/tidss_dispc.c +++ b/drivers/gpu/drm/tidss/tidss_dispc.c @@ -493,7 +493,7 @@ const struct dispc_features dispc_am62p52_feats = { .vp_name = { "vp1", "vp2" }, .ovr_name = { "ovr1", "ovr2" }, .vpclk_name = { "vp1", "vp2" }, - .vp_bus_type = { DISPC_VP_INTERNAL, DISPC_VP_INTERNAL }, + .vp_bus_type = { DISPC_VP_DPI, DISPC_VP_INTERNAL }, .vp_feat = { .color = { .has_ctm = true,
关于 576i、很可能是一些配置问题。 请分享前面提到的 kmsprint 结果。
你(们)好
我想我已经调试了 DPI 链路。 请帮助我检查它是否正常工作。

LT9211C 设备树修改如下
e2e.ti.com/.../8540.k3_2D00_am62p5_2D00_sk_2D00_dsi_2D00_LT9211C.txt
另一次 tp2803fe 器件树 修改如下
e2e.ti.com/.../k3_2D00_am62p5_2D00_sk_2D00_bt656_2D00_tp2803fe.txt
你(们)好
我想将 DPI 信号输出到 LT9211C 器件。 我应该如何继续?
[/报价]我不确定您是否拥有具有所需输出的正确数据路径架构。 在您发送的最后一个 DPI-1、DPI-2 控制台日志中、它似乎与您所设置的内容一致:DSS0 上的 NTSC 分辨率和 DSS1VP2 上的 1200x800 分辨率、它们可以正确反映在您的日志中。
您能否编辑 我之前分享的 AM62P 方框图 、以显示什么 DSS、您希望使用的 VP 以及在哪些引脚上连接桥接器?
但升级固件后、kmsprint不确定您所指的固件、但如果是网桥固件、请咨询您的网桥供应商。
[/quote]
你(们)好
合并修改后、可以正确识别 DPI/编码器/分辨率等信息。 寄存器 0x3020b000 的值为 0x01100000、并正常启用 bt656 数据格式。 我知道配置的第一步是成功的。

在添加 LT9211C 驱动程序并将相关配置整合到设备树中后,在此过程中添加了调试日志。 发现 LT9211C 驱动程序已成功加载。 但是、kmsprint 显示的信息不完整、就好像网桥 lt9211c 导致连接中断一样。 您能否帮助检查配置可能不正确的位置?

dmesg 日志
lt9211c 驱动程序代码
e2e.ti.com/.../LT9211C_5F00_Main.ce2e.ti.com/.../LT9211C_5F00_Drv.c
lt9211c dts 配置
e2e.ti.com/.../1754.k3_2D00_am62p5_2D00_sk_2D00_dsi_2D00_LT9211C.txt
k3-am62p5-sk.dts 包括 lt9211c

原理图连接



你(们)好
添加 lt9211 驱动程序代码
您好、
从布线路径的角度来看、DTS 似乎正确、即使 DTS 定义也取决于桥接驱动器。 另请注意、该 桥接驱动器负责将面板分辨率返回到 DRM 框架(之前由面板简单驱动程序完成)。 我还看到、您的 DT 显示有一个面板连接到您的电桥输出、而在您的硬件中、两者之间有一个 SERDES(不确定它是否也需要在显示链路径中)。
此时、似乎电桥驱动器没有共享您连接到其输出的面板简单参数。
所有这些都需要与网桥供应商保持一致、因为他们的驱动程序与 DSS 驱动程序通信、而不是面板简单的驱动程序。