PCI裝置有提供IO和MMIO的方式可以存取,但是在資源還沒有分配的時候,還是只能透過IO進行讀寫。
要從IO去存取PCI BUS上的裝置,需要透過PCI 的兩個 IO port,address port(0xcf8) and data port(0xcfc)。在address port 的位置寫入要存取的PFA(PCI function address),即可對目標的暫存器進行讀寫。
PFA由PCI裝置的BUS[23:16]、DEVICE[15:11]、FUNCTION[10:8]和REG offset[7:2]組成。[31]固定填1。
根據位元數決定最大支援多少BUS,或裝置。
Bit[31]: It is an enable flag for determining when accesses to CONFIG_DATA are to be translated to configuration transactions on the PCI bus.
Bit[30:24]: Reserved
Bit[23:16]: Bits 23 through 16 choose a specific PCI bus in the system.
Bit[15:11]: Bits 15 through 11 choose a specific device on the bus.
Bit[10:8]: Bits 10 through 8 choose a specific function in a device.
Bit[7:2]: Bits 7 through 2 choose a DWORD in the device's Configuration Space.
Bit[1:0]: Bits 1 and 0 are read-only and must return 0's when read.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
在PCI SCAN後要完成 Configuration setting 和 Linking list of PCI device的建立。在這個LIST裡面,每個NODE都是一個PCI device,SCAN的過程中就要去設置好PCI裝置的組態
沒有留言:
張貼留言