Commit a37d23f8 authored by Evan Quan's avatar Evan Quan Committed by Alex Deucher
Browse files

drm/amd/pm: update SMU13 header files for coming OD support



Correct the data structures for OD feature support.

Signed-off-by: default avatarEvan Quan <evan.quan@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 50cff45e
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -38,13 +38,12 @@
#define SMU_13_0_0_PP_THERMALCONTROLLER_NONE 0
#define SMU_13_0_0_PP_THERMALCONTROLLER_NAVI21 28

#define SMU_13_0_0_PP_OVERDRIVE_VERSION 0x81        // OverDrive 8 Table Version 0.2
#define SMU_13_0_0_PP_OVERDRIVE_VERSION 0x83        // OverDrive 8 Table Version 0.2
#define SMU_13_0_0_PP_POWERSAVINGCLOCK_VERSION 0x01 // Power Saving Clock Table Version 1.00

enum SMU_13_0_0_ODFEATURE_CAP
{
    SMU_13_0_0_ODCAP_GFXCLK_LIMITS = 0,
    SMU_13_0_0_ODCAP_GFXCLK_CURVE,
    SMU_13_0_0_ODCAP_UCLK_LIMITS,
    SMU_13_0_0_ODCAP_POWER_LIMIT,
    SMU_13_0_0_ODCAP_FAN_ACOUSTIC_LIMIT,
@@ -59,13 +58,13 @@ enum SMU_13_0_0_ODFEATURE_CAP
    SMU_13_0_0_ODCAP_FAN_CURVE,
    SMU_13_0_0_ODCAP_AUTO_FAN_ACOUSTIC_LIMIT,
    SMU_13_0_0_ODCAP_POWER_MODE,
    SMU_13_0_0_ODCAP_PER_ZONE_GFX_VOLTAGE_OFFSET,
    SMU_13_0_0_ODCAP_COUNT,
};

enum SMU_13_0_0_ODFEATURE_ID
{
    SMU_13_0_0_ODFEATURE_GFXCLK_LIMITS           = 1 << SMU_13_0_0_ODCAP_GFXCLK_LIMITS,           //GFXCLK Limit feature
    SMU_13_0_0_ODFEATURE_GFXCLK_CURVE            = 1 << SMU_13_0_0_ODCAP_GFXCLK_CURVE,            //GFXCLK Curve feature
    SMU_13_0_0_ODFEATURE_UCLK_LIMITS             = 1 << SMU_13_0_0_ODCAP_UCLK_LIMITS,             //UCLK Limit feature
    SMU_13_0_0_ODFEATURE_POWER_LIMIT             = 1 << SMU_13_0_0_ODCAP_POWER_LIMIT,             //Power Limit feature
    SMU_13_0_0_ODFEATURE_FAN_ACOUSTIC_LIMIT      = 1 << SMU_13_0_0_ODCAP_FAN_ACOUSTIC_LIMIT,      //Fan Acoustic RPM feature
@@ -80,6 +79,7 @@ enum SMU_13_0_0_ODFEATURE_ID
    SMU_13_0_0_ODFEATURE_FAN_CURVE               = 1 << SMU_13_0_0_ODCAP_FAN_CURVE,               //Fan Curve feature
    SMU_13_0_0_ODFEATURE_AUTO_FAN_ACOUSTIC_LIMIT = 1 << SMU_13_0_0_ODCAP_AUTO_FAN_ACOUSTIC_LIMIT, //Auto Fan Acoustic RPM feature
    SMU_13_0_0_ODFEATURE_POWER_MODE              = 1 << SMU_13_0_0_ODCAP_POWER_MODE,              //Optimized GPU Power Mode feature
    SMU_13_0_0_ODFEATURE_PER_ZONE_GFX_VOLTAGE_OFFSET  = 1 << SMU_13_0_0_ODCAP_PER_ZONE_GFX_VOLTAGE_OFFSET,  //Perzone voltage offset feature
    SMU_13_0_0_ODFEATURE_COUNT                   = 16,
};

@@ -89,10 +89,6 @@ enum SMU_13_0_0_ODSETTING_ID
{
    SMU_13_0_0_ODSETTING_GFXCLKFMAX = 0,
    SMU_13_0_0_ODSETTING_GFXCLKFMIN,
    SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_A,
    SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_B,
    SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_C,
    SMU_13_0_0_ODSETTING_CUSTOM_CURVE_VFT_FMIN,
    SMU_13_0_0_ODSETTING_UCLKFMIN,
    SMU_13_0_0_ODSETTING_UCLKFMAX,
    SMU_13_0_0_ODSETTING_POWERPERCENTAGE,
@@ -117,6 +113,12 @@ enum SMU_13_0_0_ODSETTING_ID
    SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_5,
    SMU_13_0_0_ODSETTING_AUTO_FAN_ACOUSTIC_LIMIT,
    SMU_13_0_0_ODSETTING_POWER_MODE,
    SMU_13_0_0_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_1,
    SMU_13_0_0_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_2,
    SMU_13_0_0_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_3,
    SMU_13_0_0_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_4,
    SMU_13_0_0_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_5,
    SMU_13_0_0_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_6,
    SMU_13_0_0_ODSETTING_COUNT,
};
#define SMU_13_0_0_MAX_ODSETTING 64 //Maximum Number of ODSettings
+11 −7
Original line number Diff line number Diff line
@@ -667,7 +667,14 @@ typedef enum {

#define PP_NUM_RTAVFS_PWL_ZONES 5


#define PP_OD_FEATURE_GFX_VF_CURVE_BIT  0
#define PP_OD_FEATURE_PPT_BIT       2
#define PP_OD_FEATURE_FAN_CURVE_BIT 3
#define PP_OD_FEATURE_GFXCLK_BIT      7
#define PP_OD_FEATURE_UCLK_BIT      8
#define PP_OD_FEATURE_ZERO_FAN_BIT      9
#define PP_OD_FEATURE_TEMPERATURE_BIT 10
#define PP_OD_FEATURE_COUNT 13

// VBIOS or PPLIB configures telemetry slope and offset. Only slope expected to be set for SVI3
// Slope Q1.7, Offset Q1.2
@@ -689,10 +696,8 @@ typedef struct {

  //Voltage control
  int16_t                VoltageOffsetPerZoneBoundary[PP_NUM_OD_VF_CURVE_POINTS];
  uint16_t               VddGfxVmax;         // in mV

  uint8_t                IdlePwrSavingFeaturesCtrl;
  uint8_t                RuntimePwrSavingFeaturesCtrl;
  uint32_t               Reserved;

  //Frequency changes
  int16_t                GfxclkFmin;           // MHz
@@ -729,10 +734,9 @@ typedef struct {
  uint32_t FeatureCtrlMask;

  int16_t VoltageOffsetPerZoneBoundary;
  uint16_t               VddGfxVmax;         // in mV
  uint16_t               Reserved1;

  uint8_t                IdlePwrSavingFeaturesCtrl;
  uint8_t                RuntimePwrSavingFeaturesCtrl;
  uint16_t               Reserved2;

  int16_t               GfxclkFmin;           // MHz
  int16_t               GfxclkFmax;           // MHz
+5 −24
Original line number Diff line number Diff line
@@ -683,18 +683,12 @@ typedef struct {


#define PP_OD_FEATURE_GFX_VF_CURVE_BIT  0
#define PP_OD_FEATURE_VMAX_BIT      1
#define PP_OD_FEATURE_PPT_BIT       2
#define PP_OD_FEATURE_FAN_CURVE_BIT 3
#define PP_OD_FEATURE_FREQ_DETER_BIT 4
#define PP_OD_FEATURE_FULL_CTRL_BIT 5
#define PP_OD_FEATURE_TDC_BIT      6
#define PP_OD_FEATURE_GFXCLK_BIT      7
#define PP_OD_FEATURE_UCLK_BIT      8
#define PP_OD_FEATURE_ZERO_FAN_BIT      9
#define PP_OD_FEATURE_TEMPERATURE_BIT 10
#define PP_OD_FEATURE_POWER_FEATURE_CTRL_BIT 11
#define PP_OD_FEATURE_ASIC_TDC_BIT 12
#define PP_OD_FEATURE_COUNT 13

typedef enum {
@@ -713,10 +707,8 @@ typedef struct {

  //Voltage control
  int16_t                VoltageOffsetPerZoneBoundary[PP_NUM_OD_VF_CURVE_POINTS];
  uint16_t               VddGfxVmax;         // in mV

  uint8_t                IdlePwrSavingFeaturesCtrl;
  uint8_t                RuntimePwrSavingFeaturesCtrl;
  uint32_t               Reserved;

  //Frequency changes
  int16_t                GfxclkFmin;           // MHz
@@ -741,12 +733,7 @@ typedef struct {
  uint8_t                MaxOpTemp;
  uint8_t                Padding[4];

  uint16_t               GfxVoltageFullCtrlMode;
  uint16_t               GfxclkFullCtrlMode;
  uint16_t               UclkFullCtrlMode;
  int16_t                AsicTdc;

  uint32_t               Spare[10];
  uint32_t               Spare[12];
  uint32_t               MmHubPadding[8]; // SMU internal use. Adding here instead of external as a workaround
} OverDriveTable_t;

@@ -759,10 +746,9 @@ typedef struct {
  uint32_t FeatureCtrlMask;

  int16_t VoltageOffsetPerZoneBoundary;
  uint16_t               VddGfxVmax;         // in mV
  uint16_t               Reserved1;

  uint8_t                IdlePwrSavingFeaturesCtrl;
  uint8_t                RuntimePwrSavingFeaturesCtrl;
  uint16_t               Reserved2;

  int16_t                GfxclkFmin;           // MHz
  int16_t                GfxclkFmax;           // MHz
@@ -785,12 +771,7 @@ typedef struct {
  uint8_t                MaxOpTemp;
  uint8_t                Padding[4];

  uint16_t               GfxVoltageFullCtrlMode;
  uint16_t               GfxclkFullCtrlMode;
  uint16_t               UclkFullCtrlMode;
  int16_t                AsicTdc;

  uint32_t               Spare[10];
  uint32_t               Spare[12];

} OverDriveLimits_t;

+9 −7
Original line number Diff line number Diff line
@@ -38,13 +38,12 @@
#define SMU_13_0_7_PP_THERMALCONTROLLER_NONE 0
#define SMU_13_0_7_PP_THERMALCONTROLLER_NAVI21 28

#define SMU_13_0_7_PP_OVERDRIVE_VERSION 0x81        // OverDrive 8 Table Version 0.2
#define SMU_13_0_7_PP_OVERDRIVE_VERSION 0x83        // OverDrive 8 Table Version 0.2
#define SMU_13_0_7_PP_POWERSAVINGCLOCK_VERSION 0x01 // Power Saving Clock Table Version 1.00

enum SMU_13_0_7_ODFEATURE_CAP
{
    SMU_13_0_7_ODCAP_GFXCLK_LIMITS = 0,
    SMU_13_0_7_ODCAP_GFXCLK_CURVE,
    SMU_13_0_7_ODCAP_UCLK_LIMITS,
    SMU_13_0_7_ODCAP_POWER_LIMIT,
    SMU_13_0_7_ODCAP_FAN_ACOUSTIC_LIMIT,
@@ -59,13 +58,13 @@ enum SMU_13_0_7_ODFEATURE_CAP
    SMU_13_0_7_ODCAP_FAN_CURVE,
    SMU_13_0_7_ODCAP_AUTO_FAN_ACOUSTIC_LIMIT,
    SMU_13_0_7_ODCAP_POWER_MODE,
    SMU_13_0_7_ODCAP_PER_ZONE_GFX_VOLTAGE_OFFSET,
    SMU_13_0_7_ODCAP_COUNT,
};

enum SMU_13_0_7_ODFEATURE_ID
{
    SMU_13_0_7_ODFEATURE_GFXCLK_LIMITS           = 1 << SMU_13_0_7_ODCAP_GFXCLK_LIMITS,           //GFXCLK Limit feature
    SMU_13_0_7_ODFEATURE_GFXCLK_CURVE            = 1 << SMU_13_0_7_ODCAP_GFXCLK_CURVE,            //GFXCLK Curve feature
    SMU_13_0_7_ODFEATURE_UCLK_LIMITS             = 1 << SMU_13_0_7_ODCAP_UCLK_LIMITS,             //UCLK Limit feature
    SMU_13_0_7_ODFEATURE_POWER_LIMIT             = 1 << SMU_13_0_7_ODCAP_POWER_LIMIT,             //Power Limit feature
    SMU_13_0_7_ODFEATURE_FAN_ACOUSTIC_LIMIT      = 1 << SMU_13_0_7_ODCAP_FAN_ACOUSTIC_LIMIT,      //Fan Acoustic RPM feature
@@ -80,6 +79,7 @@ enum SMU_13_0_7_ODFEATURE_ID
    SMU_13_0_7_ODFEATURE_FAN_CURVE               = 1 << SMU_13_0_7_ODCAP_FAN_CURVE,               //Fan Curve feature
    SMU_13_0_7_ODFEATURE_AUTO_FAN_ACOUSTIC_LIMIT = 1 << SMU_13_0_7_ODCAP_AUTO_FAN_ACOUSTIC_LIMIT, //Auto Fan Acoustic RPM feature
    SMU_13_0_7_ODFEATURE_POWER_MODE              = 1 << SMU_13_0_7_ODCAP_POWER_MODE,              //Optimized GPU Power Mode feature
    SMU_13_0_7_ODFEATURE_PER_ZONE_GFX_VOLTAGE_OFFSET  = 1 << SMU_13_0_7_ODCAP_PER_ZONE_GFX_VOLTAGE_OFFSET,  //Perzone voltage offset feature
    SMU_13_0_7_ODFEATURE_COUNT                   = 16,
};

@@ -89,10 +89,6 @@ enum SMU_13_0_7_ODSETTING_ID
{
    SMU_13_0_7_ODSETTING_GFXCLKFMAX = 0,
    SMU_13_0_7_ODSETTING_GFXCLKFMIN,
    SMU_13_0_7_ODSETTING_CUSTOM_GFX_VF_CURVE_A,
    SMU_13_0_7_ODSETTING_CUSTOM_GFX_VF_CURVE_B,
    SMU_13_0_7_ODSETTING_CUSTOM_GFX_VF_CURVE_C,
    SMU_13_0_7_ODSETTING_CUSTOM_CURVE_VFT_FMIN,
    SMU_13_0_7_ODSETTING_UCLKFMIN,
    SMU_13_0_7_ODSETTING_UCLKFMAX,
    SMU_13_0_7_ODSETTING_POWERPERCENTAGE,
@@ -117,6 +113,12 @@ enum SMU_13_0_7_ODSETTING_ID
    SMU_13_0_7_ODSETTING_FAN_CURVE_SPEED_5,
    SMU_13_0_7_ODSETTING_AUTO_FAN_ACOUSTIC_LIMIT,
    SMU_13_0_7_ODSETTING_POWER_MODE,
    SMU_13_0_7_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_1,
    SMU_13_0_7_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_2,
    SMU_13_0_7_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_3,
    SMU_13_0_7_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_4,
    SMU_13_0_7_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_5,
    SMU_13_0_7_ODSETTING_PER_ZONE_GFX_VOLTAGE_OFFSET_POINT_6,
    SMU_13_0_7_ODSETTING_COUNT,
};
#define SMU_13_0_7_MAX_ODSETTING 64 //Maximum Number of ODSettings