PNP_SERIAL_BUS_DESCRIPTOR 结构描述目标设备与串行总线(I2C、SPI 或 UART)的物理连接。
语法
typedef struct _PNP_SERIAL_BUS_DESCRIPTOR {
UCHAR Tag;
USHORT Length;
UCHAR RevisionId;
UCHAR ResourceSourceIndex;
UCHAR SerialBusType;
UCHAR GeneralFlags;
USHORT TypeSpecificFlags;
UCHAR TypeSpecificRevisionId;
USHORT TypeDataLength;
} PNP_SERIAL_BUS_DESCRIPTOR, *PPNP_SERIAL_BUS_DESCRIPTOR;
成员
Tag
串行总线类型。 此成员设置为0x8e串行总线(I2C、SPI 或 UART)连接。 有关详细信息,请参阅 ACPI 5.0 规范中串行总线连接描述符的说明。
Length
串行总线连接描述符的长度(以字节为单位)。 为了与 ACPI 5.0 规范一致,PNP_SERIAL_BUS_DESCRIPTOR 结构的 Length 成员中的字节计数等于结构大小,减去 标记 中的三个字节,并在结构开头 长度 成员,以及遵循结构的总线类型特定数据和资源源字符串的字节数。 资源源字符串(必需字段)的最小大小为两个字节(对于一个字符的资源源名称和终止 null)。 因此,最小有效 长度 值为 11。 有关详细信息,请参阅 ACPI 5.0 规范。
RevisionId
串行总线连接描述符的修订 ID。 此成员设置为在 Reshub.h 头文件中定义的SERIAL_BUS_DESCRIPTOR_REVISION常量。
ResourceSourceIndex
保留以供将来使用。 此成员未使用,并且设置为零。
SerialBusType
串行总线类型。 此成员设置为 1(对于 I2C)、2(对于 SPI),或 3(对于 UART)。 其他值要么保留供将来使用,要么由硬件供应商定义。 有关详细信息,请参阅 ACPI 5.0 规范。
GeneralFlags
所有串行总线类型通用的标志。 位 0 是从属模式标志。 如果此位设置为 1,则此连接的通信由总线控制器启动;否则,通信由目标设备启动。 位 1 是使用者/生成者标志,始终设置为 1。 当前未定义其他标志位。 有关详细信息,请参阅 ACPI 5.0 规范。
TypeSpecificFlags
特定于串行总线类型的标志。 对于 I2C 总线,如果连接使用 10 位地址,则设置位 0;否则,连接使用 7 位地址。 目前没有为 I2C 定义其他标志位。 有关详细信息,请参阅 ACPI 5.0 规范。
TypeSpecificRevisionId
此结构的变体的修订 ID,该变体用于 标记 成员指定的串行总线类型(I2C、SPI 和 UART)。 每个串行总线类型通过添加特定于总线类型的字段来扩展 PNP_SERIAL_BUS_DESCRIPTOR 结构。 有关详细信息,请参阅 ACPI 5.0 规范。
TypeDataLength
遵循 PNP_SERIAL_BUS_DESCRIPTOR 结构的总线类型特定数据的长度(以字节为单位)。 此长度值包括 TypeDataLength 成员和资源源字符串开头之间的数据,但不包括资源源字符串。 有关详细信息,请参阅 ACPI 5.0 规范。
言论
此结构定义串行总线连接描述符中的数据字段,如 ACPI 5.0 规范的第 6.4.3.8.2 节中所述。 此描述符描述与连接到串行总线(I2C、SPI 或 UART)的目标设备的总线连接。
例如,对于 I2C 总线上的设备,PNP_SERIAL_BUS_DESCRIPTOR 结构(及其特定于总线类型的扩展)指定设备的总线地址、地址模式(7 位或 10 位),以及访问设备时运行总线时钟的频率。 有关显示 I2C 控制器驱动程序如何从结构中提取此信息的代码示例,请参阅 如何获取设备的连接设置。
Reshub.h 头文件中的 PNP_SERIAL_BUS_DESCRIPTOR 结构定义前面是 Pshpack1.h 头文件的 include 语句,该语句将编译器配置为将相邻结构成员打包到字节边界,而不会干预间隙。 然后,软件可以将打包的结构覆盖到串行总线连接描述符的内存映像上,以访问此描述符的各个字段。 结构的 USHORT 成员可能无法与内存中的字节边界对齐。 USHORT 成员中的字节以小端顺序存储 x86、x64 和 ARM 处理器体系结构。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 8 开始支持。 |
标头 | reshub.h |