summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/igt_kms.c7
-rw-r--r--tests/kms_force_connector.c7
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index aa548446..0c1143f1 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -476,6 +476,8 @@ void kmstest_force_connector(int drm_fd, drmModeConnector *connector, enum
*
* Set the EDID data on @connector to @edid. See #generic_edid and
* #kmstest_generic_edid for a set of generic EDID data blocks.
+ *
+ * If @length is zero, the forced EDID will be removed.
*/
void kmstest_force_edid(int drm_fd, drmModeConnector *connector,
const unsigned char *edid, size_t length)
@@ -491,7 +493,10 @@ void kmstest_force_edid(int drm_fd, drmModeConnector *connector,
igt_assert(debugfs_fd != -1);
- ret = write(debugfs_fd, edid, length);
+ if (length == 0)
+ ret = write(debugfs_fd, "reset", 5);
+ else
+ ret = write(debugfs_fd, edid, length);
close(debugfs_fd);
igt_assert(ret != -1);
diff --git a/tests/kms_force_connector.c b/tests/kms_force_connector.c
index 54a92c5f..39cacb93 100644
--- a/tests/kms_force_connector.c
+++ b/tests/kms_force_connector.c
@@ -93,6 +93,13 @@ main (int argc, char **argv)
drmModeFreeConnector(temp);
+ /* remove edid */
+ kmstest_force_edid(drm_fd, connector, NULL, 0);
+ temp = drmModeGetConnector(drm_fd, connector->connector_id);
+ /* the connector should now have the 5 default modes */
+ igt_assert(temp->count_modes == 5);
+ drmModeFreeConnector(temp);
+
/* force the connector off */
kmstest_force_connector(drm_fd, connector, FORCE_CONNECTOR_OFF);
temp = drmModeGetConnector(drm_fd, connector->connector_id);