ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 19 章

    • 总览
    • 19.1. ASL 2.0 符号运算符和表达式
    • 19.2. ASL 语言语法
      • 19.2.1. ASL 语法表示法
      • 19.2.2. ASL 名称和路径名项
      • 19.2.3. ASL 根项和次级项
      • 19.2.4. ASL 数据和常量项
      • 19.2.5. ASL 操作码项
      • 19.2.6. ASL 基本(终结)项
        • 19.2.6. ASL 基本(终结)项
        • 19.2.6. ASL 基本(终结)项(续 2)
      • 19.2.7. ASL 参数关键字项
      • 19.2.8. ASL 资源模板项
    • 19.3. ASL 概念
      • 19.3.1. ASL 名称
      • 19.3.2. ASL 字面常量
      • 19.3.3. ASL 资源模板
      • 19.3.4. ASL 宏
      • 19.3.5. ASL 数据类型
    • 19.4. ASL 运算符摘要
    • 19.5. 按类型划分的 ASL 操作符摘要
    • 19.6. ASL 运算符参考
      • 19.6.1. AccessAs(更改字段单元访问)
      • 19.6.2. Acquire(获取互斥量)
      • 19.6.3. Add(整数加法)
      • 19.6.4. Alias(声明名称别名)
      • 19.6.5. And(整数按位与)
      • 19.6.6. Argx(方法参数数据对象)
      • 19.6.7. BankField(声明 Bank/Data 字段)
      • 19.6.8. Break(从 While 中中断)
      • 19.6.9. BreakPoint(执行断点)
      • 19.6.10. Buffer(声明缓冲区对象)
      • 19.6.11. Case(用于条件执行的情况表达式)
      • 19.6.12. Concatenate(连接数据)
      • 19.6.13. ConcatenateResTemplate(连接资源模板)
      • 19.6.14. CondRefOf(有条件地创建对象引用)
      • 19.6.15. Connection(声明字段连接属性)
      • 19.6.16. Continue(继续最内层外围 While)
      • 19.6.17. CopyObject(复制并存储对象)
      • 19.6.18. CreateBitField(创建 1 位缓冲区字段)
      • 19.6.19. CreateByteField(创建 8 位缓冲区字段)
      • 19.6.20. CreateDWordField(创建 32 位缓冲区字段)
      • 19.6.21. CreateField(创建任意长度缓冲区字段)
      • 19.6.22. CreateQWordField(创建 64 位缓冲区字段)
      • 19.6.23. CreateWordField(创建 16 位缓冲区字段)
      • 19.6.24. CSI2Bus(CSI-2 串行总线连接资源描述符宏)
      • 19.6.25. DataTableRegion(创建数据表操作区域)
      • 19.6.26. Debug(调试器输出)
      • 19.6.27. Decrement(整数递减)
      • 19.6.28. Default(Switch 中的默认执行路径)
      • 19.6.29. DefinitionBlock(声明定义块)
      • 19.6.30. DerefOf(解引用对象引用)
      • 19.6.31. Device(声明设备包)
      • 19.6.32. Divide(整数除法)
      • 19.6.33. DMA(DMA 资源描述符宏)
      • 19.6.34. DWordIO(DWord I/O 资源描述符宏)
      • 19.6.35. DWordMemory(DWord 内存资源描述符宏)
      • 19.6.36. DWordSpace(DWord 空间资源描述符宏)
      • 19.6.37. EISAID(EISA ID 字符串到整数转换宏)
      • 19.6.38. Else(替代执行)
      • 19.6.39. ElseIf(替代/条件执行)
      • 19.6.40. EndDependentFn(结束依赖功能资源描述符宏)
      • 19.6.41. Event(声明事件同步对象)
      • 19.6.42. ExtendedIO(扩展 IO 资源描述符宏)
      • 19.6.43. ExtendedMemory(扩展 Memory 资源描述符宏)
      • 19.6.44. ExtendedSpace(扩展地址空间资源描述符宏)
      • 19.6.45. External(声明外部对象)
      • 19.6.46. Fatal(致命错误检查)
      • 19.6.47. Field(声明字段对象)
      • 19.6.48. 查找最左侧置位位
      • 19.6.49. 查找最右侧置位位
      • 19.6.50. FixedDMA(DMA 资源描述符宏)
      • 19.6.51. FixedIO(固定 IO 资源描述符宏)
      • 19.6.52. For(条件循环)
      • 19.6.53. Fprintf(创建并存储格式化字符串)
      • 19.6.54. FromBCD(将 BCD 转换为 Integer)
      • 19.6.55. Function(声明控制方法)
      • 19.6.56. GpioInt(GPIO 中断连接资源描述符宏)
      • 19.6.57. GpioIo(GPIO 连接 IO 资源描述符宏)
      • 19.6.58. I2CSerialBusV2(I2C 串行总线连接资源描述符(版本 2)宏)
      • 19.6.59. If(条件执行)
      • 19.6.60. Include(包含附加 ASL 文件)
      • 19.6.61. Increment(整数递增)
      • 19.6.62. Index(成员对象的索引引用)
      • 19.6.63. IndexField(声明索引/数据字段)
      • 19.6.64. Interrupt(中断资源描述符宏)
      • 19.6.65. IO(IO 资源描述符宏)
      • 19.6.66. IRQ(中断资源描述符宏)
      • 19.6.67. IRQNoFlags(中断资源描述符宏)
      • 19.6.68. LAnd(逻辑与)
      • 19.6.69. LEqual(逻辑等于)
      • 19.6.70. LGreater(逻辑大于)
      • 19.6.71. LGreaterEqual(逻辑大于或等于)
      • 19.6.72. LLess(逻辑小于)
      • 19.6.73. LLessEqual(逻辑小于或等于)
      • 19.6.74. LNot(逻辑非)
      • 19.6.75. LNotEqual(逻辑不等于)
      • 19.6.76. Load(加载定义块)
      • 19.6.77. LoadTable(从 XSDT 加载定义块)
      • 19.6.78. Localx(方法局部数据对象)
      • 19.6.79. LOr(逻辑或)
      • 19.6.80. Match(查找对象匹配)
      • 19.6.81. Memory24(内存资源描述符宏)
      • 19.6.82. Memory32(内存资源描述符宏)
      • 19.6.83. Memory32Fixed(内存资源描述符宏)
      • 19.6.84. Method(声明控制方法)
      • 19.6.85. Mid(提取 Buffer 或 String 的一部分)
      • 19.6.86. Mod(整数取模)
      • 19.6.87. Multiply(整数乘法)
      • 19.6.88. Mutex(声明同步/互斥对象)
      • 19.6.89. Name(声明命名对象)
      • 19.6.90. NAnd(整数按位 NAND)
      • 19.6.91. NoOp Code(空操作)
      • 19.6.92. NOr(整数按位 NOR)
      • 19.6.93. Not(整数按位取反)
      • 19.6.94. Notify(通知对象发生事件)
      • 19.6.95. Offset(更改当前字段单元偏移)
      • 19.6.96. ObjectType(获取对象类型)
      • 19.6.97. One(常量值为一的整数)
      • 19.6.98. Ones(全 1 常量整数)
      • 19.6.99. OperationRegion(声明操作区域)
      • 19.6.100. Or(整数按位或)
      • 19.6.101. Package(声明 Package 对象)
      • 19.6.102. PinConfig(引脚配置描述符宏)
      • 19.6.103. PinFunction(引脚功能描述符宏)
      • 19.6.104. PinGroup(引脚组描述符宏)
      • 19.6.105. PinGroupConfig(引脚组配置描述符宏)
      • 19.6.106. PinGroupFunction(引脚组功能配置描述符宏)
      • 19.6.107. PowerResource(声明电源资源)
      • 19.6.108. Printf(创建并存储格式化字符串)
      • 19.6.109. QWordIO(QWord IO 资源描述符宏)
      • 19.6.110. QWordMemory(QWord Memory 资源描述符宏)
      • 19.6.111. QWordSpace(QWord 空间资源描述符宏)
      • 19.6.112. RawDataBuffer(原始数据缓冲区)
      • 19.6.113. RefOf(创建对象引用)
      • 19.6.114. Register(通用寄存器资源描述符宏)
      • 19.6.115. Release(释放 Mutex 同步对象)
      • 19.6.116. Reset(重置 Event 同步对象)
      • 19.6.117. ResourceTemplate(资源到缓冲区转换宏)
      • 19.6.118. Return(从方法执行中返回)
      • 19.6.119. Revision(常量修订整数)
      • 19.6.120. Scope(打开命名作用域)
      • 19.6.121. ShiftLeft(整数左移)
      • 19.6.122. ShiftRight(整数右移)
      • 19.6.123. Signal(发出同步 Event 信号)
      • 19.6.124. SizeOf(获取数据对象大小)
      • 19.6.125. Sleep(毫秒休眠)
      • 19.6.126. SPISerialBusV2(SPI 串行总线连接资源描述符(版本 2)宏)
      • 19.6.127. Stall(短时间停顿)
      • 19.6.128. StartDependentFn(起始依赖函数资源描述符宏)
      • 19.6.129. StartDependentFnNoPri(起始依赖函数资源描述符宏)
      • 19.6.130. Store(存储对象)
      • 19.6.131. Subtract(整数减法)
      • 19.6.132. Switch(根据表达式选择要执行的代码)
      • 19.6.133. ThermalZone(声明热区)
      • 19.6.134. 定时器(获取 64 位定时器值)
      • 19.6.135. ToBCD(将整数转换为 BCD)
      • 19.6.136. ToBuffer(将数据转换为 Buffer)
      • 19.6.137. ToDecimalString(将数据转换为十进制字符串)
      • 19.6.138. ToHexString(将数据转换为十六进制字符串)
      • 19.6.139. ToInteger(将数据转换为整数)
      • 19.6.140. ToPLD(创建 _PLD Buffer 对象)
      • 19.6.141. ToString(将 Buffer 转换为 String)
      • 19.6.142. ToUUID(将字符串转换为 UUID 宏)
      • 19.6.143. UARTSerialBusV2(UART 串行总线连接资源描述符版本 2 宏)
      • 19.6.144. Unicode(字符串到 Unicode 转换宏)
      • 19.6.145. VendorLong(长厂商资源描述符)
      • 19.6.146. VendorShort(短厂商资源描述符)
      • 19.6.147. Wait(等待同步事件)
      • 19.6.148. While(条件循环)
      • 19.6.149. WordBusNumber(Word 总线编号资源描述符宏)
      • 19.6.150. WordIO(Word IO 资源描述符宏)
      • 19.6.151. WordSpace(Word Space 资源描述符宏)
      • 19.6.152. XOr(整数按位异或)
      • 19.6.153. Zero(常量零整数)

