6.2.6. _FIX(固定寄存器资源提供程序)
此可选对象用于在 FADT 中定义的固定硬件寄存器块与 ACPI 命名空间中实现这些固定硬件寄存器的设备之间提供关联。该对象求值为一个由即插即用兼容 ID(32 位压缩 EISA 类型 ID)组成的 Package,这些 ID 与 FADT 中定义的固定硬件寄存器块相关联。出现 _FIX 的设备在固定硬件的实现中发挥作用(例如,实现该硬件或对该硬件的地址进行译码)。_FIX 通过传达设备在 ACPI 固定硬件寄存器接口实现中的作用,向 OSPM 说明给定设备是否可以被禁用、断电,或者是否应被特殊处理。此对象不接受参数。
_CRS 对象描述设备的资源。该 _CRS 对象可能包含 FADT 中资源的超集,因为该设备实际可能会对超出 FADT 要求的资源进行译码。此外,在执行 I/O 桥内资源转换的机器中,FADT 中相对于处理器的资源可能与 _CRS 中相对于总线的资源不同。
参数:
无
返回值:
一个可变长度的 Package,包含一个 Integers 列表,每个元素都包含一个 PNP ID
FADT 中的每个字段都有其各自对应的即插即用 ID,如下所示:
PNP0C20 - SMI_CMD
PNP0C21 - PM1a_EVT_BLK / X\_ PM1a_EVT_BLK
PNP0C22 - PM1b_EVT_BLK / X_PM1b_EVT_BLK
PNP0C23 - PM1a_CNT_BLK / X_PM1a_CNT_BLK
PNP0C24 - PM1b_CNT_BLK / X\_ PM1b_CNT_BLK
PNP0C25 - PM2_CNT_BLK / X\_ PM2_CNT_BLK
PNP0C26 - PM_TMR_BLK / X\_ PM_TMR_BLK
PNP0C27 - GPE0_BLK / X_GPE0_BLK
PNP0C28 - GPE1_BLK / X\_ GPE1_BLK
PNP0B00 - FIXED_RTC
PNP0B01 - FIXED_RTC
PNP0B02 - FIXED_RTC
_FIX 用法的 ASL 示例:
Scope(\_SB) {
Device(PCI0) { // Root PCI Bus
Name(_HID, EISAID("PNP0A03")) // Need \_HID for root device
Method (_CRS,0){ // Need current resources for root device
// Return current resources for root bridge 0
}
Name(_PRT, Package(){ // Need PCI IRQ routing for PCI bridge
// Package with PCI IRQ routing table information
})
Name(_FIX, Package(1) {
EISAID("PNP0C25")} // PM2 control ID
)
Device (PX40) { // ISA
Name(_ADR,0x00070000)
Name(_FIX, Package(1) {
EISAID("PNP0C20")} // SMI command port
)
Device (NS17) { // NS17 (Nat. Semi 317, an ACPI part)
Name(_HID, EISAID("PNP0C02"))
Name(_FIX, Package(3) {
EISAID("PNP0C22"), // PM1b event ID
EISAID("PNP0C24"), // PM1b control ID
EISAID("PNP0C28")} // GPE1 ID
}
} // end PX40
Device (PX43) { // PM Control
Name(_ADR,0x00070003)
Name(_FIX, Package(4) {
EISAID("PNP0C21"), // PM1a event ID
EISAID("PNP0C23"), // PM1a control ID
EISAID("PNP0C26"), // PM Timer ID
EISAID("PNP0C27")} // GPE0 ID
)
} // end PX43
} // end PCI0
} // end scope SB