fuchsia.hardware.pci

新增時間:15 張

通訊協定

公車

fuchsia.hardware.pci/pci.fidl

Bus 通訊協定會在提供服務的 PCI 上提供 PCI 裝置子項相關資訊。

GetDevices

擷取公車上所有裝置。

要求

<EMPTY>

回應

名稱類型
devices vector<PciDevice>[64]

GetHostBridgeInfo

擷取公車涵蓋的路段群組和公車資訊。

要求

<EMPTY>

回應

名稱類型
info HostBridgeInfo

ReadBar

從裝置的基地位址暫存器 (BAR) 讀取。BAR 必須是 MMIO 類型。

參數 |device|:要讀取的裝置位址。 |bar_id|:要讀取的 BAR ID。 |offset|:開始讀取的偏移值 (以位元組為單位),預設值為 0 個位元組。|size|:讀取的大小 (預設值:128 個位元組)。讀取的大小上限為 |READBAR_MAX_SIZE|。

錯誤: |ZX_ERR_NOT_FOUND|: |device| 找不到 | device| 或 |bar_id| 不存在於 |device| 中。 |ZX_ERR_INVALID_ARGS|: |bar_id| 無效,或偏移與大小組合在指定的 BAR 大小上無效。 |ZX_ERR_NOT_SUPPORTED|:|bar_id| 指定的 BAR 並非 MMIO BAR。

要求

名稱類型
device Address
bar_id uint8
offset uint64
size uint64

回應

名稱類型
payload Bus_ReadBar_Result

裝置

定義於 fuchsia.hardware.pci/pci.fidl

AckInterrupt

提醒匯流排驅動程式,停止宣告已產生的舊版中斷情形,使其再次等候。只有在使用 |PCI_INTERRUPT_MODE_LEGACY| 呼叫 |SetInterruptMode| 時才會用到。

錯誤: |ZX_ERR_BAD_STATE|:裝置未設定使用舊版中斷模式。

要求

<EMPTY>

回應

名稱類型
payload Device_AckInterrupt_Result

GetBar

擷取指定基本地址註冊 (BAR) 的資訊。如果 BAR 包含 MSI-X 能力資料表,系統會盡可能傳回排除這些資料表的 MMIO 區域。否則會傳回錯誤。

參數: |bar_id|:所要求 BAR 的 ID。有效範圍為 [0, 6]。

錯誤:|ZX_ERR_ACCESS_DENIED|:由於有 MSI-X 資料表,指定的 BAR 沒有驅動程式庫存取的區域。如要使用 MSI-X,請參閱 |SetInterruptMode| 方法。 |ZX_ERR_INTERNAL|:匯流排驅動程式發生錯誤。 |ZX_ERR_INVALID_ARGS|:指定的 |bar_id| 超出可接受的範圍。 |ZX_ERR_NOT_FOUND|:這部裝置沒有指定的 |bar_id|。

要求

名稱類型
bar_id uint32

回應

名稱類型
payload Device_GetBar_Result

GetBti

傳回裝置指定索引的 Bus Transaction Intiator (BTI)。

參數: |index|:要要求的 BTI。

錯誤: |ZX_ERR_OUT_OF_RANGE|:|index| 不是 0。

要求

名稱類型
index uint32

回應

名稱類型
payload Device_GetBti_Result

GetCapabilities

傳回設定空間中與所提供能力 |id| 相符的功能的偏移向量。如果找不到對應的相符項目,向量會是空白的。

參數: |id|:要搜尋的能力 ID。

要求

名稱類型
id CapabilityId

回應

名稱類型
offsets vector<uint8>[32]

GetDeviceInfo

從設定標頭傳回包含裝置資訊的結構。

要求

<EMPTY>

回應

名稱類型
info DeviceInfo

GetExtendedCapabilities

在設定空間中,傳回與指定擴充能力 |id| 相符的擴充功能所對應的偏移向量。如果找不到對應的相符項目,向量會是空白的。

參數: |id|:要搜尋的能力 ID

要求

名稱類型
id ExtendedCapabilityId

回應

名稱類型
offsets vector<uint16>[32]

GetInterruptModes

傳回裝置支援的中斷模式。

要求

<EMPTY>

回應

名稱類型
modes InterruptModes

MapInterrupt

對應裝置的中斷情形。裝置的中斷模式必須已經透過 |SetInterruptMode| 設定,|what_irq| 必須為 |GetInterruptModes| 回報的中斷模式中斷次數 >=。舊版中斷可能會多次對應,但控制代碼會指向同一個中斷物件。MSI 和 MSI-X 中斷在每次中斷時,都只能有一項未完成的對應作業。必須先關閉未解決的 MSI 和 MSI-X 中斷控制代碼,才能嘗試在後續呼叫 |SetInterruptMode| 時變更中斷模式。

