drm/radeon/kms: DCE6.1 watermark updates for TN
authorAlex Deucher <alexander.deucher@amd.com>
Tue, 20 Mar 2012 21:18:30 +0000 (17:18 -0400)
committerDave Airlie <airlied@redhat.com>
Wed, 21 Mar 2012 06:55:56 +0000 (06:55 +0000)
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/gpu/drm/radeon/evergreen.c
drivers/gpu/drm/radeon/si.c

index 466db4115cd572630f53a16816534f5af7e2fd8c..6c2b666c8ffc75da4f5ecc4d9669ae2640ed11d3 100644 (file)
@@ -581,7 +581,7 @@ static u32 evergreen_line_buffer_adjust(struct radeon_device *rdev,
        return 0;
 }
 
-static u32 evergreen_get_number_of_dram_channels(struct radeon_device *rdev)
+u32 evergreen_get_number_of_dram_channels(struct radeon_device *rdev)
 {
        u32 tmp = RREG32(MC_SHARED_CHMAP);
 
index 4c0d8d251dd08e61e8702a2b008bba1a0311e591..d773ea9c30f781ed187a6904256f13ace962d222 100644 (file)
@@ -60,6 +60,7 @@ extern void r600_ih_ring_fini(struct radeon_device *rdev);
 extern void evergreen_fix_pci_max_read_req_size(struct radeon_device *rdev);
 extern void evergreen_mc_stop(struct radeon_device *rdev, struct evergreen_mc_save *save);
 extern void evergreen_mc_resume(struct radeon_device *rdev, struct evergreen_mc_save *save);
+extern u32 evergreen_get_number_of_dram_channels(struct radeon_device *rdev);
 
 /* get temperature in millidegrees */
 int si_get_temp(struct radeon_device *rdev)
@@ -449,7 +450,7 @@ static u32 dce6_line_buffer_adjust(struct radeon_device *rdev,
        return 0;
 }
 
-static u32 dce6_get_number_of_dram_channels(struct radeon_device *rdev)
+static u32 si_get_number_of_dram_channels(struct radeon_device *rdev)
 {
        u32 tmp = RREG32(MC_SHARED_CHMAP);
 
@@ -766,7 +767,10 @@ static void dce6_program_watermarks(struct radeon_device *rdev,
                        wm.vtaps = 2;
                wm.bytes_per_pixel = 4; /* XXX: get this from fb config */
                wm.lb_size = lb_size;
-               wm.dram_channels = dce6_get_number_of_dram_channels(rdev);
+               if (rdev->family == CHIP_ARUBA)
+                       wm.dram_channels = evergreen_get_number_of_dram_channels(rdev);
+               else
+                       wm.dram_channels = si_get_number_of_dram_channels(rdev);
                wm.num_heads = num_heads;
 
                /* set for high clocks */