Skip to content

Commit dcb489b

Browse files
Evan Quanalexdeucher
authored andcommitted
drm/amd/pm: share the code around SMU13 pcie parameters update
So that SMU13.0.0 and SMU13.0.7 do not need to have one copy each. Signed-off-by: Evan Quan <[email protected]> Signed-off-by: Mario Limonciello <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]> Cc: [email protected] # 6.1.x
1 parent 8a774fe commit dcb489b

File tree

4 files changed

+37
-64
lines changed

4 files changed

+37
-64
lines changed

drivers/gpu/drm/amd/pm/swsmu/inc/smu_v13_0.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,5 +295,9 @@ int smu_v13_0_get_pptable_from_firmware(struct smu_context *smu,
295295
uint32_t *size,
296296
uint32_t pptable_id);
297297

298+
int smu_v13_0_update_pcie_parameters(struct smu_context *smu,
299+
uint32_t pcie_gen_cap,
300+
uint32_t pcie_width_cap);
301+
298302
#endif
299303
#endif

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2424,3 +2424,34 @@ int smu_v13_0_mode1_reset(struct smu_context *smu)
24242424

24252425
return ret;
24262426
}
2427+
2428+
int smu_v13_0_update_pcie_parameters(struct smu_context *smu,
2429+
uint32_t pcie_gen_cap,
2430+
uint32_t pcie_width_cap)
2431+
{
2432+
struct smu_13_0_dpm_context *dpm_context = smu->smu_dpm.dpm_context;
2433+
struct smu_13_0_pcie_table *pcie_table =
2434+
&dpm_context->dpm_tables.pcie_table;
2435+
uint32_t smu_pcie_arg;
2436+
int ret, i;
2437+
2438+
for (i = 0; i < pcie_table->num_of_link_levels; i++) {
2439+
if (pcie_table->pcie_gen[i] > pcie_gen_cap)
2440+
pcie_table->pcie_gen[i] = pcie_gen_cap;
2441+
if (pcie_table->pcie_lane[i] > pcie_width_cap)
2442+
pcie_table->pcie_lane[i] = pcie_width_cap;
2443+
2444+
smu_pcie_arg = i << 16;
2445+
smu_pcie_arg |= pcie_table->pcie_gen[i] << 8;
2446+
smu_pcie_arg |= pcie_table->pcie_lane[i];
2447+
2448+
ret = smu_cmn_send_smc_msg_with_param(smu,
2449+
SMU_MSG_OverridePcieParameters,
2450+
smu_pcie_arg,
2451+
NULL);
2452+
if (ret)
2453+
return ret;
2454+
}
2455+
2456+
return 0;
2457+
}

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_0_ppt.c

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1645,37 +1645,6 @@ static int smu_v13_0_0_force_clk_levels(struct smu_context *smu,
16451645
return ret;
16461646
}
16471647

