diff options
author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2018-04-06 12:59:46 +0200 |
---|---|---|
committer | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2018-04-11 09:45:37 +0200 |
commit | 2c3e1ca6496de3b0377a43f4e8060cebd2c9920b (patch) | |
tree | 9b27919de95a1c36510e770153f79fc834010c30 /lib | |
parent | e5829165c2ef96140c222429c0f174fb72c4324b (diff) |
lib/igt_kms: Handle outputs with no modes better
Pretend that outputs without modes are disabled, and try reprobing
if no modes are initially detected, just in case that the reprobe
will find modes.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105798
Reviewed-by: Marta Lofstedt <marta.lofstedt@intel.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/igt_kms.c | 13 | ||||
-rw-r--r-- | lib/igt_kms.h | 3 |
2 files changed, 10 insertions, 6 deletions
diff --git a/lib/igt_kms.c b/lib/igt_kms.c index 19d650a8..4b25f836 100644 --- a/lib/igt_kms.c +++ b/lib/igt_kms.c @@ -1033,9 +1033,10 @@ static bool _kmstest_connector_config(int drm_fd, uint32_t connector_id, goto err2; if (!connector->count_modes) { - igt_warn("connector %d/%s-%d has no modes\n", connector_id, - kmstest_connector_type_str(connector->connector_type), - connector->connector_type_id); + if (probe) + igt_warn("connector %d/%s-%d has no modes\n", connector_id, + kmstest_connector_type_str(connector->connector_type), + connector->connector_type_id); goto err2; } @@ -1950,6 +1951,7 @@ void igt_display_init(igt_display_t *display, int drm_fd) for (i = 0; i < display->n_outputs; i++) { igt_output_t *output = &display->outputs[i]; + drmModeConnector *connector; /* * We don't assign each output a pipe unless @@ -1961,8 +1963,9 @@ void igt_display_init(igt_display_t *display, int drm_fd) igt_output_refresh(output); - if (output->config.connector && - output->config.connector->connection == DRM_MODE_UNKNOWNCONNECTION) { + connector = output->config.connector; + if (connector && (!connector->count_modes || + connector->connection == DRM_MODE_UNKNOWNCONNECTION)) { output->force_reprobe = true; igt_output_refresh(output); } diff --git a/lib/igt_kms.h b/lib/igt_kms.h index b37370a0..0e75d0c9 100644 --- a/lib/igt_kms.h +++ b/lib/igt_kms.h @@ -411,7 +411,8 @@ void igt_wait_for_vblank_count(int drm_fd, enum pipe pipe, int count); static inline bool igt_output_is_connected(igt_output_t *output) { /* Something went wrong during probe? */ - if (!output->config.connector) + if (!output->config.connector || + !output->config.connector->count_modes) return false; if (output->config.connector->connection == DRM_MODE_CONNECTED) |