mirror of
https://github.com/torvalds/linux.git
synced 2026-07-30 11:11:26 +02:00
drm/amd/pm: force send pcie parmater on navi1x
v1: the PMFW didn't initialize the PCIe DPM parameters and requires the KMD to actively provide these parameters. v2: clean & remove unused code logic (lijo) Fixes:1a18607c07("drm/amd/pm: override pcie dpm parameters only if it is necessary") Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4671 Signed-off-by: Yang Wang <kevinyang.wang@amd.com> Reviewed-by: Lijo Lazar <lijo.lazar@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commitb0dbd5db7c)
This commit is contained in:
parent
4f74c2dd97
commit
dc8a887de1
|
|
@ -2455,24 +2455,21 @@ static int navi10_update_pcie_parameters(struct smu_context *smu,
|
|||
}
|
||||
|
||||
for (i = 0; i < NUM_LINK_LEVELS; i++) {
|
||||
if (pptable->PcieGenSpeed[i] > pcie_gen_cap ||
|
||||
pptable->PcieLaneCount[i] > pcie_width_cap) {
|
||||
dpm_context->dpm_tables.pcie_table.pcie_gen[i] =
|
||||
pptable->PcieGenSpeed[i] > pcie_gen_cap ?
|
||||
pcie_gen_cap : pptable->PcieGenSpeed[i];
|
||||
dpm_context->dpm_tables.pcie_table.pcie_lane[i] =
|
||||
pptable->PcieLaneCount[i] > pcie_width_cap ?
|
||||
pcie_width_cap : pptable->PcieLaneCount[i];
|
||||
smu_pcie_arg = i << 16;
|
||||
smu_pcie_arg |= dpm_context->dpm_tables.pcie_table.pcie_gen[i] << 8;
|
||||
smu_pcie_arg |= dpm_context->dpm_tables.pcie_table.pcie_lane[i];
|
||||
ret = smu_cmn_send_smc_msg_with_param(smu,
|
||||
SMU_MSG_OverridePcieParameters,
|
||||
smu_pcie_arg,
|
||||
NULL);
|
||||
if (ret)
|
||||
break;
|
||||
}
|
||||
dpm_context->dpm_tables.pcie_table.pcie_gen[i] =
|
||||
pptable->PcieGenSpeed[i] > pcie_gen_cap ?
|
||||
pcie_gen_cap : pptable->PcieGenSpeed[i];
|
||||
dpm_context->dpm_tables.pcie_table.pcie_lane[i] =
|
||||
pptable->PcieLaneCount[i] > pcie_width_cap ?
|
||||
pcie_width_cap : pptable->PcieLaneCount[i];
|
||||
smu_pcie_arg = i << 16;
|
||||
smu_pcie_arg |= dpm_context->dpm_tables.pcie_table.pcie_gen[i] << 8;
|
||||
smu_pcie_arg |= dpm_context->dpm_tables.pcie_table.pcie_lane[i];
|
||||
ret = smu_cmn_send_smc_msg_with_param(smu,
|
||||
SMU_MSG_OverridePcieParameters,
|
||||
smu_pcie_arg,
|
||||
NULL);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user