0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #ifndef SMU_11_0_PPTABLE_H
0023 #define SMU_11_0_PPTABLE_H
0024
0025 #pragma pack(push, 1)
0026
0027 #define SMU_11_0_TABLE_FORMAT_REVISION 12
0028
0029
0030 #define SMU_11_0_PP_PLATFORM_CAP_POWERPLAY 0x1
0031 #define SMU_11_0_PP_PLATFORM_CAP_SBIOSPOWERSOURCE 0x2
0032 #define SMU_11_0_PP_PLATFORM_CAP_HARDWAREDC 0x4
0033 #define SMU_11_0_PP_PLATFORM_CAP_BACO 0x8
0034 #define SMU_11_0_PP_PLATFORM_CAP_MACO 0x10
0035 #define SMU_11_0_PP_PLATFORM_CAP_SHADOWPSTATE 0x20
0036
0037
0038 #define SMU_11_0_PP_THERMALCONTROLLER_NONE 0
0039
0040 #define SMU_11_0_PP_OVERDRIVE_VERSION 0x0800
0041 #define SMU_11_0_PP_POWERSAVINGCLOCK_VERSION 0x0100
0042
0043 enum SMU_11_0_ODFEATURE_CAP {
0044 SMU_11_0_ODCAP_GFXCLK_LIMITS = 0,
0045 SMU_11_0_ODCAP_GFXCLK_CURVE,
0046 SMU_11_0_ODCAP_UCLK_MAX,
0047 SMU_11_0_ODCAP_POWER_LIMIT,
0048 SMU_11_0_ODCAP_FAN_ACOUSTIC_LIMIT,
0049 SMU_11_0_ODCAP_FAN_SPEED_MIN,
0050 SMU_11_0_ODCAP_TEMPERATURE_FAN,
0051 SMU_11_0_ODCAP_TEMPERATURE_SYSTEM,
0052 SMU_11_0_ODCAP_MEMORY_TIMING_TUNE,
0053 SMU_11_0_ODCAP_FAN_ZERO_RPM_CONTROL,
0054 SMU_11_0_ODCAP_AUTO_UV_ENGINE,
0055 SMU_11_0_ODCAP_AUTO_OC_ENGINE,
0056 SMU_11_0_ODCAP_AUTO_OC_MEMORY,
0057 SMU_11_0_ODCAP_FAN_CURVE,
0058 SMU_11_0_ODCAP_COUNT,
0059 };
0060
0061 enum SMU_11_0_ODFEATURE_ID {
0062 SMU_11_0_ODFEATURE_GFXCLK_LIMITS = 1 << SMU_11_0_ODCAP_GFXCLK_LIMITS,
0063 SMU_11_0_ODFEATURE_GFXCLK_CURVE = 1 << SMU_11_0_ODCAP_GFXCLK_CURVE,
0064 SMU_11_0_ODFEATURE_UCLK_MAX = 1 << SMU_11_0_ODCAP_UCLK_MAX,
0065 SMU_11_0_ODFEATURE_POWER_LIMIT = 1 << SMU_11_0_ODCAP_POWER_LIMIT,
0066 SMU_11_0_ODFEATURE_FAN_ACOUSTIC_LIMIT = 1 << SMU_11_0_ODCAP_FAN_ACOUSTIC_LIMIT,
0067 SMU_11_0_ODFEATURE_FAN_SPEED_MIN = 1 << SMU_11_0_ODCAP_FAN_SPEED_MIN,
0068 SMU_11_0_ODFEATURE_TEMPERATURE_FAN = 1 << SMU_11_0_ODCAP_TEMPERATURE_FAN,
0069 SMU_11_0_ODFEATURE_TEMPERATURE_SYSTEM = 1 << SMU_11_0_ODCAP_TEMPERATURE_SYSTEM,
0070 SMU_11_0_ODFEATURE_MEMORY_TIMING_TUNE = 1 << SMU_11_0_ODCAP_MEMORY_TIMING_TUNE,
0071 SMU_11_0_ODFEATURE_FAN_ZERO_RPM_CONTROL = 1 << SMU_11_0_ODCAP_FAN_ZERO_RPM_CONTROL,
0072 SMU_11_0_ODFEATURE_AUTO_UV_ENGINE = 1 << SMU_11_0_ODCAP_AUTO_UV_ENGINE,
0073 SMU_11_0_ODFEATURE_AUTO_OC_ENGINE = 1 << SMU_11_0_ODCAP_AUTO_OC_ENGINE,
0074 SMU_11_0_ODFEATURE_AUTO_OC_MEMORY = 1 << SMU_11_0_ODCAP_AUTO_OC_MEMORY,
0075 SMU_11_0_ODFEATURE_FAN_CURVE = 1 << SMU_11_0_ODCAP_FAN_CURVE,
0076 SMU_11_0_ODFEATURE_COUNT = 14,
0077 };
0078 #define SMU_11_0_MAX_ODFEATURE 32
0079
0080 enum SMU_11_0_ODSETTING_ID {
0081 SMU_11_0_ODSETTING_GFXCLKFMAX = 0,
0082 SMU_11_0_ODSETTING_GFXCLKFMIN,
0083 SMU_11_0_ODSETTING_VDDGFXCURVEFREQ_P1,
0084 SMU_11_0_ODSETTING_VDDGFXCURVEVOLTAGE_P1,
0085 SMU_11_0_ODSETTING_VDDGFXCURVEFREQ_P2,
0086 SMU_11_0_ODSETTING_VDDGFXCURVEVOLTAGE_P2,
0087 SMU_11_0_ODSETTING_VDDGFXCURVEFREQ_P3,
0088 SMU_11_0_ODSETTING_VDDGFXCURVEVOLTAGE_P3,
0089 SMU_11_0_ODSETTING_UCLKFMAX,
0090 SMU_11_0_ODSETTING_POWERPERCENTAGE,
0091 SMU_11_0_ODSETTING_FANRPMMIN,
0092 SMU_11_0_ODSETTING_FANRPMACOUSTICLIMIT,
0093 SMU_11_0_ODSETTING_FANTARGETTEMPERATURE,
0094 SMU_11_0_ODSETTING_OPERATINGTEMPMAX,
0095 SMU_11_0_ODSETTING_ACTIMING,
0096 SMU_11_0_ODSETTING_FAN_ZERO_RPM_CONTROL,
0097 SMU_11_0_ODSETTING_AUTOUVENGINE,
0098 SMU_11_0_ODSETTING_AUTOOCENGINE,
0099 SMU_11_0_ODSETTING_AUTOOCMEMORY,
0100 SMU_11_0_ODSETTING_COUNT,
0101 };
0102 #define SMU_11_0_MAX_ODSETTING 32
0103
0104 struct smu_11_0_overdrive_table
0105 {
0106 uint8_t revision;
0107 uint8_t reserve[3];
0108 uint32_t feature_count;
0109 uint32_t setting_count;
0110 uint8_t cap[SMU_11_0_MAX_ODFEATURE];
0111 uint32_t max[SMU_11_0_MAX_ODSETTING];
0112 uint32_t min[SMU_11_0_MAX_ODSETTING];
0113 };
0114
0115 enum SMU_11_0_PPCLOCK_ID {
0116 SMU_11_0_PPCLOCK_GFXCLK = 0,
0117 SMU_11_0_PPCLOCK_VCLK,
0118 SMU_11_0_PPCLOCK_DCLK,
0119 SMU_11_0_PPCLOCK_ECLK,
0120 SMU_11_0_PPCLOCK_SOCCLK,
0121 SMU_11_0_PPCLOCK_UCLK,
0122 SMU_11_0_PPCLOCK_DCEFCLK,
0123 SMU_11_0_PPCLOCK_DISPCLK,
0124 SMU_11_0_PPCLOCK_PIXCLK,
0125 SMU_11_0_PPCLOCK_PHYCLK,
0126 SMU_11_0_PPCLOCK_COUNT,
0127 };
0128 #define SMU_11_0_MAX_PPCLOCK 16
0129
0130 struct smu_11_0_power_saving_clock_table
0131 {
0132 uint8_t revision;
0133 uint8_t reserve[3];
0134 uint32_t count;
0135 uint32_t max[SMU_11_0_MAX_PPCLOCK];
0136 uint32_t min[SMU_11_0_MAX_PPCLOCK];
0137 };
0138
0139 struct smu_11_0_powerplay_table
0140 {
0141 struct atom_common_table_header header;
0142 uint8_t table_revision;
0143 uint16_t table_size;
0144 uint32_t golden_pp_id;
0145 uint32_t golden_revision;
0146 uint16_t format_id;
0147 uint32_t platform_caps;
0148
0149 uint8_t thermal_controller_type;
0150
0151 uint16_t small_power_limit1;
0152 uint16_t small_power_limit2;
0153 uint16_t boost_power_limit;
0154 uint16_t od_turbo_power_limit;
0155 uint16_t od_power_save_power_limit;
0156 uint16_t software_shutdown_temp;
0157
0158 uint16_t reserve[6];
0159
0160 struct smu_11_0_power_saving_clock_table power_saving_clock;
0161 struct smu_11_0_overdrive_table overdrive_table;
0162
0163 #ifndef SMU_11_0_PARTIAL_PPTABLE
0164 PPTable_t smc_pptable;
0165 #endif
0166 };
0167
0168 #pragma pack(pop)
0169
0170 #endif