19.6.64. Interrupt(中断资源描述符宏)

语法 :

Interrupt ( ResourceUsage, EdgeLevel, ActiveLevel, Shared,
ResourceSourceIndex, ResourceSource, DescriptorName ) { InterruptList
} => Buffer

参数

ResourceUsage 描述设备是消耗指定的中断(ResourceConsumer),还是产生该中断供子设备使用(ResourceProducer)。如果未指定任何值,则假定为 ResourceConsumer。

EdgeLevel 描述中断是边沿触发(Edge)还是电平触发(Level)。字段 DescriptorName._HE 会被自动创建以引用资源描述符的这一部分,其中“1”表示 Edge,“0”表示 Level。

ActiveLevel 描述中断是高电平有效(ActiveHigh)还是低电平有效(ActiveLow)。字段 DescriptorName._LL 会被自动创建以引用资源描述符的这一部分,其中“1”表示 ActiveLow,“0”表示 ActiveHigh。

Shared 描述中断是否可以与其他设备共享(Shared)或不共享(Exclusive),以及它是否能够从低功耗空闲状态或系统睡眠状态唤醒系统(SharedAndWake 或 ExclusiveAndWake)。字段 DescriptorName._SHR 会被自动创建以引用资源描述符的这一部分,其中“1”表示 Shared,“0”表示 Exclusive。如果未指定任何值,则假定为 Exclusive。