1648-
static int smu_v13_0_0_update_pcie_parameters(struct smu_context *smu,
1649-
uint32_t pcie_gen_cap,
1650-
uint32_t pcie_width_cap)
1651-
{
1652-
struct smu_13_0_dpm_context *dpm_context = smu->smu_dpm.dpm_context;
1653-
struct smu_13_0_pcie_table *pcie_table =
1654-
&dpm_context->dpm_tables.pcie_table;
1655-
uint32_t smu_pcie_arg;
1656-
int ret, i;
1657-
1658-
for (i = 0; i < pcie_table->num_of_link_levels; i++) {
1659-
if (pcie_table->pcie_gen[i] > pcie_gen_cap)
1660-
pcie_table->pcie_gen[i] = pcie_gen_cap;
1661-
if (pcie_table->pcie_lane[i] > pcie_width_cap)
1662-
pcie_table->pcie_lane[i] = pcie_width_cap;
1663-
1664-
smu_pcie_arg = i << 16;
1665-
smu_pcie_arg |= pcie_table->pcie_gen[i] << 8;
1666-
smu_pcie_arg |= pcie_table->pcie_lane[i];
1667-
1668-
ret = smu_cmn_send_smc_msg_with_param(smu,
1669-
SMU_MSG_OverridePcieParameters,
1670-
smu_pcie_arg,
1671-
NULL);
1672-
if (ret)
1673-
return ret;
1674-
}
1675-
1676-
return 0;
1677-
}
1678-
16791648
static const struct smu_temperature_range smu13_thermal_policy[] = {
16801649
{-273150, 99000, 99000, -273150, 99000, 99000, -273150, 99000, 99000},
16811650
{ 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000, 120000},
@@ -2654,7 +2623,7 @@ static const struct pptable_funcs smu_v13_0_0_ppt_funcs = {
26542623
.feature_is_enabled = smu_cmn_feature_is_enabled,
26552624
.print_clk_levels = smu_v13_0_0_print_clk_levels,
26562625
.force_clk_levels = smu_v13_0_0_force_clk_levels,
2657-
.update_pcie_parameters = smu_v13_0_0_update_pcie_parameters,
2626+
.update_pcie_parameters = smu_v13_0_update_pcie_parameters,
26582627
.get_thermal_temperature_range = smu_v13_0_0_get_thermal_temperature_range,
26592628
.register_irq_handler = smu_v13_0_register_irq_handler,
26602629
.enable_thermal_alert = smu_v13_0_enable_thermal_alert,

drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0_7_ppt.c

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1635,37 +1635,6 @@ static int smu_v13_0_7_force_clk_levels(struct smu_context *smu,
16351635
return ret;
16361636
}
16371637

1638-
static int smu_v13_0_7_update_pcie_parameters(struct smu_context *smu,
1639-
uint32_t pcie_gen_cap,
1640-
uint32_t pcie_width_cap)
1641-
{
1642-
struct smu_13_0_dpm_context *dpm_context = smu->smu_dpm.dpm_context;
1643-
struct smu_13_0_pcie_table *pcie_table =
1644-
&dpm_context->dpm_tables.pcie_table;
1645-
uint32_t smu_pcie_arg;
1646-
int ret, i;
1647-
1648-
for (i = 0; i < pcie_table->num_of_link_levels; i++) {
1649-
if (pcie_table->pcie_gen[i] > pcie_gen_cap)
1650-
pcie_table->pcie_gen[i] = pcie_gen_cap;
1651-
if (pcie_table->pcie_lane[i] > pcie_width_cap)
1652-
pcie_table->pcie_lane[i] = pcie_width_cap;
1653-
1654-
smu_pcie_arg = i << 16;
1655-
smu_pcie_arg |= pcie_table->pcie_gen[i] << 8;
1656-
smu_pcie_arg |= pcie_table->pcie_lane[i];
1657-
1658-
ret = smu_cmn_send_smc_msg_with_param(smu,
1659-
SMU_MSG_OverridePcieParameters,
1660-
smu_pcie_arg,
1661-
NULL);
1662-
if (ret)
1663-
return ret;
1664-
}
1665-
1666-
return 0;
1667-
}
1668-
16691638
static const struct smu_temperature_range smu13_thermal_policy[] =
16701639
{
16711640
{-273150, 99000, 99000, -273150, 99000, 99000, -273150, 99000, 99000},
@@ -2234,7 +2203,7 @@ static const struct pptable_funcs smu_v13_0_7_ppt_funcs = {
22342203
.feature_is_enabled = smu_cmn_feature_is_enabled,
22352204
.print_clk_levels = smu_v13_0_7_print_clk_levels,
22362205
.force_clk_levels = smu_v13_0_7_force_clk_levels,
2237-
.update_pcie_parameters = smu_v13_0_7_update_pcie_parameters,
2206+
.update_pcie_parameters = smu_v13_0_update_pcie_parameters,
22382207
.get_thermal_temperature_range = smu_v13_0_7_get_thermal_temperature_range,
22392208
.register_irq_handler = smu_v13_0_register_irq_handler,
22402209
.enable_thermal_alert = smu_v13_0_enable_thermal_alert,

0 commit comments

Comments
 (0)