drm/radeon/kms: dynclks fixes
authorAlex Deucher <alexdeucher@gmail.com>
Fri, 5 Feb 2010 05:55:32 +0000 (00:55 -0500)
committerDave Airlie <airlied@redhat.com>
Mon, 8 Feb 2010 23:32:31 +0000 (09:32 +1000)
- only r4xx/r5xx/rs6xx/rs740 have clock gating atom table,
so disable it on r6xx.  it's already disabled on r7xx
- check to make sure the clock_gating hook exists before
calling it.  This avoids a segfault on asics without
that function.
- remove unused static power management function.

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

index d758b1f..3f3c7a2 100644 (file)
@@ -549,7 +549,7 @@ static struct radeon_asic r600_asic = {
        .set_memory_clock = &radeon_atom_set_memory_clock,
        .get_pcie_lanes = NULL,
        .set_pcie_lanes = NULL,
-       .set_clock_gating = &radeon_atom_set_clock_gating,
+       .set_clock_gating = NULL,
        .set_surface_reg = r600_set_surface_reg,
        .clear_surface_reg = r600_clear_surface_reg,
        .bandwidth_update = &rv515_bandwidth_update,
index b55012f..c319845 100644 (file)
@@ -1780,16 +1780,6 @@ void radeon_atom_set_clock_gating(struct radeon_device *rdev, int enable)
        atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
 }
 
-void radeon_atom_static_pwrmgt_setup(struct radeon_device *rdev, int enable)
-{
-       ENABLE_ASIC_STATIC_PWR_MGT_PS_ALLOCATION args;
-       int index = GetIndexIntoMasterTable(COMMAND, EnableASIC_StaticPwrMgt);
-
-       args.ucEnable = enable;
-
-       atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args);
-}
-
 uint32_t radeon_atom_get_engine_clock(struct radeon_device *rdev)
 {
        GET_ENGINE_CLOCK_PS_ALLOCATION args;
index 73c4405..3ec94a0 100644 (file)
@@ -846,8 +846,10 @@ int radeon_static_clocks_init(struct drm_device *dev)
        /* XXX make sure engine is idle */
 
        if (radeon_dynclks != -1) {
-               if (radeon_dynclks)
-                       radeon_set_clock_gating(rdev, 1);
+               if (radeon_dynclks) {
+                       if (rdev->asic->set_clock_gating)
+                               radeon_set_clock_gating(rdev, 1);
+               }
        }
        radeon_apply_clock_quirks(rdev);
        return 0;