ResourceSourceIndex 求值为 0x00 到 0xFF 之间的整数,并描述资源源索引。如果未指定,则不会生成该项。如果指定了此参数,则也必须指定 ResourceSource 参数。

ResourceSource 求值为一个字符串,用于唯一标识资源源。如果未指定,则不会生成该项。如果指定了此参数,但未指定 ResourceSourceIndex 参数,则假定其值为零。

DescriptorName 求值为名称字符串,它引用整个资源描述符。

InterruptList 是一个以逗号分隔的整数列表,至少需要一个值。每个整数表示一个 32 位中断号。必须至少定义一个中断,并且列表中不能有重复值。字段 “DescriptorName. _INT” 会被自动创建以引用资源描述符的这一部分。

说明

Interrupt 宏求值为一个包含中断资源描述符的缓冲区。此描述符的格式可参见第 6.4.3.6 节。此宏设计用于 ResourceTemplate(资源到缓冲区转换宏)内部。

Interrupt 宏使用 ResourceUsage 字段来区分两类设备:ResourceProducer 和 ResourceConsumer。

ResourceProducer 表示一种设备,它可以将来自一个或多个设备的中断转发给 OSPM 管理下的处理器。在中断宏中使用 ResourceProducer 的行为是未定义的,并且会被 OSPM 忽略。不建议将中断宏声明为 ResourceProducer。

