【发布时间】:2018-03-14 07:47:33
【问题描述】:
我正在为基于 ARM 的定制平台开发 PCIe 驱动程序。作为起点,我已经开始研究 Linux 内核 4.15.9 代码。我无法找到相关的 PCIe 驱动程序文件。特别是我对 PCIe 设备枚举和配置感兴趣。在这方面的任何帮助将不胜感激。
【问题讨论】:
标签: linux-kernel arm linux-device-driver pci-e
我正在为基于 ARM 的定制平台开发 PCIe 驱动程序。作为起点,我已经开始研究 Linux 内核 4.15.9 代码。我无法找到相关的 PCIe 驱动程序文件。特别是我对 PCIe 设备枚举和配置感兴趣。在这方面的任何帮助将不胜感激。
【问题讨论】:
标签: linux-kernel arm linux-device-driver pci-e
PCIe 驱动代码分为 4 个部分。
1 - PCIe 子系统代码
这是负责总线扫描的通用 PCIe 子系统代码, MSI分配、BAR分配等
路径 - 驱动程序/pci/*
2 - PCIe 主机控制器 IP 通用代码
这是特定于主机控制器的。这意味着对于某个主机 在一个平台中,PCIe 子系统将通过提供的 API 进行通信 通过这段代码。
路径 - 驱动程序/pci/dwc/*
示例 - DWC 主机
注意 - 并非所有控制器制造商都有像 DWC 这样的单独文件夹 (概要)。
3 - PCIe 主机控制器初始化平台特定代码
这是特定于 PCIe IP 的,它将特定于 SoC。 每个 SoC 都有自己的芯片特定代码来初始化 控制器。所以这部分的API会被“PCIe主机”使用 通用代码”
路径 - 驱动程序/pci/host/*
4 - PCIe 功能
此代码段包含 AER、DPC 等功能处理。 APM, 等等
路径 - 驱动程序/pci/pcie/*
【讨论】: