drm/amdgpu: add drm light sleep support for Vi
authorRex Zhu <Rex.Zhu@amd.com>
Thu, 8 Dec 2016 02:58:15 +0000 (10:58 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 27 Jan 2017 16:12:46 +0000 (11:12 -0500)
v2: fix copy error.

Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/vi.c

index bb6eacb..fbb7d8b 100644 (file)
@@ -1177,6 +1177,23 @@ static void vi_update_hdp_light_sleep(struct amdgpu_device *adev,
                WREG32(mmHDP_MEM_POWER_LS, data);
 }
 
+static void vi_update_drm_light_sleep(struct amdgpu_device *adev,
+                                     bool enable)
+{
+       uint32_t temp, data;
+
+       temp = data = RREG32(0x157a);
+
+       if (enable && (adev->cg_flags & AMD_CG_SUPPORT_DRM_LS))
+               data |= 1;
+       else
+               data &= ~1;
+
+       if (temp != data)
+               WREG32(0x157a, data);
+}
+
+
 static void vi_update_rom_medium_grain_clock_gating(struct amdgpu_device *adev,
                                                    bool enable)
 {
@@ -1337,6 +1354,8 @@ static int vi_common_set_clockgating_state(void *handle,
                                state == AMD_CG_STATE_GATE ? true : false);
                vi_update_hdp_light_sleep(adev,
                                state == AMD_CG_STATE_GATE ? true : false);
+               vi_update_drm_light_sleep(adev,
+                               state == AMD_CG_STATE_GATE ? true : false);
                break;
        case CHIP_TONGA:
        case CHIP_POLARIS10: