From: Rex Zhu <rex....@amd.com>

Signed-off-by: Rex Zhu <rex....@amd.com>
Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 59 +++++++++++++++++++--------------
 1 file changed, 34 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
index f0e3624..d42eade 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
@@ -999,10 +999,6 @@ static int amdgpu_cgs_get_active_displays_info(struct 
cgs_device *cgs_device,
                                          struct cgs_display_info *info)
 {
        CGS_FUNC_ADEV;
-       struct amdgpu_crtc *amdgpu_crtc;
-       struct drm_device *ddev = adev->ddev;
-       struct drm_crtc *crtc;
-       uint32_t line_time_us, vblank_lines;
        struct cgs_mode_info *mode_info;
 
        if (info == NULL)
@@ -1010,30 +1006,43 @@ static int amdgpu_cgs_get_active_displays_info(struct 
cgs_device *cgs_device,
 
        mode_info = info->mode_info;
 
-       if (adev->mode_info.num_crtc && 
adev->mode_info.mode_config_initialized) {
-               list_for_each_entry(crtc,
-                               &ddev->mode_config.crtc_list, head) {
-                       amdgpu_crtc = to_amdgpu_crtc(crtc);
-                       if (crtc->enabled) {
-                               info->active_display_mask |= (1 << 
amdgpu_crtc->crtc_id);
-                               info->display_count++;
-                       }
-                       if (mode_info != NULL &&
-                               crtc->enabled && amdgpu_crtc->enabled &&
-                               amdgpu_crtc->hw_mode.clock) {
-                               line_time_us = 
(amdgpu_crtc->hw_mode.crtc_htotal * 1000) /
-                                                       
amdgpu_crtc->hw_mode.clock;
-                               vblank_lines = 
amdgpu_crtc->hw_mode.crtc_vblank_end -
-                                                       
amdgpu_crtc->hw_mode.crtc_vdisplay +
-                                                       (amdgpu_crtc->v_border 
* 2);
-                               mode_info->vblank_time_us = vblank_lines * 
line_time_us;
-                               mode_info->refresh_rate = 
drm_mode_vrefresh(&amdgpu_crtc->hw_mode);
-                               mode_info->ref_clock = 
adev->clock.spll.reference_freq;
-                               mode_info = NULL;
+       if (!amdgpu_device_has_dc_support(adev)) {
+               struct amdgpu_crtc *amdgpu_crtc;
+               struct drm_device *ddev = adev->ddev;
+               struct drm_crtc *crtc;
+               uint32_t line_time_us, vblank_lines;
+
+               if (adev->mode_info.num_crtc && 
adev->mode_info.mode_config_initialized) {
+                       list_for_each_entry(crtc,
+                                       &ddev->mode_config.crtc_list, head) {
+                               amdgpu_crtc = to_amdgpu_crtc(crtc);
+                               if (crtc->enabled) {
+                                       info->active_display_mask |= (1 << 
amdgpu_crtc->crtc_id);
+                                       info->display_count++;
+                               }
+                               if (mode_info != NULL &&
+                                       crtc->enabled && amdgpu_crtc->enabled &&
+                                       amdgpu_crtc->hw_mode.clock) {
+                                       line_time_us = 
(amdgpu_crtc->hw_mode.crtc_htotal * 1000) /
+                                                               
amdgpu_crtc->hw_mode.clock;
+                                       vblank_lines = 
amdgpu_crtc->hw_mode.crtc_vblank_end -
+                                                               
amdgpu_crtc->hw_mode.crtc_vdisplay +
+                                                               
(amdgpu_crtc->v_border * 2);
+                                       mode_info->vblank_time_us = 
vblank_lines * line_time_us;
+                                       mode_info->refresh_rate = 
drm_mode_vrefresh(&amdgpu_crtc->hw_mode);
+                                       mode_info->ref_clock = 
adev->clock.spll.reference_freq;
+                                       mode_info = NULL;
+                               }
                        }
                }
+       } else {
+               info->display_count = adev->pm.pm_display_cfg.num_display;
+               if (mode_info != NULL) {
+                       mode_info->vblank_time_us = 
adev->pm.pm_display_cfg.min_vblank_time;
+                       mode_info->refresh_rate = 
adev->pm.pm_display_cfg.vrefresh;
+                       mode_info->ref_clock = adev->clock.spll.reference_freq;
+               }
        }
-
        return 0;
 }
 
-- 
2.5.5

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to