|
@@ -816,10 +816,13 @@ static int amdgpu_cgs_get_active_displays_info(void *cgs_device,
|
|
|
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)
|
|
|
return -EINVAL;
|
|
|
|
|
|
+ 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) {
|
|
@@ -828,7 +831,7 @@ static int amdgpu_cgs_get_active_displays_info(void *cgs_device,
|
|
|
info->active_display_mask |= (1 << amdgpu_crtc->crtc_id);
|
|
|
info->display_count++;
|
|
|
}
|
|
|
- if (info->mode_info != NULL &&
|
|
|
+ if (mode_info != NULL &&
|
|
|
crtc->enabled && amdgpu_crtc->enabled &&
|
|
|
amdgpu_crtc->hw_mode.clock) {
|
|
|
line_time_us = (amdgpu_crtc->hw_mode.crtc_htotal * 1000) /
|
|
@@ -836,10 +839,10 @@ static int amdgpu_cgs_get_active_displays_info(void *cgs_device,
|
|
|
vblank_lines = amdgpu_crtc->hw_mode.crtc_vblank_end -
|
|
|
amdgpu_crtc->hw_mode.crtc_vdisplay +
|
|
|
(amdgpu_crtc->v_border * 2);
|
|
|
- info->mode_info->vblank_time_us = vblank_lines * line_time_us;
|
|
|
- info->mode_info->refresh_rate = drm_mode_vrefresh(&amdgpu_crtc->hw_mode);
|
|
|
- info->mode_info->ref_clock = adev->clock.spll.reference_freq;
|
|
|
- info->mode_info++;
|
|
|
+ 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;
|
|
|
}
|
|
|
}
|
|
|
}
|