aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3475-drm-amd-powerplay-get-bootup-fclk-value.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3475-drm-amd-powerplay-get-bootup-fclk-value.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3475-drm-amd-powerplay-get-bootup-fclk-value.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3475-drm-amd-powerplay-get-bootup-fclk-value.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3475-drm-amd-powerplay-get-bootup-fclk-value.patch
new file mode 100644
index 00000000..b9d7e2e7
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3475-drm-amd-powerplay-get-bootup-fclk-value.patch
@@ -0,0 +1,71 @@
+From 778aca4eea500d4be59e80f73a2c5994459f60dd Mon Sep 17 00:00:00 2001
+From: Evan Quan <evan.quan@amd.com>
+Date: Fri, 16 Aug 2019 13:47:01 +0800
+Subject: [PATCH 3475/4256] drm/amd/powerplay: get bootup fclk value
+
+This is available with firmwareinfo table v3.2 or later.
+
+Change-Id: I223edf3c616b9e3e2527c752214fef5ab53d1cea
+Signed-off-by: Evan Quan <evan.quan@amd.com>
+Reviewed-by: Kevin Wang <kevin1.wang@amd.com>
+---
+ .../gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 3 +++
+ drivers/gpu/drm/amd/powerplay/smu_v11_0.c | 21 +++++++++++++++++++
+ 2 files changed, 24 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+index fc59d9686e61..e80c81552d29 100644
+--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
++++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+@@ -222,6 +222,9 @@ struct smu_bios_boot_up_values
+ uint16_t vdd_gfx;
+ uint8_t cooling_id;
+ uint32_t pp_table_id;
++ uint32_t format_revision;
++ uint32_t content_revision;
++ uint32_t fclk;
+ };
+
+ enum smu_table_id
+diff --git a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+index 4cdbed3b7a83..16d7768dca9b 100644
+--- a/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
++++ b/drivers/gpu/drm/amd/powerplay/smu_v11_0.c
+@@ -570,6 +570,9 @@ int smu_v11_0_get_vbios_bootup_values(struct smu_context *smu)
+ smu->smu_table.boot_values.pp_table_id = v_3_3->pplib_pptable_id;
+ }
+
++ smu->smu_table.boot_values.format_revision = header->format_revision;
++ smu->smu_table.boot_values.content_revision = header->content_revision;
++
+ return 0;
+ }
+
+@@ -649,6 +652,24 @@ static int smu_v11_0_get_clk_info_from_vbios(struct smu_context *smu)
+ output = (struct atom_get_smu_clock_info_output_parameters_v3_1 *)&input;
+ smu->smu_table.boot_values.dclk = le32_to_cpu(output->atom_smu_outputclkfreq.smu_clock_freq_hz) / 10000;
+
++ if ((smu->smu_table.boot_values.format_revision == 3) &&
++ (smu->smu_table.boot_values.content_revision >= 2)) {
++ memset(&input, 0, sizeof(input));
++ input.clk_id = SMU11_SYSPLL1_0_FCLK_ID;
++ input.syspll_id = SMU11_SYSPLL1_2_ID;
++ input.command = GET_SMU_CLOCK_INFO_V3_1_GET_CLOCK_FREQ;
++ index = get_index_into_master_table(atom_master_list_of_command_functions_v2_1,
++ getsmuclockinfo);
++
++ ret = amdgpu_atom_execute_table(adev->mode_info.atom_context, index,
++ (uint32_t *)&input);
++ if (ret)
++ return -EINVAL;
++
++ output = (struct atom_get_smu_clock_info_output_parameters_v3_1 *)&input;
++ smu->smu_table.boot_values.fclk = le32_to_cpu(output->atom_smu_outputclkfreq.smu_clock_freq_hz) / 10000;
++ }
++
+ return 0;
+ }
+
+--
+2.17.1
+