參數: |what_irq|:要對應的中斷 ID。

錯誤: |ZX_ERR_ALREADY_BOUND|:由 |which_irq| 指定的中斷事件已對應至有效的帳號代碼。|ZX_ERR_BAD_STATE|:裝置的干擾功能目前已停用。 |ZX_ERR_INVALID_ARGS|: |which_irq| 對模式無效。

要求

名稱類型
which_irq uint32

回應

名稱類型
payload Device_MapInterrupt_Result

ReadConfig16

這個外掛程式能從裝置的設定空間讀取兩個位元組。如果是 PCI,則 |Offset| 的值必須在 [0x0, 0xFE] 以內;如為 PCI,則必須介於 [0x0, 0xFFE]。在大多數情況下,裝置是 PCIe。

參數: |offset|:要讀取的裝置設定空間的偏移值。

錯誤: |ZX_ERR_OUT_OF_RANGE|: |offset| 是無效的地址。

要求

名稱類型
offset ExtendedConfigOffset

回應

名稱類型
payload Device_ReadConfig16_Result

ReadConfig32

這個外掛程式能從裝置的設定空間讀取四個位元組。如果 PCI 的話,|Offset| 的值必須在 [0x0, 0xFC] 之內;如果 PCIe,則為 [0x0, 0xFFC]。在大多數情況下,裝置是 PCIe。

參數: |offset|:要讀取的裝置設定空間的偏移值。

錯誤: |ZX_ERR_OUT_OF_RANGE|: |offset| 是無效的地址。

要求

名稱類型
offset ExtendedConfigOffset

回應

名稱類型
payload Device_ReadConfig32_Result

ReadConfig8

這個外掛程式能從裝置的設定空間讀取位元組。如果 PCI 時使用的是 |Offset| 值,就必須在 [0x0, 0xFF] 以內;如為 PCIe,則必須介於 [0x0, 0xFFF]。在大多數情況下,裝置是 PCIe。

參數: |offset|:要讀取的裝置設定空間的偏移值。

錯誤: |ZX_ERR_OUT_OF_RANGE|: |offset| 是無效的地址。

要求

名稱類型
offset ExtendedConfigOffset

回應

名稱類型
payload Device_ReadConfig8_Result

ResetDevice

啟動裝置的函式層級重設。這項同步作業在重設完成後不會傳回。啟動重設前,必須先停用裝置的中斷作業。

錯誤: |ZX_ERR_BAD_STATE|:通話前未停用中斷功能。 |ZX_ERR_NOT_SUPPORTED|:裝置不支援重設。 |ZX_ERR_TIMED_OUT|:裝置未於預期內完成重設,因此推斷不再正常運作。

要求

<EMPTY>

回應

名稱類型
payload Device_ResetDevice_Result

SetBusMastering

啟用或停用裝置的匯流排主能力。

參數: |enable|: true 啟用公車主控功能,false 則停用。

錯誤: |ZX_ERR_BAD_STATE|:裝置停用時呼叫這個方法。

要求

名稱類型
enabled bool

回應

名稱類型
payload Device_SetBusMastering_Result

SetInterruptMode

設定裝置的中斷模式。從某個中斷模式變更為其他驅動程式庫時,必須事先關閉現有的中斷控制代碼。

參數: |mode|: |InterruptMode| 向匯流排驅動程式要求。 |requested_irq_count|:要求的中斷次數。

錯誤: |ZX_ERR_BAD_STATE|:在現有的控制中心存在對應的 MSI 時,驅動程式庫嘗試變更中斷模式。 |ZX_ERR_INVALID_ARGS|: |requested_irq_count| 為 0。 |ZX_ERR_NOT_SUPPORTED|:不支援提供的 |mode| 或無效。

要求

名稱類型
mode InterruptMode
requested_irq_count uint32

回應

名稱類型
payload Device_SetInterruptMode_Result

WriteConfig16

將兩個位元組寫入裝置的設定空間。適用於寫入的 |offset| 範圍為 [0x40,0xFE] (如果 PCI 的話) 或 [0x40, 0xFFE] (如果 PCIe)。在大多數情況下,裝置會是 PCIe。

參數 |offset|:要讀取的裝置設定空間的偏移值。|value|:要寫入的值。

錯誤: |ZX_ERR_ACCESS_DENIED|: |offset| 位於裝置的設定標頭中。 |ZX_ERR_OUT_OF_RANGE|:|offset| 是無效的地址。

要求

名稱類型
offset ExtendedConfigOffset
value uint16

回應

名稱類型
payload Device_WriteConfig16_Result

WriteConfig32

將四個位元組寫入裝置的設定空間。如果是 PCI,寫入的 |offset| 範圍為 [0x40, 0xFC],PCIe 則為 [0x40, 0xFFC]。在大多數情況下,裝置會是 PCIe。

