0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #ifndef SMU_13_0_0_PPTABLE_H
0023 #define SMU_13_0_0_PPTABLE_H
0024
0025 #pragma pack(push, 1)
0026
0027 #define SMU_13_0_0_TABLE_FORMAT_REVISION 15
0028
0029
0030 #define SMU_13_0_0_PP_PLATFORM_CAP_POWERPLAY 0x1
0031 #define SMU_13_0_0_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 0x2
0032 #define SMU_13_0_0_PP_PLATFORM_CAP_HARDWAREDC 0x4
0033 #define SMU_13_0_0_PP_PLATFORM_CAP_BACO 0x8
0034 #define SMU_13_0_0_PP_PLATFORM_CAP_MACO 0x10
0035 #define SMU_13_0_0_PP_PLATFORM_CAP_SHADOWPSTATE 0x20
0036
0037
0038 #define SMU_13_0_0_PP_THERMALCONTROLLER_NONE 0
0039 #define SMU_13_0_0_PP_THERMALCONTROLLER_NAVI21 28
0040
0041 #define SMU_13_0_0_PP_OVERDRIVE_VERSION 0x81
0042 #define SMU_13_0_0_PP_POWERSAVINGCLOCK_VERSION 0x01
0043
0044 enum SMU_13_0_0_ODFEATURE_CAP
0045 {
0046 SMU_13_0_0_ODCAP_GFXCLK_LIMITS = 0,
0047 SMU_13_0_0_ODCAP_GFXCLK_CURVE,
0048 SMU_13_0_0_ODCAP_UCLK_LIMITS,
0049 SMU_13_0_0_ODCAP_POWER_LIMIT,
0050 SMU_13_0_0_ODCAP_FAN_ACOUSTIC_LIMIT,
0051 SMU_13_0_0_ODCAP_FAN_SPEED_MIN,
0052 SMU_13_0_0_ODCAP_TEMPERATURE_FAN,
0053 SMU_13_0_0_ODCAP_TEMPERATURE_SYSTEM,
0054 SMU_13_0_0_ODCAP_MEMORY_TIMING_TUNE,
0055 SMU_13_0_0_ODCAP_FAN_ZERO_RPM_CONTROL,
0056 SMU_13_0_0_ODCAP_AUTO_UV_ENGINE,
0057 SMU_13_0_0_ODCAP_AUTO_OC_ENGINE,
0058 SMU_13_0_0_ODCAP_AUTO_OC_MEMORY,
0059 SMU_13_0_0_ODCAP_FAN_CURVE,
0060 SMU_13_0_0_ODCAP_AUTO_FAN_ACOUSTIC_LIMIT,
0061 SMU_13_0_0_ODCAP_POWER_MODE,
0062 SMU_13_0_0_ODCAP_COUNT,
0063 };
0064
0065 enum SMU_13_0_0_ODFEATURE_ID
0066 {
0067 SMU_13_0_0_ODFEATURE_GFXCLK_LIMITS = 1 << SMU_13_0_0_ODCAP_GFXCLK_LIMITS,
0068 SMU_13_0_0_ODFEATURE_GFXCLK_CURVE = 1 << SMU_13_0_0_ODCAP_GFXCLK_CURVE,
0069 SMU_13_0_0_ODFEATURE_UCLK_LIMITS = 1 << SMU_13_0_0_ODCAP_UCLK_LIMITS,
0070 SMU_13_0_0_ODFEATURE_POWER_LIMIT = 1 << SMU_13_0_0_ODCAP_POWER_LIMIT,
0071 SMU_13_0_0_ODFEATURE_FAN_ACOUSTIC_LIMIT = 1 << SMU_13_0_0_ODCAP_FAN_ACOUSTIC_LIMIT,
0072 SMU_13_0_0_ODFEATURE_FAN_SPEED_MIN = 1 << SMU_13_0_0_ODCAP_FAN_SPEED_MIN,
0073 SMU_13_0_0_ODFEATURE_TEMPERATURE_FAN = 1 << SMU_13_0_0_ODCAP_TEMPERATURE_FAN,
0074 SMU_13_0_0_ODFEATURE_TEMPERATURE_SYSTEM = 1 << SMU_13_0_0_ODCAP_TEMPERATURE_SYSTEM,
0075 SMU_13_0_0_ODFEATURE_MEMORY_TIMING_TUNE = 1 << SMU_13_0_0_ODCAP_MEMORY_TIMING_TUNE,
0076 SMU_13_0_0_ODFEATURE_FAN_ZERO_RPM_CONTROL = 1 << SMU_13_0_0_ODCAP_FAN_ZERO_RPM_CONTROL,
0077 SMU_13_0_0_ODFEATURE_AUTO_UV_ENGINE = 1 << SMU_13_0_0_ODCAP_AUTO_UV_ENGINE,
0078 SMU_13_0_0_ODFEATURE_AUTO_OC_ENGINE = 1 << SMU_13_0_0_ODCAP_AUTO_OC_ENGINE,
0079 SMU_13_0_0_ODFEATURE_AUTO_OC_MEMORY = 1 << SMU_13_0_0_ODCAP_AUTO_OC_MEMORY,
0080 SMU_13_0_0_ODFEATURE_FAN_CURVE = 1 << SMU_13_0_0_ODCAP_FAN_CURVE,
0081 SMU_13_0_0_ODFEATURE_AUTO_FAN_ACOUSTIC_LIMIT = 1 << SMU_13_0_0_ODCAP_AUTO_FAN_ACOUSTIC_LIMIT,
0082 SMU_13_0_0_ODFEATURE_POWER_MODE = 1 << SMU_13_0_0_ODCAP_POWER_MODE,
0083 SMU_13_0_0_ODFEATURE_COUNT = 16,
0084 };
0085
0086 #define SMU_13_0_0_MAX_ODFEATURE 32
0087
0088 enum SMU_13_0_0_ODSETTING_ID
0089 {
0090 SMU_13_0_0_ODSETTING_GFXCLKFMAX = 0,
0091 SMU_13_0_0_ODSETTING_GFXCLKFMIN,
0092 SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_A,
0093 SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_B,
0094 SMU_13_0_0_ODSETTING_CUSTOM_GFX_VF_CURVE_C,
0095 SMU_13_0_0_ODSETTING_CUSTOM_CURVE_VFT_FMIN,
0096 SMU_13_0_0_ODSETTING_UCLKFMIN,
0097 SMU_13_0_0_ODSETTING_UCLKFMAX,
0098 SMU_13_0_0_ODSETTING_POWERPERCENTAGE,
0099 SMU_13_0_0_ODSETTING_FANRPMMIN,
0100 SMU_13_0_0_ODSETTING_FANRPMACOUSTICLIMIT,
0101 SMU_13_0_0_ODSETTING_FANTARGETTEMPERATURE,
0102 SMU_13_0_0_ODSETTING_OPERATINGTEMPMAX,
0103 SMU_13_0_0_ODSETTING_ACTIMING,
0104 SMU_13_0_0_ODSETTING_FAN_ZERO_RPM_CONTROL,
0105 SMU_13_0_0_ODSETTING_AUTOUVENGINE,
0106 SMU_13_0_0_ODSETTING_AUTOOCENGINE,
0107 SMU_13_0_0_ODSETTING_AUTOOCMEMORY,
0108 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_1,
0109 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_1,
0110 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_2,
0111 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_2,
0112 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_3,
0113 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_3,
0114 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_4,
0115 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_4,
0116 SMU_13_0_0_ODSETTING_FAN_CURVE_TEMPERATURE_5,
0117 SMU_13_0_0_ODSETTING_FAN_CURVE_SPEED_5,
0118 SMU_13_0_0_ODSETTING_AUTO_FAN_ACOUSTIC_LIMIT,
0119 SMU_13_0_0_ODSETTING_POWER_MODE,
0120 SMU_13_0_0_ODSETTING_COUNT,
0121 };
0122 #define SMU_13_0_0_MAX_ODSETTING 64
0123
0124 enum SMU_13_0_0_PWRMODE_SETTING
0125 {
0126 SMU_13_0_0_PMSETTING_POWER_LIMIT_QUIET = 0,
0127 SMU_13_0_0_PMSETTING_POWER_LIMIT_BALANCE,
0128 SMU_13_0_0_PMSETTING_POWER_LIMIT_TURBO,
0129 SMU_13_0_0_PMSETTING_POWER_LIMIT_RAGE,
0130 SMU_13_0_0_PMSETTING_ACOUSTIC_TEMP_QUIET,
0131 SMU_13_0_0_PMSETTING_ACOUSTIC_TEMP_BALANCE,
0132 SMU_13_0_0_PMSETTING_ACOUSTIC_TEMP_TURBO,
0133 SMU_13_0_0_PMSETTING_ACOUSTIC_TEMP_RAGE,
0134 SMU_13_0_0_PMSETTING_ACOUSTIC_TARGET_RPM_QUIET,
0135 SMU_13_0_0_PMSETTING_ACOUSTIC_TARGET_RPM_BALANCE,
0136 SMU_13_0_0_PMSETTING_ACOUSTIC_TARGET_RPM_TURBO,
0137 SMU_13_0_0_PMSETTING_ACOUSTIC_TARGET_RPM_RAGE,
0138 SMU_13_0_0_PMSETTING_ACOUSTIC_LIMIT_RPM_QUIET,
0139 SMU_13_0_0_PMSETTING_ACOUSTIC_LIMIT_RPM_BALANCE,
0140 SMU_13_0_0_PMSETTING_ACOUSTIC_LIMIT_RPM_TURBO,
0141 SMU_13_0_0_PMSETTING_ACOUSTIC_LIMIT_RPM_RAGE,
0142 };
0143 #define SMU_13_0_0_MAX_PMSETTING 32
0144
0145 struct smu_13_0_0_overdrive_table
0146 {
0147 uint8_t revision;
0148 uint8_t reserve[3];
0149 uint32_t feature_count;
0150 uint32_t setting_count;
0151 uint8_t cap[SMU_13_0_0_MAX_ODFEATURE];
0152 uint32_t max[SMU_13_0_0_MAX_ODSETTING];
0153 uint32_t min[SMU_13_0_0_MAX_ODSETTING];
0154 int16_t pm_setting[SMU_13_0_0_MAX_PMSETTING];
0155 };
0156
0157 enum SMU_13_0_0_PPCLOCK_ID
0158 {
0159 SMU_13_0_0_PPCLOCK_GFXCLK = 0,
0160 SMU_13_0_0_PPCLOCK_SOCCLK,
0161 SMU_13_0_0_PPCLOCK_UCLK,
0162 SMU_13_0_0_PPCLOCK_FCLK,
0163 SMU_13_0_0_PPCLOCK_DCLK_0,
0164 SMU_13_0_0_PPCLOCK_VCLK_0,
0165 SMU_13_0_0_PPCLOCK_DCLK_1,
0166 SMU_13_0_0_PPCLOCK_VCLK_1,
0167 SMU_13_0_0_PPCLOCK_DCEFCLK,
0168 SMU_13_0_0_PPCLOCK_DISPCLK,
0169 SMU_13_0_0_PPCLOCK_PIXCLK,
0170 SMU_13_0_0_PPCLOCK_PHYCLK,
0171 SMU_13_0_0_PPCLOCK_DTBCLK,
0172 SMU_13_0_0_PPCLOCK_COUNT,
0173 };
0174 #define SMU_13_0_0_MAX_PPCLOCK 16
0175
0176 struct smu_13_0_0_powerplay_table
0177 {
0178 struct atom_common_table_header header;
0179 uint8_t table_revision;
0180 uint8_t padding;
0181 uint16_t table_size;
0182 uint32_t golden_pp_id;
0183 uint32_t golden_revision;
0184 uint16_t format_id;
0185 uint32_t platform_caps;
0186
0187 uint8_t thermal_controller_type;
0188
0189 uint16_t small_power_limit1;
0190 uint16_t small_power_limit2;
0191 uint16_t boost_power_limit;
0192 uint16_t software_shutdown_temp;
0193
0194 uint32_t reserve[45];
0195
0196 struct smu_13_0_0_overdrive_table overdrive_table;
0197 uint8_t padding1;
0198 PPTable_t smc_pptable;
0199 };
0200
0201 #pragma pack(pop)
0202
0203 #endif