>From 7f15ad08efb8b58ea572689dbada7da1d3624a8c Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexdeuc...@gmail.com>
Date: Wed, 2 Dec 2009 00:59:37 -0500
Subject: [PATCH] drm/radeon/kms: don't use bios dividers for lvds on r4xx

R4xx cards don't have lvds pll dividers since they use atom.

should fix rh bug 541562

Signed-off-by: Alex Deucher <alexdeuc...@gmail.com>
---
 drivers/gpu/drm/radeon/radeon_legacy_crtc.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
index c1e1706..6f3ff8b 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
@@ -796,18 +796,20 @@ static void radeon_set_pll(struct drm_crtc
*crtc, struct drm_display_mode *mode)
                        if (encoder->encoder_type != DRM_MODE_ENCODER_DAC)
                                pll_flags |= RADEON_PLL_NO_ODD_POST_DIV;
                        if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS) {
-                               struct radeon_encoder *radeon_encoder = 
to_radeon_encoder(encoder);
-                               struct radeon_encoder_lvds *lvds = (struct 
radeon_encoder_lvds
*)radeon_encoder->enc_priv;
-                               if (lvds) {
-                                       if (lvds->use_bios_dividers) {
-                                               pll_ref_div = 
lvds->panel_ref_divider;
-                                               pll_fb_post_div   = 
(lvds->panel_fb_divider |
-                                                                    
(lvds->panel_post_divider << 16));
-                                               htotal_cntl  = 0;
-                                               use_bios_divs = true;
+                               if (!rdev->is_atom_bios) {
+                                       struct radeon_encoder *radeon_encoder = 
to_radeon_encoder(encoder);
+                                       struct radeon_encoder_lvds *lvds = 
(struct radeon_encoder_lvds
*)radeon_encoder->enc_priv;
+                                       if (lvds) {
+                                               if (lvds->use_bios_dividers) {
+                                                       pll_ref_div = 
lvds->panel_ref_divider;
+                                                       pll_fb_post_div   = 
(lvds->panel_fb_divider |
+                                                                            
(lvds->panel_post_divider << 16));
+                                                       htotal_cntl  = 0;
+                                                       use_bios_divs = true;
+                                               }
                                        }
+                                       pll_flags |= RADEON_PLL_USE_REF_DIV;
                                }
-                               pll_flags |= RADEON_PLL_USE_REF_DIV;
                        }
                }
        }
-- 
1.5.6.3
From 7f15ad08efb8b58ea572689dbada7da1d3624a8c Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexdeuc...@gmail.com>
Date: Wed, 2 Dec 2009 00:59:37 -0500
Subject: [PATCH] drm/radeon/kms: don't use bios dividers for lvds on r4xx

R4xx cards don't have lvds pll dividers since they use atom.

should fix rh bug 541562

Signed-off-by: Alex Deucher <alexdeuc...@gmail.com>
---
 drivers/gpu/drm/radeon/radeon_legacy_crtc.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
index c1e1706..6f3ff8b 100644
--- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
+++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
@@ -796,18 +796,20 @@ static void radeon_set_pll(struct drm_crtc *crtc, struct drm_display_mode *mode)
 			if (encoder->encoder_type != DRM_MODE_ENCODER_DAC)
 				pll_flags |= RADEON_PLL_NO_ODD_POST_DIV;
 			if (encoder->encoder_type == DRM_MODE_ENCODER_LVDS) {
-				struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
-				struct radeon_encoder_lvds *lvds = (struct radeon_encoder_lvds *)radeon_encoder->enc_priv;
-				if (lvds) {
-					if (lvds->use_bios_dividers) {
-						pll_ref_div = lvds->panel_ref_divider;
-						pll_fb_post_div   = (lvds->panel_fb_divider |
-								     (lvds->panel_post_divider << 16));
-						htotal_cntl  = 0;
-						use_bios_divs = true;
+				if (!rdev->is_atom_bios) {
+					struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
+					struct radeon_encoder_lvds *lvds = (struct radeon_encoder_lvds *)radeon_encoder->enc_priv;
+					if (lvds) {
+						if (lvds->use_bios_dividers) {
+							pll_ref_div = lvds->panel_ref_divider;
+							pll_fb_post_div   = (lvds->panel_fb_divider |
+									     (lvds->panel_post_divider << 16));
+							htotal_cntl  = 0;
+							use_bios_divs = true;
+						}
 					}
+					pll_flags |= RADEON_PLL_USE_REF_DIV;
 				}
-				pll_flags |= RADEON_PLL_USE_REF_DIV;
 			}
 		}
 	}
-- 
1.5.6.3

------------------------------------------------------------------------------
Join us December 9, 2009 for the Red Hat Virtual Experience,
a free event focused on virtualization and cloud computing. 
Attend in-depth sessions from your desk. Your couch. Anywhere.
http://p.sf.net/sfu/redhat-sfdev2dev
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to