參數 |offset|:要讀取的裝置設定空間的偏移值。|value|:要寫入的值。

錯誤: |ZX_ERR_ACCESS_DENIED|: |offset| 位於裝置的設定標頭中。 |ZX_ERR_OUT_OF_RANGE|:|offset| 是無效的地址。

要求

名稱類型
offset ExtendedConfigOffset
value uint32

回應

名稱類型
payload Device_WriteConfig32_Result

WriteConfig8

將位元組寫入裝置的設定空間。PCI 適用的 |偏移| 適用的範圍為 [0x40,0xFF];PCIe 則為 [0x40, 0xFFF]。在大多數情況下,裝置會是 PCIe。

參數 |offset|:要讀取的裝置設定空間的偏移值。|value|:要寫入的值。

錯誤: |ZX_ERR_ACCESS_DENIED|: |offset| 位於裝置的設定標頭中。 |ZX_ERR_OUT_OF_RANGE|:|offset| 是無效的地址。

要求

名稱類型
offset ExtendedConfigOffset
value uint8

回應

名稱類型
payload Device_WriteConfig8_Result

結構化

地址

fuchsia.hardware.pci/pci.fidl

PCI 裝置的位址,

廣闊類型說明預設
bus uint8 無預設
device uint8 無預設
function uint8 無預設

酒吧資源

fuchsia.hardware.pci/pci.fidl

說明並提供裝置指定的基準地址註冊權限。

廣闊類型說明預設
bar_id uint32

BAR ID [0-5)。

無預設
size uint64 無預設
result BarResult 無預設

BaseAddress

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
address uint64 無預設
size uint64 無預設
is_memory bool 無預設
is_prefetchable bool 無預設
is_64bit bool 無預設
id uint8 無預設

Bus_ReadBar_Response

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
buffer vector<uint8> 無預設

功能

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
id uint8 無預設
offset uint8 無預設

DeviceInfo

fuchsia.hardware.pci/pci.fidl

裝置設定標頭中的裝置專屬資訊。PCI 本地匯流排規格 v3,第 6.1 章。

廣闊類型說明預設
vendor_id uint16

裝置識別資訊。

無預設
device_id uint16 無預設
base_class uint8 無預設
sub_class uint8 無預設
program_interface uint8 無預設
revision_id uint8 無預設
bus_id uint8

與公車拓撲中裝置位置的相關資訊。

無預設
dev_id uint8 無預設
func_id uint8 無預設
padding Padding 無預設

Device_AckInterrupt_Response

定義於 fuchsia.hardware.pci/pci.fidl

<EMPTY>

Device_GetBar_Response 資源

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
result Bar 無預設

Device_GetBti_Response 資源

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
bti handle<bti> 無預設

Device_MapInterrupt_Response 資源

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
interrupt handle<interrupt> 無預設

Device_ReadConfig16_Response

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
value uint16 無預設

Device_ReadConfig32_Response

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
value uint32 無預設

Device_ReadConfig8_Response

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
value uint8 無預設

Device_ResetDevice_Response

定義於 fuchsia.hardware.pci/pci.fidl

<EMPTY>

Device_SetBusMastering_Response

定義於 fuchsia.hardware.pci/pci.fidl

<EMPTY>

Device_SetInterruptMode_Response

定義於 fuchsia.hardware.pci/pci.fidl

<EMPTY>

Device_WriteConfig16_Response

定義於 fuchsia.hardware.pci/pci.fidl

<EMPTY>

Device_WriteConfig32_Response

定義於 fuchsia.hardware.pci/pci.fidl

<EMPTY>

Device_WriteConfig8_Response

定義於 fuchsia.hardware.pci/pci.fidl

<EMPTY>

ExtendedCapability

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
id uint16 無預設
offset uint16 無預設

HostBridgeInfo

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
name string[32] 無預設
start_bus_number uint8 無預設
end_bus_number uint8 無預設
segment_group uint16 無預設

InterruptModes

fuchsia.hardware.pci/pci.fidl

由 |GetInterruptModes| 傳回,包含特定 PCI 裝置中斷模式支援的中斷次數。如果不支援,系統會傳回 0。

廣闊類型說明預設
has_legacy bool

如果裝置支援舊版中斷功能,則為 |True|。

無預設
msi_count uint8

支援的訊息訊號中斷數量。會達到 [0, 0x8] (視裝置支援的而定)。

無預設
msix_count uint16

支援的 MSI-X 中斷次數。尺寸可介於 [0, 0x800] 之間,實際情形視裝置和平台支援情況而定。

無預設

IoBar 資源

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
address uint64 無預設
resource handle<resource> 無預設

邊框間距

