aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0917-drm-amdgpu-dce11-update-pll-programming-for-ELM-BAF.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0917-drm-amdgpu-dce11-update-pll-programming-for-ELM-BAF.patch')
-rw-r--r--common/recipes-kernel/linux/files/0917-drm-amdgpu-dce11-update-pll-programming-for-ELM-BAF.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0917-drm-amdgpu-dce11-update-pll-programming-for-ELM-BAF.patch b/common/recipes-kernel/linux/files/0917-drm-amdgpu-dce11-update-pll-programming-for-ELM-BAF.patch
new file mode 100644
index 00000000..a1d1b7a2
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0917-drm-amdgpu-dce11-update-pll-programming-for-ELM-BAF.patch
@@ -0,0 +1,76 @@
+From 7671e6b69ffaffe933791336c4924f9a55b8a9de Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Thu, 15 Oct 2015 16:35:33 -0400
+Subject: [PATCH 0917/1110] drm/amdgpu/dce11: update pll programming for
+ ELM/BAF
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+SetPixelClock table handles pll divider calculation and
+spread spectrum setup, so no need to use calculate the
+dividers and call the ss enable cmd table.
+
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 31 +++++++++++++++++++++++++++++--
+ 1 file changed, 29 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+index 92a242a..d068de8 100644
+--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+@@ -2751,7 +2751,17 @@ static void dce_v11_0_crtc_disable(struct drm_crtc *crtc)
+ case ATOM_PPLL2:
+ /* disable the ppll */
+ amdgpu_atombios_crtc_program_pll(crtc, amdgpu_crtc->crtc_id, amdgpu_crtc->pll_id,
+- 0, 0, ATOM_DISABLE, 0, 0, 0, 0, 0, false, &ss);
++ 0, 0, ATOM_DISABLE, 0, 0, 0, 0, 0, false, &ss);
++ break;
++ case ATOM_COMBOPHY_PLL0:
++ case ATOM_COMBOPHY_PLL1:
++ case ATOM_COMBOPHY_PLL2:
++ case ATOM_COMBOPHY_PLL3:
++ case ATOM_COMBOPHY_PLL4:
++ case ATOM_COMBOPHY_PLL5:
++ /* disable the ppll */
++ amdgpu_atombios_crtc_program_pll(crtc, ATOM_CRTC_INVALID, amdgpu_crtc->pll_id,
++ 0, 0, ATOM_DISABLE, 0, 0, 0, 0, 0, false, &ss);
+ break;
+ default:
+ break;
+@@ -2769,11 +2779,28 @@ static int dce_v11_0_crtc_mode_set(struct drm_crtc *crtc,
+ int x, int y, struct drm_framebuffer *old_fb)
+ {
+ struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
++ struct drm_device *dev = crtc->dev;
++ struct amdgpu_device *adev = dev->dev_private;
+
+ if (!amdgpu_crtc->adjusted_clock)
+ return -EINVAL;
+
+- amdgpu_atombios_crtc_set_pll(crtc, adjusted_mode);
++ if ((adev->asic_type == CHIP_ELLESMERE) ||
++ (adev->asic_type == CHIP_BAFFIN)) {
++ struct amdgpu_encoder *amdgpu_encoder =
++ to_amdgpu_encoder(amdgpu_crtc->encoder);
++ int encoder_mode =
++ amdgpu_atombios_encoder_get_encoder_mode(amdgpu_crtc->encoder);
++
++ /* SetPixelClock calculates the plls and ss values now */
++ amdgpu_atombios_crtc_program_pll(crtc, amdgpu_crtc->crtc_id,
++ amdgpu_crtc->pll_id,
++ encoder_mode, amdgpu_encoder->encoder_id,
++ adjusted_mode->clock, 0, 0, 0, 0,
++ amdgpu_crtc->bpc, amdgpu_crtc->ss_enabled, &amdgpu_crtc->ss);
++ } else {
++ amdgpu_atombios_crtc_set_pll(crtc, adjusted_mode);
++ }
+ amdgpu_atombios_crtc_set_dtd_timing(crtc, adjusted_mode);
+ dce_v11_0_crtc_do_set_base(crtc, old_fb, x, y, 0);
+ amdgpu_atombios_crtc_overscan_setup(crtc, mode, adjusted_mode);
+--
+2.7.4
+