radeon: only enable dynclks if asked for
authorDave Airlie <airlied@redhat.com>
Sun, 2 Nov 2008 23:44:32 +0000 (09:44 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 2 Nov 2008 23:44:32 +0000 (09:44 +1000)
linux-core/radeon_drv.c
shared-core/radeon_cp.c

index f1fe301..daa335b 100644 (file)
@@ -37,7 +37,7 @@
 #include "drm_pciids.h"
 
 int radeon_no_wb;
-int radeon_dynclks = 1;
+int radeon_dynclks = -1;
 int radeon_r4xx_atom = 0;
 int radeon_agpmode = 0;
 
index 942ccc5..3f8f0c9 100644 (file)
@@ -2601,19 +2601,23 @@ int radeon_static_clocks_init(struct drm_device *dev)
 {
        drm_radeon_private_t *dev_priv = dev->dev_private;
 
-       if (dev_priv->chip_family == CHIP_RS400 ||
-           dev_priv->chip_family == CHIP_RS480)
-               radeon_dynclks = 0;
-
-       if ((dev_priv->flags & RADEON_IS_MOBILITY) && !radeon_is_avivo(dev_priv)) {
-               radeon_set_dynamic_clock(dev, radeon_dynclks);
-       } else if (radeon_is_avivo(dev_priv)) {
-               if (radeon_dynclks) {
-                       radeon_atom_static_pwrmgt_setup(dev, 1);
-                       radeon_atom_dyn_clk_setup(dev, 1);
+       if (radeon_dynclks != -1) {
+
+               if (dev_priv->chip_family == CHIP_RS400 ||
+                   dev_priv->chip_family == CHIP_RS480)
+                       radeon_dynclks = 0;
+
+               if ((dev_priv->flags & RADEON_IS_MOBILITY) && !radeon_is_avivo(dev_priv)) {
+                       radeon_set_dynamic_clock(dev, radeon_dynclks);
+               } else if (radeon_is_avivo(dev_priv)) {
+                       if (radeon_dynclks) {
+                               radeon_atom_static_pwrmgt_setup(dev, 1);
+                               radeon_atom_dyn_clk_setup(dev, 1);
+                       }
                }
        }
-       radeon_force_some_clocks(dev);
+       if (radeon_is_r300(dev_priv) || radeon_is_rv100(dev_priv))
+               radeon_force_some_clocks(dev);
        return 0;
 }