DRM database property: DPMS
Back to index
Details
- Name
DPMS
- Flags
- <none>
- Type
- enum
- Attached to
- connector
- Specification
- {"On", "Standby", "Suspend", "Off"}
Documentation
Legacy property for setting the power state of the connector. For atomic
drivers this is only provided for backwards compatibility with existing
drivers, it remaps to controlling the "ACTIVE" property on the CRTC the
connector is linked to. Drivers should never set this property directly,
it is handled by the DRM core by calling the &drm_connector_funcs.dpms
callback. For atomic drivers the remapping to the "ACTIVE" property is
implemented in the DRM core.
Note that this property cannot be set through the MODE_ATOMIC ioctl,
userspace must use "ACTIVE" on the CRTC instead.
WARNING:
For userspace also running on legacy drivers the "DPMS" semantics are a
lot more complicated. First, userspace cannot rely on the "DPMS" value
returned by the GETCONNECTOR actually reflecting reality, because many
drivers fail to update it. For atomic drivers this is taken care of in
drm_atomic_helper_update_legacy_modeset_state().
The second issue is that the DPMS state is only well-defined when the
connector is connected to a CRTC. In atomic the DRM core enforces that
"ACTIVE" is off in such a case, no such checks exists for "DPMS".
Finally, when enabling an output using the legacy SETCONFIG ioctl then
"DPMS" is forced to ON. But see above, that might not be reflected in
the software value on legacy drivers.
Summarizing: Only set "DPMS" when the connector is known to be enabled,
assume that a successful SETCONFIG call also sets "DPMS" to on, and
never read back the value of "DPMS" because it can be incorrect.
Driver support