1. Linux 提供了 PCI 配制全局控制宏参数 CONFIG_PCI,它控制着 PCI
控制器和设备是否能够被配制的流程,因此该宏值需要被设置成“Y”。
2. 对于某些处理器来说,比如 PPC85XX、PPC83XX 等,它们提供了两
个或者更多的 PCI 控制器,因此在 con'g 文件中专门提供了诸如
CONFIG_MPC85xx_PCI2、CONFIG_MPC83xx_PCI2 等宏参数,它
们控制着第二个(或更多的)PCI 控制器的配置流程,因此如果需要使
用第二个(或更多的)PCI 控制器时,需要将相应的宏值设置成“Y”。
在编译内核之前,如果在 con'g 文件中提供了以上宏参数的设置,则编译出
来的内核映像提供了对于 PCI 支持的功能。
PCI 相关数据结构
Linux 提供了三类数据结构用以描述 PCI 控制器、PCI 设备以及 PCI 总线。
PCI 控制器
PCI 控制器用 pci_controller 结构来描述,它有以下几个主要的属性:
index:该属性标志 PCI 控制器的编号。
next:该属性指向下一个 PCI 控制器,通过 next 属性,PCI 控制器可
以形成一个单向链表。
'rst_busno:该属性标志了连接在该控制器上第一条总线的编号。
last_busno:该属性标志了连接在该控制器上最后一条总线的编号。
ops:该属性标志了当前 PCI 控制器所对应的 PCI 配制空间读写操作函
数。
io_space:该属性标志了当前 PCI 控制器所支持的 IO 地址空间。
mem_space:该属性标志了当前 PCI 控制器所支持的 Memory 地址
区间。
cfg_addr:该属性标志了当前 PCI 控制器发起 Con'guration 访问方
式时所需要写入的地址空间。
cfg_data:该属性标志了当前 PCI 控制器发起 Con'guration 访问方
式时所需要读写的数据空间。
bus:该属性标志了当前 PCI 控制器所连接的 PCI 总线,它对应的数据
结构是 pci_bus。
PCI 总线
PCI 总线用 pci_bus 结构来描述,它有以下几个主要的属性:
parent:可通过该属性索引到上层 PCI 总线。
self:该属性标志了连接的上行 PCI 桥(对应的数据结构是
pci_dev)。
children:该属性标志了总线连接的所有 PCI 子总线链表。