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.

[参考译文] AM67A:有关 Linux PCIe 驱动程序的问题

Guru**** 2460850 points
Other Parts Discussed in Thread: AM67

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1480366/am67a-question-about-linux-pcie-driver

器件型号:AM67A
Thread 中讨论的其他器件:AM67

工具与软件:

我们要使用 AM67x Linux PCIe 驱动程序–用于与 FPGA 连接。 IP 或驱动程序是否根据活动自动切换到相应的 L 状态(L0s–L3)?

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

    做出权衡

    来自 AM67/J722S/J7AEN 的技术参考手册、网址为 https://www.ti.com/product/AM67:

    12.2.2.1.1 PCIe 子系统特性

    • PCI 电源管理状态:

    –L1电源管理子状态支持
    –器件电源管理状态 D0、D1、D3Hot

     

    12.2.2.1.2 PCIe 子系统不支持的特性

    • L2电源状态

     

    12.2.2.3.3 PCIe 子系统电源管理

    • PCIe 具有多种电源管理协议。 其中一些函数由硬件调用、例如活动状态电源管理(ASPM)、而其他函数则通过软件更高级别地激活。
    • 支持链路电源状态 L0、L0s、L1、L1。
    • 如果启用了 ASPM L0s、则由 PCIe 内核管理 L0s 的进入和退出。
    • 如果启用了 ASPM L1、PCIe 内核也会管理 L1的进入和退出。 软件可以通过写入 PCIe 子系统中的 PCIe_USER_PMCMD[0] CLIENT_REQ_EXIT_L1位来强制退出 L1。 也可以通过设置 PCIe_USER_PMCMD[0] CLIENT_REQ_EXIT_L1位来阻止进入 L1。
    • 要支持 L1、需要将 CLKREQ 引脚连接到远程对等器件。 当链路处于 L1且 CLKREQ 引脚置为无效时、进入 L1电源状态。 软件可以通过写入 PCIe_USER_PMCMD[0] CLIENT_REQ_EXIT_L1或 PCIe_USER_PMCMD[1]来强制从 L1退出

    PCIe 子系统中的 CLIENT_REQ_EXIT_L1_SUBSTATE 位。

     

    可以使用启用或禁用 Linux 中的 ASPM CONFIG_PCIEASPM config。 Linux 有一个独立于 PCIe 控制器驱动程序的专用 ASPM 驱动程序。 PCIe 控制器驱动程序向 PCIe 子系统以及 ASPM 驱动程序公开 API、从而允许对包含 ASPM 特定寄存器的 PCIe 配置空间进行读取和写入、从而实现链路状态转换。

     

    根据系统的节能策略、ASPM 驱动程序中的以下函数将转换为相应的链接电源状态:
    https://github.com/torvalds/linux/blob/v6.13/drivers/pci/pcie/aspm.c#L269