DeviceState
O membro DeviceState do DEVICE_CAPABILITIES é uma matriz de valores DEVICE_POWER_STATE indexados por valores SYSTEM_POWER_STATE que variam de PowerSystemWorking a PowerSystemShutdown. Cada elemento da matriz contém o estado máximo (mais alto) de energia do dispositivo que o dispositivo pode dar suporte para o estado de energia do sistema indicado pelo índice ou PowerDeviceUnspecified se o estado de energia do sistema não tiver suporte.
Por exemplo, em um sistema que dá suporte apenas aos estados de energia do sistema S0, S4 e S5, a matriz DeviceState para um dispositivo que dá suporte apenas aos estados D0 e D3 contém os valores mostrados na tabela a seguir.
Elemento DeviceState | Valor |
---|---|
DeviceState[PowerSystemWorking] |
PowerDeviceD0 |
DeviceState[PowerSystemSleeping1] |
PowerDeviceUnspecified |
DeviceState[PowerSystemSleeping2] |
PowerDeviceUnspecified |
DeviceState[PowerSystemSleeping3] |
PowerDeviceUnspecified |
DeviceState[PowerSystemHibernate] |
PowerDeviceD3 |
DeviceState[PowerSystemShutdown] |
PowerDeviceD3 |
Em um sistema que dá suporte a todos os estados de energia do sistema, a tabela a seguir lista os valores que a matriz conteria para um dispositivo que deve estar no estado D2 ou inferior sempre que o sistema for para qualquer estado de suspensão intermediário e no estado D3 quando o sistema hibernar.
Elemento DeviceState | Valor |
---|---|
DeviceState[PowerSystemWorking] |
PowerDeviceD0 |
DeviceState[PowerSystemSleeping1] |
PowerDeviceD2 |
DeviceState[PowerSystemSleeping2] |
PowerDeviceD2 |
DeviceState[PowerSystemSleeping3] |
PowerDeviceD2 |
DeviceState[PowerSystemHibernate] |
PowerDeviceD3 |
DeviceState[PowerSystemShutdown] |
PowerDeviceD3 |
Observe que as entradas na matriz DeviceState significam o estado de energia do dispositivo mais alto que o dispositivo pode dar suporte para o estado de energia do sistema correspondente. No exemplo anterior, o dispositivo pode estar no estado D3 para qualquer estado de energia do sistema, estado D2 para estados de energia do sistema PowerSystemWorking por meio do PowerSystemSleeping3 e estado D1 para o estado do sistema PowerSystemWorking.
O driver de barramento ou o filtro ACPI define esses valores com base nos recursos do nó pai do dispositivo.
Como regra geral, os drivers de nível superior não devem alterar esses valores. No entanto, nas raras circunstâncias em que essa alteração é necessária, um driver pode especificar um estado menor (menos alimentado) do que o driver de ônibus ou o filtro ACPI retornado originalmente. Por exemplo, suponha que DeviceState[PowerSystemSleeping1] seja mapeado para PowerDeviceD2, como na tabela acima. Um driver pode alterar esse valor para PowerDeviceD3, mas não para PowerDeviceD1 ou PowerDeviceD0.