Commit a486bc3c authored by Likun Gao's avatar Likun Gao Committed by Alex Deucher

drm/amd/powerplay: update driver if file for sienna_cichlid

Update sienna_cichlid driver if header and related files.
Support new smu metrics for pre & postDS frequency.
Signed-off-by: default avatarLikun Gao <Likun.Gao@amd.com>
Reviewed-by: default avatarKenneth Feng <kenneth.feng@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent de273b73
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
// *** IMPORTANT *** // *** IMPORTANT ***
// SMU TEAM: Always increment the interface version if // SMU TEAM: Always increment the interface version if
// any structure is changed in this file // any structure is changed in this file
#define SMU11_DRIVER_IF_VERSION 0x33 #define SMU11_DRIVER_IF_VERSION 0x34
#define PPTABLE_Sienna_Cichlid_SMU_VERSION 5 #define PPTABLE_Sienna_Cichlid_SMU_VERSION 5
...@@ -968,9 +968,15 @@ typedef struct { ...@@ -968,9 +968,15 @@ typedef struct {
typedef struct { typedef struct {
uint32_t CurrClock[PPCLK_COUNT]; uint32_t CurrClock[PPCLK_COUNT];
uint16_t AverageGfxclkFrequency;
uint16_t AverageFclkFrequency; uint16_t AverageGfxclkFrequencyPreDs;
uint16_t AverageUclkFrequency ; uint16_t AverageGfxclkFrequencyPostDs;
uint16_t AverageFclkFrequencyPreDs;
uint16_t AverageFclkFrequencyPostDs;
uint16_t AverageUclkFrequencyPreDs ;
uint16_t AverageUclkFrequencyPostDs ;
uint16_t AverageGfxActivity ; uint16_t AverageGfxActivity ;
uint16_t AverageUclkActivity ; uint16_t AverageUclkActivity ;
uint8_t CurrSocVoltageOffset ; uint8_t CurrSocVoltageOffset ;
...@@ -988,6 +994,7 @@ typedef struct { ...@@ -988,6 +994,7 @@ typedef struct {
uint16_t TemperatureLiquid0 ; uint16_t TemperatureLiquid0 ;
uint16_t TemperatureLiquid1 ; uint16_t TemperatureLiquid1 ;
uint16_t TemperaturePlx ; uint16_t TemperaturePlx ;
uint16_t Padding16 ;
uint32_t ThrottlerStatus ; uint32_t ThrottlerStatus ;
uint8_t LinkDpmLevel; uint8_t LinkDpmLevel;
...@@ -1007,7 +1014,9 @@ typedef struct { ...@@ -1007,7 +1014,9 @@ typedef struct {
uint16_t AverageVclk1Frequency ; uint16_t AverageVclk1Frequency ;
uint16_t AverageDclk1Frequency ; uint16_t AverageDclk1Frequency ;
uint16_t VcnActivityPercentage ; //place holder, David N. to provide full sequence uint16_t VcnActivityPercentage ; //place holder, David N. to provide full sequence
uint16_t padding16_2; uint8_t PcieRate ;
uint8_t PcieWidth ;
} SmuMetrics_t; } SmuMetrics_t;
typedef struct { typedef struct {
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#define SMU11_DRIVER_IF_VERSION_NV10 0x36 #define SMU11_DRIVER_IF_VERSION_NV10 0x36
#define SMU11_DRIVER_IF_VERSION_NV12 0x33 #define SMU11_DRIVER_IF_VERSION_NV12 0x33
#define SMU11_DRIVER_IF_VERSION_NV14 0x36 #define SMU11_DRIVER_IF_VERSION_NV14 0x36
#define SMU11_DRIVER_IF_VERSION_Sienna_Cichlid 0x33 #define SMU11_DRIVER_IF_VERSION_Sienna_Cichlid 0x34
#define SMU11_DRIVER_IF_VERSION_Navy_Flounder 0x2 #define SMU11_DRIVER_IF_VERSION_Navy_Flounder 0x2
/* MP Apertures */ /* MP Apertures */
......
...@@ -70,6 +70,8 @@ ...@@ -70,6 +70,8 @@
FEATURE_MASK(FEATURE_DPM_FCLK_BIT) | \ FEATURE_MASK(FEATURE_DPM_FCLK_BIT) | \
FEATURE_MASK(FEATURE_DPM_DCEFCLK_BIT)) FEATURE_MASK(FEATURE_DPM_DCEFCLK_BIT))
#define SMU_11_0_7_GFX_BUSY_THRESHOLD 15
static struct cmn2asic_msg_mapping sienna_cichlid_message_map[SMU_MSG_MAX_COUNT] = { static struct cmn2asic_msg_mapping sienna_cichlid_message_map[SMU_MSG_MAX_COUNT] = {
MSG_MAP(TestMessage, PPSMC_MSG_TestMessage, 1), MSG_MAP(TestMessage, PPSMC_MSG_TestMessage, 1),
MSG_MAP(GetSmuVersion, PPSMC_MSG_GetSmuVersion, 1), MSG_MAP(GetSmuVersion, PPSMC_MSG_GetSmuVersion, 1),
...@@ -443,13 +445,16 @@ static int sienna_cichlid_get_smu_metrics_data(struct smu_context *smu, ...@@ -443,13 +445,16 @@ static int sienna_cichlid_get_smu_metrics_data(struct smu_context *smu,
*value = metrics->CurrClock[PPCLK_DCEFCLK]; *value = metrics->CurrClock[PPCLK_DCEFCLK];
break; break;
case METRICS_AVERAGE_GFXCLK: case METRICS_AVERAGE_GFXCLK:
*value = metrics->AverageGfxclkFrequency; if (metrics->AverageGfxActivity <= SMU_11_0_7_GFX_BUSY_THRESHOLD)
*value = metrics->AverageGfxclkFrequencyPostDs;
else
*value = metrics->AverageGfxclkFrequencyPreDs;
break; break;
case METRICS_AVERAGE_FCLK: case METRICS_AVERAGE_FCLK:
*value = metrics->AverageFclkFrequency; *value = metrics->AverageFclkFrequencyPostDs;
break; break;
case METRICS_AVERAGE_UCLK: case METRICS_AVERAGE_UCLK:
*value = metrics->AverageUclkFrequency; *value = metrics->AverageUclkFrequencyPostDs;
break; break;
case METRICS_AVERAGE_GFXACTIVITY: case METRICS_AVERAGE_GFXACTIVITY:
*value = metrics->AverageGfxActivity; *value = metrics->AverageGfxActivity;
......
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