探测非D0状态的设备¶
简介¶
在某些情况下,如果某些设备通电会产生不良副作用,而不仅仅是为设备本身供电,那么最好在整个系统启动过程中保持这些设备关闭。
工作原理¶
_DSC (配置设备状态) 对象,其计算结果为一个整数,可用于告知 Linux 设备在探测期间允许的最高 D 状态。如果总线驱动程序通常在探测时将设备设置为 D0 状态,则 _DSC 的支持需要来自内核总线类型的支持。
使用 _DSC 的缺点是,由于设备未通电,即使设备存在问题,驱动程序也很可能探测成功,但第一个用户会发现设备无法工作,而不是在探测时就出现故障。因此,应谨慎使用此功能。
I²C¶
如果 I²C 驱动程序通过在 struct i2c_driver
.flags 字段中设置 I2C_DRV_ACPI_WAIVE_D0_PROBE 标志来表明其对此功能的支持,并且 _DSC 对象的值高于设备的 D 状态,则设备在探测时将不会通电(置于 D0 状态)。
D 状态¶
D 状态以及 _DSC 的允许值如下所列。有关设备电源状态的更多信息,请参阅 [1]。
Number State Description
0 D0 Device fully powered on
1 D1
2 D2
3 D3hot
4 D3cold Off
参考文献¶
示例¶
以下是一个 ASL 示例,描述了一个使用 _DSC 对象告知操作系统设备在探测期间应保持关闭状态的 ACPI 设备。一些与示例无关的对象已省略。
Device (CAM0)
{
Name (_HID, "SONY319A")
Name (_UID, Zero)
Name (_CRS, ResourceTemplate ()
{
I2cSerialBus(0x0020, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C0",
0x00, ResourceConsumer)
})
Method (_DSC, 0, NotSerialized)
{
Return (0x4)
}
}