@@ -6581,3 +6581,29 @@ int get_num_scalers(int drm_fd, enum pipe pipe)
return num_scalers;
}
+
+static int toggle_power_saving_policy_prop(int drm_fd, igt_output_t *output, uint64_t policy)
+{
+ uint32_t type = DRM_MODE_OBJECT_CONNECTOR;
+ bool prop_exists;
+ uint32_t prop_id;
+
+ prop_exists = kmstest_get_property(
+ drm_fd, output->id, type, "power saving policy",
+ &prop_id, NULL, NULL);
+
+ if (!prop_exists)
+ return -ENODEV;
+
+ return drmModeObjectSetProperty(drm_fd, output->id, type, prop_id, policy);
+}
+
+int clear_power_saving_policy(int drm_fd, igt_output_t *output)
+{
+ return toggle_power_saving_policy_prop(drm_fd, output, 0);
+}
+
+int set_panel_power_saving_policy(int drm_fd, igt_output_t *output, uint64_t policy)
+{
+ return toggle_power_saving_policy_prop(drm_fd, output, policy);
+}
@@ -1223,4 +1223,10 @@ bool igt_check_output_is_dp_mst(igt_output_t *output);
int igt_get_dp_mst_connector_id(igt_output_t *output);
int get_num_scalers(int drm_fd, enum pipe pipe);
+#define DRM_MODE_REQUIRE_COLOR_ACCURACY BIT(0) /* Compositor requires color accuracy */
+#define DRM_MODE_REQUIRE_LOW_LATENCY BIT(1) /* Compositor requires low latency */
+
+int clear_power_saving_policy(int drm_fd, igt_output_t *output);
+int set_panel_power_saving_policy(int drm_fd, igt_output_t *output, uint64_t policy);
+
#endif /* __IGT_KMS_H__ */