aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-10-08 13:02:19 -0400
committerDave Airlie <airlied@redhat.com>2009-10-12 13:42:32 +1000
commit2ffb842948ba64b03986f4064140a74c1780c44b (patch)
tree88372d325525367faad2a4cf489c78806673c198 /drivers/gpu/drm
parentdrm/radeon/kms: Fix apparent typo in legacy CRTC memory bandwidth calculation. (diff)
downloadlinux-dev-2ffb842948ba64b03986f4064140a74c1780c44b.tar.xz
linux-dev-2ffb842948ba64b03986f4064140a74c1780c44b.zip
drm/radeon/kms: make sure LVDS panel is valid in detect()
If the panel data is bogus this can lead to problems later when the hardware trys to set the mode. If the data is invalid, report LVDS as disconnected. Should fix fdo bug 24247. Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm')
-rw-r--r--drivers/gpu/drm/radeon/radeon_connectors.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index e376be47a4a0..466f6010a2e4 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -415,8 +415,20 @@ static int radeon_lvds_mode_valid(struct drm_connector *connector,
static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connector)
{
- enum drm_connector_status ret = connector_status_connected;
+ enum drm_connector_status ret = connector_status_disconnected;
+ struct drm_encoder *encoder = radeon_best_single_encoder(connector);
+
+ if (encoder) {
+ struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
+ struct radeon_native_mode *native_mode = &radeon_encoder->native_mode;
+
+ /* check if panel is valid */
+ if (native_mode->panel_xres >= 320 && native_mode->panel_yres >= 240)
+ ret = connector_status_connected;
+
+ }
/* check acpi lid status ??? */
+
radeon_connector_update_scratch_regs(connector, ret);
return ret;
}