lib: don't abort if forcing the connector state fails
authorThomas Wood <thomas.wood@intel.com>
Mon, 28 Jul 2014 15:01:27 +0000 (16:01 +0100)
committerThomas Wood <thomas.wood@intel.com>
Wed, 30 Jul 2014 10:13:13 +0000 (11:13 +0100)
Ensure tests using igt_enable_connectors can still run even if the
relevant debugfs files are not available.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
lib/igt_kms.c
lib/igt_kms.h

index 20370a9..740b5dd 100644 (file)
@@ -429,9 +429,11 @@ static char* get_debugfs_connector_path(int drm_fd, drmModeConnector *connector,
  * @state: state to force on @connector
  *
  * Force the specified state on the specified connector.
+ *
+ * Returns: true on success
  */
-void kmstest_force_connector(int drm_fd, drmModeConnector *connector, enum
-                            kmstest_force_connector_state state)
+bool kmstest_force_connector(int drm_fd, drmModeConnector *connector,
+                            enum kmstest_force_connector_state state)
 {
        char *path;
        const char *value;
@@ -458,12 +460,15 @@ void kmstest_force_connector(int drm_fd, drmModeConnector *connector, enum
        debugfs_fd = open(path, O_WRONLY | O_TRUNC);
        free(path);
 
-       igt_assert(debugfs_fd != -1);
+       if (debugfs_fd == -1) {
+               return false;
+       }
 
        ret = write(debugfs_fd, value, strlen(value));
        close(debugfs_fd);
 
        igt_assert(ret != -1);
+       return (ret == -1) ? false : true;
 }
 
 /**
@@ -1509,8 +1514,12 @@ void igt_enable_connectors(void)
                        continue;
 
                /* just enable VGA for now */
-               if (c->connector_type == DRM_MODE_CONNECTOR_VGA)
-                       kmstest_force_connector(drm_fd, c, FORCE_CONNECTOR_ON);
+               if (c->connector_type == DRM_MODE_CONNECTOR_VGA) {
+                       if (!kmstest_force_connector(drm_fd, c, FORCE_CONNECTOR_ON))
+                               igt_info("Unable to force state on %s-%d\n",
+                                        kmstest_connector_type_str(c->connector_type),
+                                        c->connector_type_id);
+               }
 
                drmModeFreeConnector(c);
        }
index fb0e66a..08b46ab 100644 (file)
@@ -130,7 +130,7 @@ int kmstest_get_connector_default_mode(int drm_fd, drmModeConnector *connector,
 int kmstest_get_connector_config(int drm_fd, uint32_t connector_id,
                                 unsigned long crtc_idx_mask,
                                 struct kmstest_connector_config *config);
-void kmstest_force_connector(int fd, drmModeConnector *connector,
+bool kmstest_force_connector(int fd, drmModeConnector *connector,
                             enum kmstest_force_connector_state state);
 void kmstest_force_edid(int drm_fd, drmModeConnector *connector,
                        const unsigned char *edid, size_t length);