Commit 6fe2ecdb authored by Evan Quan's avatar Evan Quan Committed by Alex Deucher

drm/amd/pm: correct the pcie link state check for SMU13

Update the driver implementations to fit those data exposed
by PMFW.
Signed-off-by: default avatarEvan Quan <evan.quan@amd.com>
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent fd784a41
...@@ -62,6 +62,12 @@ ...@@ -62,6 +62,12 @@
#define CTF_OFFSET_HOTSPOT 5 #define CTF_OFFSET_HOTSPOT 5
#define CTF_OFFSET_MEM 5 #define CTF_OFFSET_MEM 5
static const int pmfw_decoded_link_speed[5] = {1, 2, 3, 4, 5};
static const int pmfw_decoded_link_width[7] = {0, 1, 2, 4, 8, 12, 16};
#define DECODE_GEN_SPEED(gen_speed_idx) (pmfw_decoded_link_speed[gen_speed_idx])
#define DECODE_LANE_WIDTH(lane_width_idx) (pmfw_decoded_link_width[lane_width_idx])
struct smu_13_0_max_sustainable_clocks { struct smu_13_0_max_sustainable_clocks {
uint32_t display_clock; uint32_t display_clock;
uint32_t phy_clock; uint32_t phy_clock;
......
...@@ -1144,8 +1144,8 @@ static int smu_v13_0_0_print_clk_levels(struct smu_context *smu, ...@@ -1144,8 +1144,8 @@ static int smu_v13_0_0_print_clk_levels(struct smu_context *smu,
(pcie_table->pcie_lane[i] == 5) ? "x12" : (pcie_table->pcie_lane[i] == 5) ? "x12" :
(pcie_table->pcie_lane[i] == 6) ? "x16" : "", (pcie_table->pcie_lane[i] == 6) ? "x16" : "",
pcie_table->clk_freq[i], pcie_table->clk_freq[i],
((gen_speed - 1) == pcie_table->pcie_gen[i]) && (gen_speed == DECODE_GEN_SPEED(pcie_table->pcie_gen[i])) &&
(lane_width == link_width[pcie_table->pcie_lane[i]]) ? (lane_width == DECODE_LANE_WIDTH(link_width[pcie_table->pcie_lane[i]])) ?
"*" : ""); "*" : "");
break; break;
......
...@@ -1133,8 +1133,8 @@ static int smu_v13_0_7_print_clk_levels(struct smu_context *smu, ...@@ -1133,8 +1133,8 @@ static int smu_v13_0_7_print_clk_levels(struct smu_context *smu,
(pcie_table->pcie_lane[i] == 5) ? "x12" : (pcie_table->pcie_lane[i] == 5) ? "x12" :
(pcie_table->pcie_lane[i] == 6) ? "x16" : "", (pcie_table->pcie_lane[i] == 6) ? "x16" : "",
pcie_table->clk_freq[i], pcie_table->clk_freq[i],
(gen_speed == pcie_table->pcie_gen[i]) && (gen_speed == DECODE_GEN_SPEED(pcie_table->pcie_gen[i])) &&
(lane_width == pcie_table->pcie_lane[i]) ? (lane_width == DECODE_LANE_WIDTH(pcie_table->pcie_lane[i])) ?
"*" : ""); "*" : "");
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment