From 32ad92adf5013e73c9f1dbe4c244b53e8078e1dc Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 9 Mar 2011 17:22:03 -0500 Subject: [PATCH] drm: don't light up unlit monitors If a monitor is dark when plymouth is started, we shouldn't try to light it up. There are rules on which outputs can be attached to which controllers and we're very likely to break those rules just assigning things willy-nilly. The kernel should set us up in the way it thinks is best anyway. There's no reason to second guess the kernel here. --- src/plugins/renderers/drm/plugin.c | 105 +---------------------------- 1 file changed, 1 insertion(+), 104 deletions(-) diff --git a/src/plugins/renderers/drm/plugin.c b/src/plugins/renderers/drm/plugin.c index 0180cdd1..a418a598 100644 --- a/src/plugins/renderers/drm/plugin.c +++ b/src/plugins/renderers/drm/plugin.c @@ -620,36 +620,10 @@ close_device (ply_renderer_backend_t *backend) unload_driver (backend); } -static bool -controller_is_available (ply_renderer_backend_t *backend, - uint32_t controller_id) -{ - ply_list_node_t *node; - - node = ply_list_get_first_node (backend->heads); - while (node != NULL) - { - ply_list_node_t *next_node; - ply_renderer_head_t *head; - - head = (ply_renderer_head_t *) ply_list_node_get_data (node); - next_node = ply_list_get_next_node (backend->heads, node); - - if (head->controller_id == controller_id) - return false; - - node = next_node; - } - - return true; -} - static drmModeCrtc * find_controller_for_encoder (ply_renderer_backend_t *backend, drmModeEncoder *encoder) { - int i; - uint32_t possible_crtcs; drmModeCrtc *controller; controller = NULL; @@ -667,81 +641,6 @@ find_controller_for_encoder (ply_renderer_backend_t *backend, } } - /* Monitor cable is plugged in, but the monitor isn't lit - * yet. Let's pick an available controller and light it up - * ourselves. - */ - for (i = 0, - possible_crtcs = encoder->possible_crtcs; - possible_crtcs != 0x0; - i++, possible_crtcs >>= 1) - { - /* controller isn't compatible with encoder - */ - if ((possible_crtcs & 0x1) == 0) - continue; - - /* controller is already being used - */ - if (!controller_is_available (backend, backend->resources->crtcs[i])) - continue; - - assert (i < backend->resources->count_crtcs); - controller = drmModeGetCrtc (backend->device_fd, - backend->resources->crtcs[i]); - - if (controller != NULL) - break; - } - - return controller; -} - -static bool -encoder_is_available (ply_renderer_backend_t *backend, - uint32_t encoder_id) -{ - ply_list_node_t *node; - - node = ply_list_get_first_node (backend->heads); - while (node != NULL) - { - ply_list_node_t *next_node; - ply_renderer_head_t *head; - - head = (ply_renderer_head_t *) ply_list_node_get_data (node); - next_node = ply_list_get_next_node (backend->heads, node); - - if (head->encoder_id == encoder_id) - return false; - - node = next_node; - } - - return true; -} - -static drmModeEncoder * -find_unused_encoder_for_connector (ply_renderer_backend_t *backend, - drmModeConnector *connector) -{ - int i; - drmModeEncoder *encoder; - - for (i = 0; i < connector->count_encoders; i++) - { - encoder = drmModeGetEncoder (backend->device_fd, - connector->encoders[i]); - - if (encoder == NULL) - continue; - - if (encoder_is_available (backend, encoder->encoder_id)) - return encoder; - - drmModeFreeEncoder (encoder); - } - return NULL; } @@ -768,9 +667,7 @@ find_encoder_for_connector (ply_renderer_backend_t *backend, drmModeFreeEncoder (encoder); } - /* No encoder yet, pick one - */ - return find_unused_encoder_for_connector (backend, connector); + return NULL; } static bool