定義於 fuchsia.hardware.pci/pci.fidl

<EMPTY>

PciDevice

定義於 fuchsia.hardware.pci/pci.fidl

廣闊類型說明預設
base_addresses vector<BaseAddress>[6] 無預設
capabilities vector<Capability>[32] 無預設
ext_capabilities vector<ExtendedCapability>[32] 無預設
config vector<uint8>[256] 無預設
bus_id uint8 無預設
device_id uint8 無預設
function_id uint8 無預設

ENUMS

CapabilityId 彈性

類型:uint8

fuchsia.hardware.pci/pci.fidl

PCI 功能 ID。PCI 本地匯流排規格 v3,附錄 H。

名稱說明
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

設定彈性

類型:uint16

fuchsia.hardware.pci/pci.fidl

PCI 設定標頭會註冊。PCI 本地匯流排規格 v3,第 6.1 章。

名稱說明
0
2
4
6
8
9
10
11
12
13
14
15
16
40
44
46
48
52
60
61
62
63

ExtendedCapabilityId 彈性

類型:uint16

fuchsia.hardware.pci/pci.fidl

PCI 擴充功能 ID。PCIe Base 規格 v4,第 7.6 章。

名稱說明
0
1
2
3
4
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
38
39
40
41
42
43
44

HeaderType彈性

類型:uint8

定義於 fuchsia.hardware.pci/pci.fidl

名稱說明
0
1
2
127
128

InterruptMode 彈性

類型:uint8

fuchsia.hardware.pci/pci.fidl

與 ||SetInterruptMode| 搭配使用,設定裝置的中斷模式。 設定為使用 LEGACY Irq 模式的裝置必須在提供服務後呼叫 |AckInterrupt| 以確認幹擾。如要避免發生此狀況,可以使用 LEGACY_NOACK,但如果 PCI 匯流排系統在特定期間內看到過多中斷觸發事件,就會停用驅動程式的中斷函式。

名稱說明
0
1

舊版中斷模式。

2

舊版中斷模式 (不含確認,請參閱 |AckInterrupt|)。

3

MSI (訊息信號中斷) 模式。

4

MSI-X 模式。

聯合國

BarResult 彈性 資源

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
io IoBar
vmo handle<vmo>

Bus_ReadBar_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Bus_ReadBar_Response
err zx/Status

Device_AckInterrupt_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_AckInterrupt_Response
err zx/Status

Device_GetBar_Result 嚴格 資源

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_GetBar_Response
err zx/Status

Device_GetBti_Result 嚴格 資源

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_GetBti_Response
err zx/Status

Device_MapInterrupt_Result 嚴格 資源

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_MapInterrupt_Response
err zx/Status

Device_ReadConfig16_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_ReadConfig16_Response
err zx/Status

Device_ReadConfig32_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_ReadConfig32_Response
err zx/Status

Device_ReadConfig8_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_ReadConfig8_Response
err zx/Status

Device_ResetDevice_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_ResetDevice_Response
err zx/Status

Device_SetBusMastering_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_SetBusMastering_Response
err zx/Status

Device_SetInterruptMode_Result (嚴格)

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_SetInterruptMode_Response
err zx/Status

Device_WriteConfig16_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_WriteConfig16_Response
err zx/Status

Device_WriteConfig32_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_WriteConfig32_Response
err zx/Status

Device_WriteConfig8_Result 嚴格

fuchsia.hardware.pci/pci.fidl

序數Variant類型說明
response Device_WriteConfig8_Response
err zx/Status

帳單

指令彈性

類型:uint16

定義於 fuchsia.hardware.pci/pci.fidl

名稱說明
1
2
4
8
16
32
64
128
256
512

狀態彈性

類型:uint16

定義於 fuchsia.hardware.pci/pci.fidl

名稱說明
8
16
32
128
256
512
1024
2048
4096
8192
16384
32768

業者

名稱類型說明
BASE_ADDRESS_COUNT 6 uint32
BASE_CONFIG_SIZE 256 uint32
EXTENDED_CONFIG_SIZE 4096 uint32
MAX_BAR_COUNT 6 uint8
MAX_CAPABILITIES 32 uint32
MAX_DEVICES 64 uint32
MAX_EXT_CAPABILITIES 32 uint32
MAX_NAME_LEN 32 uint32
READBAR_MAX_SIZE 1024 uint32
STATUS_DEVSEL_MASK

別名

名稱說明
ConfigOffset uint8

與裝置 PCI 設定空間開頭的偏移值。[0, 0x100) 有效。

ExtendedConfigOffset uint16

與裝置 PCIe 設定空間開頭的偏移值。[0, 0x800) 有效。

服務

服務

fuchsia.hardware.pci/pci.fidl

名稱類型傳輸
device fuchsia.hardware.pci/Device 版本