summaryrefslogtreecommitdiff
path: root/linux-core/nv50_kms_wrapper.c
diff options
context:
space:
mode:
authorMaarten Maathuis <madman2003@gmail.com>2008-07-02 16:13:54 +0200
committerMaarten Maathuis <madman2003@gmail.com>2008-07-02 16:14:48 +0200
commitf1fe9178f1a2aef272c7feeb15c8de42c8c609d5 (patch)
tree515703f927e30626f7f4eedd026a2e8818ba6e97 /linux-core/nv50_kms_wrapper.c
parentb28d309210475b6f671af7617c779bd1d7a6810a (diff)
NV50: basic fbcon + misc fixes
- There is one fb, used for as many outputs as possible. - Eventually smaller screens will be scaled to see the full console, but for the moment this'll do.
Diffstat (limited to 'linux-core/nv50_kms_wrapper.c')
-rw-r--r--linux-core/nv50_kms_wrapper.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/linux-core/nv50_kms_wrapper.c b/linux-core/nv50_kms_wrapper.c
index 7f1a095b..2a214f68 100644
--- a/linux-core/nv50_kms_wrapper.c
+++ b/linux-core/nv50_kms_wrapper.c
@@ -153,6 +153,7 @@ static void nv50_kms_mirror_routing(struct drm_device *dev)
struct nv50_output *output = NULL;
struct nv50_connector *connector = NULL;
struct drm_connector *drm_connector = NULL;
+ struct drm_crtc *drm_crtc = NULL;
/* Wipe all previous connections. */
list_for_each_entry(connector, &display->connectors, item) {
@@ -179,6 +180,13 @@ static void nv50_kms_mirror_routing(struct drm_device *dev)
}
}
}
+
+ /* mirror crtc active state */
+ list_for_each_entry(drm_crtc, &dev->mode_config.crtc_list, head) {
+ crtc = to_nv50_crtc(drm_crtc);
+
+ crtc->active = drm_crtc->enabled;
+ }
}
/*
@@ -428,8 +436,6 @@ int nv50_kms_crtc_set_config(struct drm_mode_set *set)
drm_crtc = drm_encoder->crtc;
drm_encoder->crtc = NULL;
- crtc = to_nv50_crtc(drm_crtc);
- crtc->active = false;
drm_crtc->enabled = false;
}
@@ -456,6 +462,7 @@ int nv50_kms_crtc_set_config(struct drm_mode_set *set)
}
drm_encoder->crtc = set->crtc;
+ set->crtc->enabled = true;
drm_connector->encoder = drm_encoder;
}
}
@@ -468,7 +475,6 @@ int nv50_kms_crtc_set_config(struct drm_mode_set *set)
crtc = to_nv50_crtc(set->crtc);
/* keeping the encoders and connectors attached, so they can be tracked */
- crtc->active = false;
set->crtc->enabled = false;
}