aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
authorEvan Quan <evan.quan@amd.com>2018-10-24 00:57:56 -0400
committerAlex Deucher <alexander.deucher@amd.com>2018-10-25 15:04:03 -0400
commit3732eb0683c17113201cd29fdefd7a58b1acfa7f (patch)
tree62d481cb7fd4a90f7b83df4d35ffbc3b9613cbf4 /drivers/gpu
parent7dc94969e165464896366fcb096f4be18ba56f44 (diff)
drm/amd/powerplay: commonize the API for retrieving current clocks
So that it can be shared between all clocks. Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Feifei Xu<Feifei.Xu@amd.com> Reviewed-by: Rex Zhu <Rex.Zhu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c44
1 files changed, 15 insertions, 29 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
index 8a1ee9ce7386..57143d51e3ee 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
@@ -1875,38 +1875,20 @@ static int vega20_get_gpu_power(struct pp_hwmgr *hwmgr,
1875 return ret; 1875 return ret;
1876} 1876}
1877 1877
1878static int vega20_get_current_gfx_clk_freq(struct pp_hwmgr *hwmgr, uint32_t *gfx_freq) 1878static int vega20_get_current_clk_freq(struct pp_hwmgr *hwmgr,
1879 PPCLK_e clk_id, uint32_t *clk_freq)
1879{ 1880{
1880 uint32_t gfx_clk = 0;
1881 int ret = 0; 1881 int ret = 0;
1882 1882
1883 *gfx_freq = 0; 1883 *clk_freq = 0;
1884 1884
1885 PP_ASSERT_WITH_CODE((ret = smum_send_msg_to_smc_with_parameter(hwmgr, 1885 PP_ASSERT_WITH_CODE((ret = smum_send_msg_to_smc_with_parameter(hwmgr,
1886 PPSMC_MSG_GetDpmClockFreq, (PPCLK_GFXCLK << 16))) == 0, 1886 PPSMC_MSG_GetDpmClockFreq, (clk_id << 16))) == 0,
1887 "[GetCurrentGfxClkFreq] Attempt to get Current GFXCLK Frequency Failed!", 1887 "[GetCurrentClkFreq] Attempt to get Current Frequency Failed!",
1888 return ret); 1888 return ret);
1889 gfx_clk = smum_get_argument(hwmgr); 1889 *clk_freq = smum_get_argument(hwmgr);
1890 1890
1891 *gfx_freq = gfx_clk * 100; 1891 *clk_freq = *clk_freq * 100;
1892
1893 return 0;
1894}
1895
1896static int vega20_get_current_mclk_freq(struct pp_hwmgr *hwmgr, uint32_t *mclk_freq)
1897{
1898 uint32_t mem_clk = 0;
1899 int ret = 0;
1900
1901 *mclk_freq = 0;
1902
1903 PP_ASSERT_WITH_CODE((ret = smum_send_msg_to_smc_with_parameter(hwmgr,
1904 PPSMC_MSG_GetDpmClockFreq, (PPCLK_UCLK << 16))) == 0,
1905 "[GetCurrentMClkFreq] Attempt to get Current MCLK Frequency Failed!",
1906 return ret);
1907 mem_clk = smum_get_argument(hwmgr);
1908
1909 *mclk_freq = mem_clk * 100;
1910 1892
1911 return 0; 1893 return 0;
1912} 1894}
@@ -1937,12 +1919,16 @@ static int vega20_read_sensor(struct pp_hwmgr *hwmgr, int idx,
1937 1919
1938 switch (idx) { 1920 switch (idx) {
1939 case AMDGPU_PP_SENSOR_GFX_SCLK: 1921 case AMDGPU_PP_SENSOR_GFX_SCLK:
1940 ret = vega20_get_current_gfx_clk_freq(hwmgr, (uint32_t *)value); 1922 ret = vega20_get_current_clk_freq(hwmgr,
1923 PPCLK_GFXCLK,
1924 (uint32_t *)value);
1941 if (!ret) 1925 if (!ret)
1942 *size = 4; 1926 *size = 4;
1943 break; 1927 break;
1944 case AMDGPU_PP_SENSOR_GFX_MCLK: 1928 case AMDGPU_PP_SENSOR_GFX_MCLK:
1945 ret = vega20_get_current_mclk_freq(hwmgr, (uint32_t *)value); 1929 ret = vega20_get_current_clk_freq(hwmgr,
1930 PPCLK_UCLK,
1931 (uint32_t *)value);
1946 if (!ret) 1932 if (!ret)
1947 *size = 4; 1933 *size = 4;
1948 break; 1934 break;
@@ -2743,7 +2729,7 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
2743 2729
2744 switch (type) { 2730 switch (type) {
2745 case PP_SCLK: 2731 case PP_SCLK:
2746 ret = vega20_get_current_gfx_clk_freq(hwmgr, &now); 2732 ret = vega20_get_current_clk_freq(hwmgr, PPCLK_GFXCLK, &now);
2747 PP_ASSERT_WITH_CODE(!ret, 2733 PP_ASSERT_WITH_CODE(!ret,
2748 "Attempt to get current gfx clk Failed!", 2734 "Attempt to get current gfx clk Failed!",
2749 return ret); 2735 return ret);
@@ -2760,7 +2746,7 @@ static int vega20_print_clock_levels(struct pp_hwmgr *hwmgr,
2760 break; 2746 break;
2761 2747
2762 case PP_MCLK: 2748 case PP_MCLK:
2763 ret = vega20_get_current_mclk_freq(hwmgr, &now); 2749 ret = vega20_get_current_clk_freq(hwmgr, PPCLK_UCLK, &now);
2764 PP_ASSERT_WITH_CODE(!ret, 2750 PP_ASSERT_WITH_CODE(!ret,
2765 "Attempt to get current mclk freq Failed!", 2751 "Attempt to get current mclk freq Failed!",
2766 return ret); 2752 return ret);