drm/radeon/kms: don't use bios dividers for lvds on r4xx
authorAlex Deucher <alexdeucher@gmail.com>
Wed, 2 Dec 2009 05:59:37 +0000 (00:59 -0500)
committerDave Airlie <airlied@redhat.com>
Fri, 4 Dec 2009 00:24:11 +0000 (10:24 +1000)
R4xx cards don't have lvds pll dividers since they use atom.

should fix rh bug 541562

Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/radeon_legacy_crtc.c

index c1e1706d06b4131fd1c02994e75452fd9f5927e5..6f3ff8b84fafec982c202127b4cb93eb3467641e 100644 (file)
@@ -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;
                        }
                }
        }