ResourceConsumer 是消耗在 InterruptList 中声明的中断的设备。大多数设备都属于这一类别,并使用这种方法声明该设备可产生的中断。声明为 ResourceConsumer 的中断描述符,由 MADT 中描述的主中断控制器,或由充当“中断产生者”的设备生成。ResourceSource 字段用于作出这种区分。如果省略此字段,则 InterruptList 中的中断号标识全局系统中断 GSIV,并且这些中断以 MADT 中描述的主中断控制器为目标(参见第 5.2.12 节)。ResourceSource 字段也可以提供一个设备的名称,该设备是一个“中断产生者”。在这种情况下,InterruptList 中的中断号引用所指示的“中断产生者”设备的某个中断集合的私有中断编号空间。

ResourceSourceIndex 参数是保留的。如果平台在平台范围的 _OSC 中指定了“中断 ResourceSource 支持”(表 6.13中的位 13),则 ResourceSourceIndex 参数必须为零。

以下示例说明了如何指定对“二级中断”的使用。在此示例中,设备 SDC0 使用来自 MUX0 的一个二级中断,MUX0 对一组二级中断线进行复用并生成一个单一的汇总中断(也称为“中断产生者”)。期望 MUX0 的设备驱动程序根据该设备实现定义的细节,生成一个特定的基于软件的二级中断:

Scope(\_SB) {

  Device(MUX0){
    Name(_HID, EISAID("ACME0F0F")) // vendor specific interrupt combiner
    Name(_UID, 0)
    Name(_CRS, ResourceTemplate () {
      //Register Interface
      MEMORY32FIXED(ReadWrite, 0x30000000, 0x200, )
      //Summary Interrupt line (GSIV 51)
      Interrupt(ResourceConsumer, Level, ActiveHigh, Exclusive) {51}
    })
  }

  Device(SDC0){
    Name(_HID, EISAID("PNP0D40")) // SDA Standard Compliant SD Host Controller
    Name(_UID, 0)
    Name(_CRS, ResourceTemplate() {
      //Register Interface
      MEMORY32FIXED(ReadWrite, 0xFF000000, 0x200, )
      // Secondary Interrupt 10 from interrupt combiner MUX0
      Interrupt(ResourceConsumer, Edge, ActiveHigh, Exclusive, 0, “\\_SB.MUX0”){10}
      }
    )
  }
}
Prev
19.6.63. IndexField(声明索引/数据字段)
Next
19.6.65. IO(IO 资源描述符宏)