Skip to content

Commit

Permalink
drm/amd/pp: Fix SMIO implementation on CI
Browse files Browse the repository at this point in the history
Setup smio table(smio registers's address and voltage ID)
for various voltage domain.

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Rex Zhu <Rex.Zhu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
  • Loading branch information
Rex Zhu authored and Alex Deucher committed Feb 19, 2018
1 parent 53241e0 commit e8ea1b9
Showing 1 changed file with 20 additions and 11 deletions.
31 changes: 20 additions & 11 deletions drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
Original file line number Diff line number Diff line change
Expand Up @@ -860,10 +860,13 @@ static int ci_populate_smc_vddc_table(struct pp_hwmgr *hwmgr,
PP_ASSERT_WITH_CODE(0 == result, "do not populate SMC VDDC voltage table", return -EINVAL);

/* GPIO voltage control */
if (SMU7_VOLTAGE_CONTROL_BY_GPIO == data->voltage_control)
table->VddcLevel[count].Smio |= data->vddc_voltage_table.entries[count].smio_low;
else
if (SMU7_VOLTAGE_CONTROL_BY_GPIO == data->voltage_control) {
table->VddcLevel[count].Smio = (uint8_t) count;
table->Smio[count] |= data->vddc_voltage_table.entries[count].smio_low;
table->SmioMaskVddcVid |= data->vddc_voltage_table.entries[count].smio_low;
} else {
table->VddcLevel[count].Smio = 0;
}
}

CONVERT_FROM_HOST_TO_SMC_UL(table->VddcLevelCount);
Expand All @@ -885,10 +888,13 @@ static int ci_populate_smc_vdd_ci_table(struct pp_hwmgr *hwmgr,
&(data->vddci_voltage_table.entries[count]),
&(table->VddciLevel[count]));
PP_ASSERT_WITH_CODE(result == 0, "do not populate SMC VDDCI voltage table", return -EINVAL);
if (SMU7_VOLTAGE_CONTROL_BY_GPIO == data->vddci_control)
table->VddciLevel[count].Smio |= data->vddci_voltage_table.entries[count].smio_low;
else
table->VddciLevel[count].Smio |= 0;
if (SMU7_VOLTAGE_CONTROL_BY_GPIO == data->vddci_control) {
table->VddciLevel[count].Smio = (uint8_t) count;
table->Smio[count] |= data->vddci_voltage_table.entries[count].smio_low;
table->SmioMaskVddciVid |= data->vddci_voltage_table.entries[count].smio_low;
} else {
table->VddciLevel[count].Smio = 0;
}
}

CONVERT_FROM_HOST_TO_SMC_UL(table->VddciLevelCount);
Expand All @@ -910,10 +916,13 @@ static int ci_populate_smc_mvdd_table(struct pp_hwmgr *hwmgr,
&(data->mvdd_voltage_table.entries[count]),
&table->MvddLevel[count]);
PP_ASSERT_WITH_CODE(result == 0, "do not populate SMC mvdd voltage table", return -EINVAL);
if (SMU7_VOLTAGE_CONTROL_BY_GPIO == data->mvdd_control)
table->MvddLevel[count].Smio |= data->mvdd_voltage_table.entries[count].smio_low;
else
table->MvddLevel[count].Smio |= 0;
if (SMU7_VOLTAGE_CONTROL_BY_GPIO == data->mvdd_control) {
table->MvddLevel[count].Smio = (uint8_t) count;
table->Smio[count] |= data->mvdd_voltage_table.entries[count].smio_low;
table->SmioMaskMvddVid |= data->mvdd_voltage_table.entries[count].smio_low;
} else {
table->MvddLevel[count].Smio = 0;
}
}

CONVERT_FROM_HOST_TO_SMC_UL(table->MvddLevelCount);
Expand Down

0 comments on commit e8ea1b9

Please sign in to comment.