aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/1316-drm-amd-dal-Set-correct-dentist-clock-value.patch
blob: a96db6c510773cd42cddc003e29b57855926583e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
From 653660e76326b5792d900e45ad02a02ae7f2773a Mon Sep 17 00:00:00 2001
From: Chris Park <Chris.Park@amd.com>
Date: Thu, 28 Jan 2016 18:49:24 -0500
Subject: [PATCH 1316/1565] drm/amd/dal: Set correct dentist clock value

Dentist VCO Frequency Clock
APU uses Integrated Info Table.
Discrete uses Frimware Info Table.

Change-Id: I8c73c81d544e72aea27e7d0e5f7b842a956f6203
Signed-off-by: Chris Park <Chris.Park@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
---
 drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c b/drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c
index 9252b5c..7ff8a74 100644
--- a/drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c
+++ b/drivers/gpu/drm/amd/dal/dc/gpu/dce110/display_clock_dce110.c
@@ -647,17 +647,24 @@ static bool display_clock_integrated_info_construct(
 	struct adapter_service *as)
 {
 	struct integrated_info info;
+	struct firmware_info fw_info;
 	uint32_t i;
 	struct display_clock *base = &disp_clk->disp_clk_base;
 	bool res;
 
 	dc_service_memset(&info, 0, sizeof(struct integrated_info));
+	dc_service_memset(&fw_info, 0, sizeof(struct firmware_info));
 
 	res = dal_adapter_service_get_integrated_info(as, &info);
 
 	disp_clk->dentist_vco_freq_khz = info.dentist_vco_freq;
-	if (disp_clk->dentist_vco_freq_khz == 0)
-		disp_clk->dentist_vco_freq_khz = 3600000;
+	if (disp_clk->dentist_vco_freq_khz == 0) {
+		dal_adapter_service_get_firmware_info(as, &fw_info);
+		disp_clk->dentist_vco_freq_khz =
+			fw_info.smu_gpu_pll_output_freq;
+		if (disp_clk->dentist_vco_freq_khz == 0)
+			disp_clk->dentist_vco_freq_khz = 3600000;
+	}
 
 	base->min_display_clk_threshold_khz =
 		disp_clk->dentist_vco_freq_khz / 64;
-- 
1.9.1