fuchsia.hardware.pci

添加数量:15

协议

公交车

fuchsia.hardware.pci/pci.fidl 中定义

总线协议提供有关提供服务的 PCI 上 PCI 设备子节点的信息。

GetDevices

检索总线上的所有设备。

请求

<EMPTY>

响应

名称类型
devices vector<PciDevice>[64]

GetHostBridgeInfo

检索总线覆盖的分段组和总线的相关信息。

请求

<EMPTY>

响应

名称类型
info HostBridgeInfo

ReadBar

从设备的基地址寄存器 (BAR) 中读取。BAR 必须是 MMIO 类型。

参数 |device|:要读取的设备地址。|bar_id|:要读取的栏的 ID。 |offset|:开始读取的偏移量(以字节为单位)。默认值为 0 字节。 |size|:读取操作的大小(默认为 128 字节)。一次读取操作的大小上限为 |READBAR_MAX_SIZE|。

错误: |ZX_ERR_NOT_FOUND|: 找不到 |device|,或 |device| 中不存在 |bar_id|。 |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

返回设备的指定索引处的总线事务发起者 (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

将设备的中断映射到 zx:答案。设备的中断模式必须已配置 |SetInterruptMode|,并且 |which_irq| 必须大于或等于 |GetInterruptModes| 为该中断模式报告的中断次数。旧版中断可能会映射多次,但句柄将指向同一中断对象。MSI 和 MSI-X 中断一次只能有一个中断的映射未完成。在对 |SetInterruptMode| 的后续调用中,在尝试更改中断模式之前,必须先关闭未完成的 MSI 和 MSI-X 中断句柄。

参数: | which_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] 范围内;如果 PCIe,则为 [0x0, 0xFFE]。在大多数情况下,设备将为 PCIe。

参数:|offset|:要读取的设备配置空间的偏移量。

错误:|ZX_ERR_OUT_OF_RANGE|: |offset| 是无效地址。

请求

名称类型
offset ExtendedConfigOffset

响应

名称类型
payload Device_ReadConfig16_Result

ReadConfig32

从设备的配置空间读取 4 个字节。如果 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|:在调用 |ResetDevice| 之前,中断未停用。 |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

向设备的配置空间写入 4 个字节。写入的 |offset| 的可接受范围是 [0x40, 0xFC](如果是 PCI)或 [0x40, 0xFFC](如果是 PCIe)。在大多数情况下,设备将为 PCIe。

参数 |offset|:要读取的设备配置空间的偏移量。|value|:要写入的值。

错误:|ZX_ERR_ACCESS_DENIED|: |offset| 在设备的配置标头中。|ZX_ERR_OUT_OF_RANGE|: |offset| 是无效地址。

请求

名称类型
offset ExtendedConfigOffset
value uint32

响应

名称类型
payload Device_WriteConfig32_Result

WriteConfig8

向设备的配置空间写入一个字节。写入的 |offset| 的可接受范围是 [0x40, 0xFF](如果是 PCI)或 [0x40, 0xFFF](如果是 PCIe)。在大多数情况下,设备将为 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 无默认取景方式

枚举

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 基础规范修订版 4 第 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

标头类型 flexible

类型: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

旧中断模式(无 ACK,请参阅 |AckInterrupt|)。

3

MSI(消息信号中断)模式。

4

MSI-X 模式。

联合

BarResult 灵活 资源

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
io IoBar
vmo handle<vmo>

Bus_ReadBar_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Bus_ReadBar_Response
err zx/Status

Device_AckInterrupt_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_AckInterrupt_Response
err zx/Status

Device_GetBar_Result 严格 资源

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_GetBar_Response
err zx/Status

Device_GetBti_Result 严格 资源

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_GetBti_Response
err zx/Status

Device_MapInterrupt_Result 严格 资源

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_MapInterrupt_Response
err zx/Status

Device_ReadConfig16_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_ReadConfig16_Response
err zx/Status

Device_ReadConfig32_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_ReadConfig32_Response
err zx/Status

Device_ReadConfig8_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_ReadConfig8_Response
err zx/Status

Device_ResetDevice_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_ResetDevice_Response
err zx/Status

Device_SetBusMastering_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_SetBusMastering_Response
err zx/Status

Device_SetInterruptMode_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_SetInterruptMode_Response
err zx/Status

Device_WriteConfig16_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_WriteConfig16_Response
err zx/Status

Device_WriteConfig32_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_WriteConfig32_Response
err zx/Status

Device_WriteConfig8_Result 严格

fuchsia.hardware.pci/pci.fidl 中定义

序数变体类型说明
response Device_WriteConfig8_Response
err zx/Status

BITS

命令灵活

类型: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 中定义

名称类型传输
设备 fuchsia.hardware.pci/Device 频道