diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0271-drm-amdgpu-get-display-info-from-DC-when-DC-enabled.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/0271-drm-amdgpu-get-display-info-from-DC-when-DC-enabled.patch | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0271-drm-amdgpu-get-display-info-from-DC-when-DC-enabled.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0271-drm-amdgpu-get-display-info-from-DC-when-DC-enabled.patch new file mode 100644 index 00000000..a6c63ee5 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0271-drm-amdgpu-get-display-info-from-DC-when-DC-enabled.patch @@ -0,0 +1,96 @@ +From 939ed149145012ef9f5bc1538f4e19506345414c Mon Sep 17 00:00:00 2001 +From: Rex Zhu <Rex.Zhu@amd.com> +Date: Tue, 28 Feb 2017 16:21:27 +0800 +Subject: [PATCH 0271/4131] drm/amdgpu: get display info from DC when DC + enabled. + +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/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 fd435a9..d450a96 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +@@ -849,10 +849,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) +@@ -866,30 +862,43 @@ static int amdgpu_cgs_get_active_displays_info(struct cgs_device *cgs_device, + mode_info->ref_clock = adev->clock.spll.reference_freq; + } + +- 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.7.4 + |