介绍
在某些情况下,如果打开某些设备电源会产生不利的副作用(而不仅仅是打开该设备电源),则可能更愿意在整个系统启动过程中关闭这些设备电源。
工作原理
_DSC(配置的设备状态)对象求值为整数,可用于在探测期间告知 Linux 设备允许的最高 D 状态。如果总线驱动程序通常将设备设置为 D0 状态以进行探测,则对 _DSC 的支持需要内核总线类型的支持。
使用 _DSC 的缺点是,由于设备未通电,即使设备出现问题,驱动程序也可能探测正常,但第一个用户会发现设备无法正常工作,而不是探测时出现故障。因此,应谨慎使用此功能。
I²C
如果 I²C 驱动程序通过在 struct i2c_driver.flags 字段中设置 I2C_DRV_ACPI_WAIVE_D0_PROBE 标志来指示其支持此功能,并且 _DSC 对象的计算结果为高于设备 D 状态的整数,则设备将不会通电(置于 D0 状态)进行探测。
D states
下面列出了 D 状态以及 _DSC 的允许值。有关设备电源状态的更多信息,请参阅 [1]。
Number State Description 0 D0 Device fully powered on 1 D1 2 D2 3 D3hot 4 D3cold Off
参考
https://uefi.org/specifications/ACPI/6.4/02_Definition_of_Terms/Definition_of_Terms.html#device-power-state-definitions
例子
一个 ASL 示例描述了一个 ACPI 设备,该设备使用 _DSC 对象来告诉操作系统该设备在探测期间应保持断电状态,如下所示。一些与示例无关的对象已被省略。
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)} }