19.6.105. PinGroupConfig(引脚组配置描述符宏)
语法 :
Macro:
PinGroupConfig (Shared/Exclusive, PinConfigType, PinConfigValue, ResourceSource,
ResourceSourceIndex, ResourceSourceLabel, ResourceUsage, DesriptorName, VendorData)
参数:
Shared 是一个可选参数,可以是 Shared 或 Exclusive。如果未指定,则假定为 Exclusive。位字段名称 _SHR 会被自动创建,用于引用资源描述符的这一部分。
PinConfigType 可以是下面“引脚组配置类型和值”中描述的配置类型之一。位字段名称 _TYP 会被自动创建,用于引用资源描述符的这一部分。
PinConfigValue 是下面“引脚组配置类型和值”中描述的配置值之一。位字段名称 _VAL 会被自动创建,用于引用资源描述符的这一部分。
ResourceSource 是一个字符串,用于唯一标识 GPIO 控制器,该控制器包含此描述符所引用的 PinGroup 资源。ResourceSource 可以是完全限定名称、相对名称,或使用命名空间搜索规则的名称段。
ResourceSourceLabel 是一个非空字符串参数,它与 ResourceSource 所引用的 GPIO 控制器当前资源模板缓冲区中 PinGroup 资源的 ResourceLabel 相匹配。
DescriptorName 是一个可选参数,用于指定一个整数常量的名称,该常量将在当前作用域中创建,并包含此资源描述符在当前资源模板缓冲区内的偏移量。预定义的描述符字段名可以附加到此名称后,以通过 Buffer Field 运算符访问描述符中的各个字段。
ResourceSourceIndex 是一个可选参数,并且在本修订版本中假定为 0。
ResourceUsage 是一个可选参数,并且在本修订版本中假定为 ResourceConsumer。
VendorData 是一个可选参数,用于指定一个 RawDataBuffer,其中包含由 OS 驱动程序解码的供应商定义字节数据。位字段名称 _VEN 会被自动创建,用于引用资源描述符的这一部分。
表 19.38 引脚组配置类型和值
| 引脚配置类型 | 引脚配置值 | 说明 |
|---|---|---|
| 0x00 = 默认 | N/A | 默认配置。不应用任何配置)。 |
| 0x01 = 偏置上拉 | 以上拉电阻的欧姆值表示。 | 这表示该引脚通过某一欧姆值被上拉到一个隐式提供的 VDD 电源轨。 |
| 0x02 = 偏置下拉 | 以下拉电阻的欧姆值表示。 | 这表示该引脚通过某一欧姆值被下拉到 GND 电源轨。 |
| 0x03 = 偏置默认 | N/A | 如果芯片具有默认偏置模式,则将引脚重置为该模式。 |
| 0x04 = 偏置禁用 | N/A | 引脚上任何可由软件选择的偏置设置都将被禁用。 |
| 0x05 = 偏置高阻抗 | N/A | 这表示该引脚被配置为高阻抗模式,并且基本上与外部世界断开。如果某个电源轨连接到该引脚,它将不会影响信号状态,因此这是一个良好的默认模式。 |
| 0x06 = 偏置总线保持 | N/A | 这将使引脚处于弱锁存状态,在三态总线上对最后一个值进行弱驱动。 |
| 0x07 = 驱动开漏 | N/A | 这将把引脚配置为开漏(开集电极)状态。 |
| 0x08 = 驱动开源 | N/A | 这将把引脚配置为开源(开射极)状态。 |
| 0x09 = 驱动推挽 | N/A | 这将把引脚配置为显式推挽状态。如果上电默认状态例如为开漏或高阻抗状态,则这很有用。 |
| 0x0A = 驱动强度 | 驱动强度,以毫安为单位 | 这将设置引脚输出驱动器提供一定数量的毫安电流,通常是通过激活多个驱动级来实现。 |
| 0x0B = 转换速率 | 自定义格式 | 这控制引脚的转换速率,影响速度,同时也影响边沿的陡峭程度,从而影响电路板上的噪声。硬件特定参数指示要配置何种转换速率 |
| 0x0C = 输入去抖 | 去抖时间,以微秒为单位。 | 这将启用引脚信号的去抖(例如按键输入)。 |
| 0x0D = 输入施密特触发器 | 启用 = 1,禁用 = 0 | 这将为该线路启用施密特触发器支持。 |
| 0x0E - 0x7F = 保留 | 保留 | 保留 |
| 0x80 - 0xFF = 供应商定义值 | 自定义基值 | 从这里开始,列出供应商和硬件特定配置。 |
说明
PinGroupConfig 宏求值为一个缓冲区,其中包含一个引脚组配置资源描述符。引脚组配置资源描述符的格式可见于第 6.4.3.13 节。此宏设计为在 ResourceTemplate(资源到缓冲区转换宏)内部使用。
示例 :
//
// Description: GPIO
//
Device (GPI0)
{
Name (_HID, "PNPFFFE")
Name (_UID, 0x0)
Method (_STA)
{
Return(0xf)
}
Method (_CRS, 0x0, NotSerialized)
{
Name (RBUF, ResourceTemplate()
{
Memory32Fixed(ReadWrite, 0x4FE00000, 0x20)
Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) {0x54}
PinGroup("group1", ResourceProducer) {2, 3}
})
Return(RBUF)
}
//
// Description: I2C controller 1
//
Device (I2C1)
{
Name (_HID, "PNPFFFF")
Name (_UID, 0x0)
Method (_STA)
{
Return(0xf)
}
Method (_CRS, 0x0, NotSerialized)
{
Name (RBUF, ResourceTemplate()
{
Memory32Fixed(ReadWrite, 0x4F800000, 0x20)
Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) {0x55}
// Set function I2C1 for SDA/SCL pins
PinGroupFunction(Exclusive, 0x5, "\\_SB.GPI0, 0, "group1", ResourceConsumer, )
// Configure 10k Pull up for SDA/SCL pins
PinGroupConfig(Exclusive, 0x01, 10000, "\\_SB.GPI0 ", 0, "group1", ResourceConsumer, )
})
Return(RBUF)
}
}
//
// Description: I2C controller 2
//
Device (I2C2)
{
Name (_HID, "PNPFFFF")
Name (_UID, 0x1)
Method (_STA)
{
Return(0xf)
}
Method (_CRS, 0x0, NotSerialized)
{
Name (RBUF, ResourceTemplate()
{
Memory32Fixed(ReadWrite, 0x4F900000, 0x20)
Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) {0x56}
// Set function I2C2 for SDA/SCL pins
PinGroupFunction(Exclusive, 0x4, "\\_SB.GPI0 ", 0, "group1", ResourceConsumer, )
// Configure 10k Pull up for SDA/SCL pins
PinGroupConfig(Exclusive, 0x01, 10000, "\\_SB.GPI0 ", 0, "group1", ResourceConsumer,)
})
Return(RBUF)
}
}
//
// Description: Physical display panel
//
Device (DISP)
{
Name (_HID, "PNPFFFD")
Name (_UID, 0x0)
Method (_STA)
{
Return(0xf)
}
Method (_CRS, 0x0, NotSerialized)
{
Name (RBUF, ResourceTemplate()
{
Memory32Fixed(ReadWrite, 0x4F900000, 0x20)
Interrupt(ResourceConsumer, Level, ActiveHigh, Shared) {0x57}
// Set function GPIO for pin group group1
PinGroupFunction(Exclusive, 0x1, "\\_SB.GPI0 ", 0, "group1", ResourceConsumer, )
// Configure 20k Pull down
PinGroupConfig (Exclusive, 0x02, 20000, "\\_SB.GPI0 ", 0, "group1", ResourceConsumer, )
//Enable Schmitt-trigger
PinGroupConfig (Exclusive, 0x0D, 1, "\\_SB.GPI0 ", 0, "group1", ResourceConsumer, )
//Set slew rate to custom value 3
PinGroupConfig (Exclusive, 0x0B, 3, "\\_SB.GPI0 ", 0, "group1", ResourceConsumer, )
})
Return(RBUF)}
}
}