drivers/pci 源码目录、构建配置与模块索引

drivers/pci 源码目录、构建配置与模块索引

1. 范围与规模

源码基准为 rk3588/kernel-6.1/drivers/pci/。本树包含约 177 个 C 文件和 23 个内部头文件,既有跨架构 PCI Core,也有平台控制器、Endpoint、热插拔及 PCIe 端口服务。目录名虽为 PCI,但现代系统中的主要硬件通常是 PCI Express。

2. 顶层常驻 Core

CONFIG_PCI=y 时,顶层 Makefile固定编入:

文件 主要职责
access.c 配置空间读写、访问锁和用户态配置访问
bus.c pci_bus资源窗口、设备加入和总线遍历
probe.c Host Bridge 注册、BDF 扫描、pci_dev创建及桥递归
host-bridge.c Host Bridge 窗口和固件节点辅助
remove.c 设备停止、注销及子总线逆序拆除
pci.c 设备使能、电源、状态保存、复位、PCIe Capability 通用操作
pci-driver.c pci_bus_type、ID 匹配、probe/remove、PM 和错误回调
search.c 在已枚举对象中按 BDF、ID、Class 查找;不探测硬件
pci-sysfs.c 设备、总线、资源、配置空间及控制属性
rom.c Expansion ROM 资源与映射
setup-res.c 单设备 BAR 分配、写回和资源 claim
setup-bus.c 全拓扑桥窗口 sizing 与未分配资源处理
irq.csetup-irq.c INTx 路由及 IRQ 分配
vpd.c Vital Product Data 访问
vc.c PCIe Virtual Channel
mmap.c PCI 资源映射辅助

CONFIG_PCI还递归进入msi/pcie/,但其中对象继续受各自 Kconfig 控制。

3. 顶层条件模块

配置 文件/目录 功能
CONFIG_OF of.c DT ranges、bus-range、IRQ 等解析
CONFIG_ACPI pci-acpi.c ACPI companion、PM、_OSC 等协作
CONFIG_PCI_QUIRKS quirks.c Header/Final/Early/Enable/Resume fixup
CONFIG_HOTPLUG_PCI hotplug/ 热插拔 Core 及各类控制器
CONFIG_PCI_ATS ats.c ATS、PRI、PASID
CONFIG_PCI_IOV iov.c SR-IOV PF/VF
CONFIG_PCI_ECAM ecam.c Enhanced Configuration Access Mechanism
CONFIG_PCI_P2PDMA p2pdma.c PCIe Peer-to-Peer DMA
CONFIG_PCI_DOE doe.c Data Object Exchange mailbox
CONFIG_VGA_ARB vgaarb.c Legacy VGA 资源仲裁
CONFIG_PROC_FS proc.c /proc/bus/pci兼容接口

4. 子目录地图

子目录 定位
pcie/ PCIe Port Bus、AER、DPC、PME、ASPM、PTM、RCEC、EDR
msi/ MSI/MSI-X 描述符、IRQ domain 和向量生命周期
hotplug/ pciehp、ACPI、SHPC、GPIO 及架构专用热插拔
endpoint/ EPC、EPF、ConfigFS 和测试/NTB Function
controller/ Host/Endpoint 控制器平台驱动
controller/dwc/ Synopsys DesignWare 公共 Host/EP 层及平台 glue
controller/cadence/mobiveil/ 其它 PCIe IP 公共层
switch/ Switchtec 等 PCIe Switch 管理驱动

5. RK3588 实际重点

Rockchip defconfig 启用CONFIG_PCICONFIG_PCIEPORTBUS、ASPM、CONFIG_PCIE_ROCKCHIP_HOSTCONFIG_PCIE_DW_ROCKCHIP。其中:

  • RK3588 RC 主路径:controller/dwc/pcie-dw-rockchip.c
  • DWC 公共层:pcie-designware.cpcie-designware-host.c
  • Endpoint:部分配置启用pcie-dw-ep-rockchip.c
  • pcie-rockchip-host.c是较早 Rockchip PCIe IP 路线,不能与 RK3588 DWC 路线混为一谈;
  • x86、PowerPC、s390 等平台专用控制器和热插拔文件虽然在源码树中,但不会因“位于该目录”就在 RK3588 上运行。

6. 阅读顺序

建议按controller -> DWC Host -> probe -> setup-bus/setup-res -> bus -> pci-driver理解启动主链,再分别进入 MSI、PCIe 端口服务、PM/错误恢复和 Endpoint。只从probe.c开始会看不到配置事务如何由 RK3588 控制器真正发出。

文章互动

阅读 --

留言

0 条留言

正在加载留言…