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.

[参考译文] AM69:PCIe REFCLK OUT 和 ACSPCIE 映射

Guru**** 2455560 points
Other Parts Discussed in Thread: AM69

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1484211/am69-pcie-refclk-out-and-acspcie-mappings

器件型号:AM69

工具与软件:

您好、TI 专家:
我们有基于 AM69 SoC 的定制硬件、打算使用 PCIe_SOC_REFCLK0_OUT、PCIE_SOC_REFCLK1_OUT、PCIE_SOC_REFCLK2_OUT 和 PCIE_SOC_REFCLK3_OUT 引脚为 PCIe 器件提供基准时钟。
根据 AM69 TRM 和来自 J784S4 EVM 板的补丁、我确定需要在器件树中启用 ACSPCIE0和 ACSPCIE1模块(下面的补丁)。

我有以下问题:

  1. 对于 PCIe3_RC (PCIe@2930000)节点、PCIe 参考时钟仅在 ti、syscon-acspcie-proxy-ctrl =<&acspcie0_proxy_ctrl 0x3>时起作用。 同样、PCIe2_RC (PCIe@2920000)节点是否应该具有 ti、syscon-acspcie-proxy-ctrl =<&acspcie1_proxy_ctrl 0x3>?  当 bit-mask 为0x2或0x1而不是0x3时、PCIe 参考时钟不起作用。

    此配置是否正确? 另外、如何为每个 SERDES 映射 ACSPCIE 时钟缓冲器?

  2. 尽管在实际硬件上 PCIe 参考时钟在100MHz 上运行、k3conf 转储时钟命令会将所有 DEV_BOARD0_PCIe_REFCLK*值显示为0。 您能解释一下为什么会发生这种情况吗?

日志: /cfs-file/__key/communityserver-discussions-components-files/791/Aquila_5F00_AM69_5F00_PCIe_5F00_Tests_5F00_with_5F00_Internal_5F00_PCIE_5F00_REFCLK_5F00_Console_5F00_Logs.txt

补丁:

From 889e4f447920cba44bc61a6fb4e9f3a4545bdc1d Mon Sep 17 00:00:00 2001
From: Parth Pancholi <parth.pancholi@toradex.com>
Date: Fri, 7 Mar 2025 11:02:20 +0100
Subject: [PATCH 1/2] arm64: dts: ti: k3-j784s4-main: Enable ACSPCIE0 output
 for PCIe3

The PCIe reference clock required by the PCIe Endpoints corresponding to the
PCIe3 instance could be driven by the ACSPCIE0 module. Add the device-tree
support for enabling the same.

TODO: bitmask 0x3 for '<&acspcie0_proxy_ctrl 0x3>' is not clear.

Upstream-Status: Pending
Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com>
---
 arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
index ab4a8c4444bb..f7557d2341e6 100644
--- a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
@@ -1205,11 +1205,12 @@ pcie3_rc: pcie@2930000 {
 		interrupts = <GIC_SPI 354 IRQ_TYPE_EDGE_RISING>;
 		device_type = "pci";
 		ti,syscon-pcie-ctrl = <&pcie3_ctrl 0x0>;
+		ti,syscon-acspcie-proxy-ctrl = <&acspcie0_proxy_ctrl 0x3>;
 		max-link-speed = <3>;
 		num-lanes = <2>;
 		power-domains = <&k3_pds 335 TI_SCI_PD_EXCLUSIVE>;
-		clocks = <&k3_clks 335 0>;
-		clock-names = "fck";
+		clocks = <&k3_clks 335 0>, <&serdes0 CDNS_TORRENT_REFCLK_DRIVER>;
+		clock-names = "fck", "pcie_refclk";
 		#address-cells = <3>;
 		#size-cells = <2>;
 		bus-range = <0x0 0xff>;
-- 
2.34.1


From 30642b45b151a52c4ad08a73177db0ddd4962112 Mon Sep 17 00:00:00 2001
From: Parth Pancholi <parth.pancholi@toradex.com>
Date: Fri, 7 Mar 2025 11:14:34 +0100
Subject: [PATCH 2/2] arm64: dts: ti: k3-j784s4-main: Enable ACSPCIE1 output
 for PCIe0 and PCIe2

The PCIe reference clock required by the PCIe Endpoints corresponding to the
PCIe0 and PCIe2 instances could be driven by the ACSPCIE1 module. Add the
device-tree support for enabling the same.

TODO: bitmask 0x3 for '<&acspcie1_proxy_ctrl 0x3>' is not clear.

Upstream-Status: Pending
Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com>
---
 arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
index f7557d2341e6..46ea13f049b7 100644
--- a/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j784s4-main.dtsi
@@ -147,6 +147,11 @@ acspcie0_proxy_ctrl: acspcie0-ctrl@1a090 {
 			reg = <0x1a090 0x4>;
 		};
 
+		acspcie1_proxy_ctrl: acspcie1-ctrl@1a094 {
+			compatible = "ti,j784s4-acspcie-proxy-ctrl", "syscon";
+			reg = <0x1a094 0x4>;
+		};
+
 		serdes_ln_ctrl: mux-controller@4080 {
 			compatible = "reg-mux";
 			reg = <0x00004080 0x30>;
@@ -1117,11 +1122,12 @@ pcie0_rc: pcie@2900000 {
 		interrupts = <GIC_SPI 318 IRQ_TYPE_EDGE_RISING>;
 		device_type = "pci";
 		ti,syscon-pcie-ctrl = <&pcie0_ctrl 0x0>;
+		ti,syscon-acspcie-proxy-ctrl = <&acspcie1_proxy_ctrl 0x1>;
 		max-link-speed = <3>;
 		num-lanes = <4>;
 		power-domains = <&k3_pds 332 TI_SCI_PD_EXCLUSIVE>;
-		clocks = <&k3_clks 332 0>;
-		clock-names = "fck";
+		clocks = <&k3_clks 332 0>, <&serdes1 CDNS_TORRENT_REFCLK_DRIVER>;
+		clock-names = "fck", "pcie_refclk";
 		#address-cells = <3>;
 		#size-cells = <2>;
 		bus-range = <0x0 0xff>;
@@ -1176,11 +1182,12 @@ pcie2_rc: pcie@2920000 {
 		interrupts = <GIC_SPI 342 IRQ_TYPE_EDGE_RISING>;
 		device_type = "pci";
 		ti,syscon-pcie-ctrl = <&pcie2_ctrl 0x0>;
+		ti,syscon-acspcie-proxy-ctrl = <&acspcie1_proxy_ctrl 0x3>;
 		max-link-speed = <3>;
 		num-lanes = <2>;
 		power-domains = <&k3_pds 334 TI_SCI_PD_EXCLUSIVE>;
-		clocks = <&k3_clks 334 0>;
-		clock-names = "fck";
+		clocks = <&k3_clks 334 0>, <&serdes1 CDNS_TORRENT_REFCLK_DRIVER>;
+		clock-names = "fck", "pcie_refclk";
 		#address-cells = <3>;
 		#size-cells = <2>;
 		bus-range = <0x0 0xff>;
-- 
2.34.1


谢谢你。

此致、

Parth P

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

    尊敬的 PARTH:

    很高兴再次见到您。

    ACSPCIE 到 PCIe*的映射应为:

    • PCIe0 -> ACCIE1 PAD0
    • PCIe1 -> ACCDIE0 PAD0
    • PCIe2 -> ACCPCIIE1 PAD1
    • PCIe3 -> ACCDIE0 PAD1

    值 0x2对于 PAD1也应该适用、但 值0x3也应该合适... 如果0x2无法正常工作、但0x3可以正常工作、那么我能想象的是、这些位正在被覆盖、因为每个 ACSPCIe 实例支持两个接口。

    至于 k3conf、设置 ACSPCIe 时钟应该没问题。

    此致、

    Takuma

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



    很高兴听到您的反馈!

    感谢您共享映射信息。

    值 0x2对于 PAD1也应适用、但 值0x3也可以接受... 如果0x2无法正常工作但0x3正常工作、那么我能想象的是位正在被覆盖、因为每个 ACSPCIe 实例支持两个接口。[/QUOT]

    您能否说明一下"位被覆盖"是什么意思? 您是否指的是 PAD0和 PAD1配置被覆盖?
    如果我们需要同时启用 PAD0和 PAD1时钟、是否应该将 ACSPCIE* CTRL_MMR 寄存器的最后两位设置为11b (0x3)? 这是正确的理解吗?

    对于 k3conf、如果设置了 ACSPCIe 时钟、则应该没问题。

    此外、是否有任何已知的限制或问题导致转储时钟不能为 DEV_BOARD0_PCIe_REFCLK*正常工作?

    当我们计划在我们的硬件中使用 AM69 SoC 的 PCIe 参考时钟时、这些细节对于我们充分理解至关重要。

    谢谢你。

    此致、

    Parth P

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

    尊敬的 PARTH:

    是的、PAD0和 PAD1的最后两位。 位0控制 PAD0、位1控制 PAD1。

    k3conf 读取 TISCI API 中定义的所有时钟。  我认为我们不会在 devicetree 中设置 DEV_BOARD0_PCIe_REFCLK*、这也不会在 TISCI 初始化期间默认为一个值。 因此、这是0。  

     定制硬件上的参考时钟当前是否存在问题、这就是需要详细信息的原因吗?

    此致、

    Takuma

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

    感谢您的澄清;这是有帮助的。

    此时、在针对不同 PCIe 端点器件使用每个 PCIe 基准时钟执行的初始测试中、我没有遇到任何明显的问题。

    我打算从软件的角度探讨这些主题、目的是验证预期的配置、并确保通过正确的配置设置正确生成时钟。

    此致、

    Parth P

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

    尊敬的 PARTH:

    我懂了。 我会 将该主题标记为已解决、但如果出现问题、请随时重新打开或创建新主题。

    此致、

    Takuma