探測非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)
}
}