drm/amd/pm: properly setting GPO feature on UMD pstate entering/exiting
[linux-2.6-microblaze.git] / drivers / gpu / drm / amd / pm / inc / smu_types.h
1 /*
2  * Copyright 2019 Advanced Micro Devices, Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20  * OTHER DEALINGS IN THE SOFTWARE.
21  */
22
23 #ifndef __SMU_TYPES_H__
24 #define __SMU_TYPES_H__
25
26 #define SMU_MESSAGE_TYPES                             \
27        __SMU_DUMMY_MAP(TestMessage),                  \
28        __SMU_DUMMY_MAP(GetSmuVersion),                \
29        __SMU_DUMMY_MAP(GetDriverIfVersion),           \
30        __SMU_DUMMY_MAP(SetAllowedFeaturesMaskLow),    \
31        __SMU_DUMMY_MAP(SetAllowedFeaturesMaskHigh),   \
32        __SMU_DUMMY_MAP(EnableAllSmuFeatures),         \
33        __SMU_DUMMY_MAP(DisableAllSmuFeatures),        \
34        __SMU_DUMMY_MAP(EnableSmuFeaturesLow),         \
35        __SMU_DUMMY_MAP(EnableSmuFeaturesHigh),        \
36        __SMU_DUMMY_MAP(DisableSmuFeaturesLow),        \
37        __SMU_DUMMY_MAP(DisableSmuFeaturesHigh),       \
38        __SMU_DUMMY_MAP(GetEnabledSmuFeatures),        \
39        __SMU_DUMMY_MAP(GetEnabledSmuFeaturesLow),     \
40        __SMU_DUMMY_MAP(GetEnabledSmuFeaturesHigh),    \
41        __SMU_DUMMY_MAP(SetWorkloadMask),              \
42        __SMU_DUMMY_MAP(SetPptLimit),                  \
43        __SMU_DUMMY_MAP(SetDriverDramAddrHigh),        \
44        __SMU_DUMMY_MAP(SetDriverDramAddrLow),         \
45        __SMU_DUMMY_MAP(SetToolsDramAddrHigh),         \
46        __SMU_DUMMY_MAP(SetToolsDramAddrLow),          \
47        __SMU_DUMMY_MAP(TransferTableSmu2Dram),        \
48        __SMU_DUMMY_MAP(TransferTableDram2Smu),        \
49        __SMU_DUMMY_MAP(UseDefaultPPTable),            \
50        __SMU_DUMMY_MAP(UseBackupPPTable),             \
51        __SMU_DUMMY_MAP(RunBtc),                       \
52        __SMU_DUMMY_MAP(RequestI2CBus),                \
53        __SMU_DUMMY_MAP(ReleaseI2CBus),                \
54        __SMU_DUMMY_MAP(SetFloorSocVoltage),           \
55        __SMU_DUMMY_MAP(SoftReset),                    \
56        __SMU_DUMMY_MAP(StartBacoMonitor),             \
57        __SMU_DUMMY_MAP(CancelBacoMonitor),            \
58        __SMU_DUMMY_MAP(EnterBaco),                    \
59        __SMU_DUMMY_MAP(SetSoftMinByFreq),             \
60        __SMU_DUMMY_MAP(SetSoftMaxByFreq),             \
61        __SMU_DUMMY_MAP(SetHardMinByFreq),             \
62        __SMU_DUMMY_MAP(SetHardMaxByFreq),             \
63        __SMU_DUMMY_MAP(GetMinDpmFreq),                \
64        __SMU_DUMMY_MAP(GetMaxDpmFreq),                \
65        __SMU_DUMMY_MAP(GetDpmFreqByIndex),            \
66        __SMU_DUMMY_MAP(GetDpmClockFreq),              \
67        __SMU_DUMMY_MAP(GetSsVoltageByDpm),            \
68        __SMU_DUMMY_MAP(SetMemoryChannelConfig),       \
69        __SMU_DUMMY_MAP(SetGeminiMode),                \
70        __SMU_DUMMY_MAP(SetGeminiApertureHigh),        \
71        __SMU_DUMMY_MAP(SetGeminiApertureLow),         \
72        __SMU_DUMMY_MAP(SetMinLinkDpmByIndex),         \
73        __SMU_DUMMY_MAP(OverridePcieParameters),       \
74        __SMU_DUMMY_MAP(OverDriveSetPercentage),       \
75        __SMU_DUMMY_MAP(SetMinDeepSleepDcefclk),       \
76        __SMU_DUMMY_MAP(ReenableAcDcInterrupt),        \
77        __SMU_DUMMY_MAP(NotifyPowerSource),            \
78        __SMU_DUMMY_MAP(SetUclkFastSwitch),            \
79        __SMU_DUMMY_MAP(SetUclkDownHyst),              \
80        __SMU_DUMMY_MAP(GfxDeviceDriverReset),         \
81        __SMU_DUMMY_MAP(GetCurrentRpm),                \
82        __SMU_DUMMY_MAP(SetVideoFps),                  \
83        __SMU_DUMMY_MAP(SetTjMax),                     \
84        __SMU_DUMMY_MAP(SetFanTemperatureTarget),      \
85        __SMU_DUMMY_MAP(PrepareMp1ForUnload),          \
86        __SMU_DUMMY_MAP(DramLogSetDramAddrHigh),       \
87        __SMU_DUMMY_MAP(DramLogSetDramAddrLow),        \
88        __SMU_DUMMY_MAP(DramLogSetDramSize),           \
89        __SMU_DUMMY_MAP(SetFanMaxRpm),                 \
90        __SMU_DUMMY_MAP(SetFanMinPwm),                 \
91        __SMU_DUMMY_MAP(ConfigureGfxDidt),             \
92        __SMU_DUMMY_MAP(NumOfDisplays),                \
93        __SMU_DUMMY_MAP(RemoveMargins),                \
94        __SMU_DUMMY_MAP(ReadSerialNumTop32),           \
95        __SMU_DUMMY_MAP(ReadSerialNumBottom32),        \
96        __SMU_DUMMY_MAP(SetSystemVirtualDramAddrHigh), \
97        __SMU_DUMMY_MAP(SetSystemVirtualDramAddrLow),  \
98        __SMU_DUMMY_MAP(WaflTest),                     \
99        __SMU_DUMMY_MAP(SetFclkGfxClkRatio),           \
100        __SMU_DUMMY_MAP(AllowGfxOff),                  \
101        __SMU_DUMMY_MAP(DisallowGfxOff),               \
102        __SMU_DUMMY_MAP(GetPptLimit),                  \
103        __SMU_DUMMY_MAP(GetDcModeMaxDpmFreq),          \
104        __SMU_DUMMY_MAP(GetDebugData),                 \
105        __SMU_DUMMY_MAP(SetXgmiMode),                  \
106        __SMU_DUMMY_MAP(RunAfllBtc),                   \
107        __SMU_DUMMY_MAP(ExitBaco),                     \
108        __SMU_DUMMY_MAP(PrepareMp1ForReset),           \
109        __SMU_DUMMY_MAP(PrepareMp1ForShutdown),        \
110        __SMU_DUMMY_MAP(SetMGpuFanBoostLimitRpm),      \
111        __SMU_DUMMY_MAP(GetAVFSVoltageByDpm),          \
112        __SMU_DUMMY_MAP(PowerUpVcn),                   \
113        __SMU_DUMMY_MAP(PowerDownVcn),                 \
114        __SMU_DUMMY_MAP(PowerUpJpeg),                  \
115        __SMU_DUMMY_MAP(PowerDownJpeg),                \
116        __SMU_DUMMY_MAP(BacoAudioD3PME),               \
117        __SMU_DUMMY_MAP(ArmD3),                        \
118        __SMU_DUMMY_MAP(RunDcBtc),                     \
119        __SMU_DUMMY_MAP(RunGfxDcBtc),                  \
120        __SMU_DUMMY_MAP(RunSocDcBtc),                  \
121        __SMU_DUMMY_MAP(SetMemoryChannelEnable),       \
122        __SMU_DUMMY_MAP(SetDfSwitchType),              \
123        __SMU_DUMMY_MAP(GetVoltageByDpm),              \
124        __SMU_DUMMY_MAP(GetVoltageByDpmOverdrive),     \
125        __SMU_DUMMY_MAP(PowerUpVcn0),                  \
126        __SMU_DUMMY_MAP(PowerDownVcn0),                \
127        __SMU_DUMMY_MAP(PowerUpVcn1),                  \
128        __SMU_DUMMY_MAP(PowerDownVcn1),                \
129        __SMU_DUMMY_MAP(PowerUpGfx),                   \
130        __SMU_DUMMY_MAP(PowerDownIspByTile),           \
131        __SMU_DUMMY_MAP(PowerUpIspByTile),             \
132        __SMU_DUMMY_MAP(PowerDownSdma),                \
133         __SMU_DUMMY_MAP(PowerUpSdma),                 \
134         __SMU_DUMMY_MAP(SetHardMinIspclkByFreq),      \
135         __SMU_DUMMY_MAP(SetHardMinVcn),               \
136         __SMU_DUMMY_MAP(Spare1),                      \
137         __SMU_DUMMY_MAP(Spare2),                      \
138         __SMU_DUMMY_MAP(SetAllowFclkSwitch),          \
139         __SMU_DUMMY_MAP(SetMinVideoGfxclkFreq),       \
140         __SMU_DUMMY_MAP(ActiveProcessNotify),         \
141         __SMU_DUMMY_MAP(SetCustomPolicy),             \
142         __SMU_DUMMY_MAP(QueryPowerLimit),             \
143         __SMU_DUMMY_MAP(SetGfxclkOverdriveByFreqVid), \
144         __SMU_DUMMY_MAP(SetHardMinDcfclkByFreq),      \
145         __SMU_DUMMY_MAP(SetHardMinSocclkByFreq),      \
146         __SMU_DUMMY_MAP(ControlIgpuATS),              \
147         __SMU_DUMMY_MAP(SetMinVideoFclkFreq),         \
148         __SMU_DUMMY_MAP(SetMinDeepSleepDcfclk),       \
149         __SMU_DUMMY_MAP(ForcePowerDownGfx),           \
150         __SMU_DUMMY_MAP(SetPhyclkVoltageByFreq),      \
151         __SMU_DUMMY_MAP(SetDppclkVoltageByFreq),      \
152         __SMU_DUMMY_MAP(SetSoftMinVcn),               \
153         __SMU_DUMMY_MAP(EnablePostCode),              \
154         __SMU_DUMMY_MAP(GetGfxclkFrequency),          \
155         __SMU_DUMMY_MAP(GetFclkFrequency),            \
156         __SMU_DUMMY_MAP(GetMinGfxclkFrequency),       \
157         __SMU_DUMMY_MAP(GetMaxGfxclkFrequency),       \
158         __SMU_DUMMY_MAP(SetGfxCGPG),                  \
159         __SMU_DUMMY_MAP(SetSoftMaxGfxClk),            \
160         __SMU_DUMMY_MAP(SetHardMinGfxClk),            \
161         __SMU_DUMMY_MAP(SetSoftMaxSocclkByFreq),      \
162         __SMU_DUMMY_MAP(SetSoftMaxFclkByFreq),        \
163         __SMU_DUMMY_MAP(SetSoftMaxVcn),               \
164         __SMU_DUMMY_MAP(PowerGateMmHub),              \
165         __SMU_DUMMY_MAP(UpdatePmeRestore),            \
166         __SMU_DUMMY_MAP(GpuChangeState),              \
167         __SMU_DUMMY_MAP(SetPowerLimitPercentage),     \
168         __SMU_DUMMY_MAP(ForceGfxContentSave),         \
169         __SMU_DUMMY_MAP(EnableTmdp48MHzRefclkPwrDown),\
170         __SMU_DUMMY_MAP(PowerGateAtHub),              \
171         __SMU_DUMMY_MAP(SetSoftMinJpeg),              \
172         __SMU_DUMMY_MAP(SetHardMinFclkByFreq),        \
173         __SMU_DUMMY_MAP(DFCstateControl),             \
174         __SMU_DUMMY_MAP(GmiPwrDnControl),              \
175         __SMU_DUMMY_MAP(DAL_DISABLE_DUMMY_PSTATE_CHANGE),\
176         __SMU_DUMMY_MAP(DAL_ENABLE_DUMMY_PSTATE_CHANGE), \
177         __SMU_DUMMY_MAP(SET_DRIVER_DUMMY_TABLE_DRAM_ADDR_HIGH), \
178         __SMU_DUMMY_MAP(SET_DRIVER_DUMMY_TABLE_DRAM_ADDR_LOW), \
179         __SMU_DUMMY_MAP(GET_UMC_FW_WA), \
180         __SMU_DUMMY_MAP(Mode1Reset), \
181         __SMU_DUMMY_MAP(Spare),                          \
182         __SMU_DUMMY_MAP(SetHardMinIspiclkByFreq),        \
183         __SMU_DUMMY_MAP(SetHardMinIspxclkByFreq),        \
184         __SMU_DUMMY_MAP(SetSoftMinSocclkByFreq),         \
185         __SMU_DUMMY_MAP(PowerUpCvip),                    \
186         __SMU_DUMMY_MAP(PowerDownCvip),                  \
187         __SMU_DUMMY_MAP(SetGpoFeaturePMask),             \
188
189 #undef __SMU_DUMMY_MAP
190 #define __SMU_DUMMY_MAP(type)   SMU_MSG_##type
191 enum smu_message_type {
192         SMU_MESSAGE_TYPES
193         SMU_MSG_MAX_COUNT,
194 };
195
196 enum smu_clk_type {
197         SMU_GFXCLK,
198         SMU_VCLK,
199         SMU_DCLK,
200         SMU_VCLK1,
201         SMU_DCLK1,
202         SMU_ECLK,
203         SMU_SOCCLK,
204         SMU_UCLK,
205         SMU_DCEFCLK,
206         SMU_DISPCLK,
207         SMU_PIXCLK,
208         SMU_PHYCLK,
209         SMU_FCLK,
210         SMU_SCLK,
211         SMU_MCLK,
212         SMU_PCIE,
213         SMU_OD_SCLK,
214         SMU_OD_MCLK,
215         SMU_OD_VDDC_CURVE,
216         SMU_OD_RANGE,
217         SMU_CLK_COUNT,
218 };
219
220 #define SMU_FEATURE_MASKS                               \
221        __SMU_DUMMY_MAP(DPM_PREFETCHER),                 \
222        __SMU_DUMMY_MAP(DPM_GFXCLK),                     \
223        __SMU_DUMMY_MAP(DPM_UCLK),                       \
224        __SMU_DUMMY_MAP(DPM_SOCCLK),                     \
225        __SMU_DUMMY_MAP(DPM_UVD),                        \
226        __SMU_DUMMY_MAP(DPM_VCE),                        \
227        __SMU_DUMMY_MAP(ULV),                            \
228        __SMU_DUMMY_MAP(DPM_MP0CLK),                     \
229        __SMU_DUMMY_MAP(DPM_LINK),                       \
230        __SMU_DUMMY_MAP(DPM_DCEFCLK),                    \
231        __SMU_DUMMY_MAP(DS_GFXCLK),                      \
232        __SMU_DUMMY_MAP(DS_SOCCLK),                      \
233        __SMU_DUMMY_MAP(DS_LCLK),                        \
234        __SMU_DUMMY_MAP(PPT),                            \
235        __SMU_DUMMY_MAP(TDC),                            \
236        __SMU_DUMMY_MAP(THERMAL),                        \
237        __SMU_DUMMY_MAP(GFX_PER_CU_CG),                  \
238        __SMU_DUMMY_MAP(RM),                             \
239        __SMU_DUMMY_MAP(DS_DCEFCLK),                     \
240        __SMU_DUMMY_MAP(ACDC),                           \
241        __SMU_DUMMY_MAP(VR0HOT),                         \
242        __SMU_DUMMY_MAP(VR1HOT),                         \
243        __SMU_DUMMY_MAP(FW_CTF),                         \
244        __SMU_DUMMY_MAP(LED_DISPLAY),                    \
245        __SMU_DUMMY_MAP(FAN_CONTROL),                    \
246        __SMU_DUMMY_MAP(GFX_EDC),                        \
247        __SMU_DUMMY_MAP(GFXOFF),                         \
248        __SMU_DUMMY_MAP(CG),                             \
249        __SMU_DUMMY_MAP(DPM_FCLK),                       \
250        __SMU_DUMMY_MAP(DS_FCLK),                        \
251        __SMU_DUMMY_MAP(DS_MP1CLK),                      \
252        __SMU_DUMMY_MAP(DS_MP0CLK),                      \
253        __SMU_DUMMY_MAP(XGMI),                           \
254        __SMU_DUMMY_MAP(DPM_GFX_PACE),                   \
255        __SMU_DUMMY_MAP(MEM_VDDCI_SCALING),              \
256        __SMU_DUMMY_MAP(MEM_MVDD_SCALING),               \
257        __SMU_DUMMY_MAP(DS_UCLK),                        \
258        __SMU_DUMMY_MAP(GFX_ULV),                        \
259        __SMU_DUMMY_MAP(FW_DSTATE),                      \
260        __SMU_DUMMY_MAP(BACO),                           \
261        __SMU_DUMMY_MAP(VCN_PG),                         \
262        __SMU_DUMMY_MAP(MM_DPM_PG),                      \
263        __SMU_DUMMY_MAP(JPEG_PG),                        \
264        __SMU_DUMMY_MAP(USB_PG),                         \
265        __SMU_DUMMY_MAP(RSMU_SMN_CG),                    \
266        __SMU_DUMMY_MAP(APCC_PLUS),                      \
267        __SMU_DUMMY_MAP(GTHR),                           \
268        __SMU_DUMMY_MAP(GFX_DCS),                        \
269        __SMU_DUMMY_MAP(GFX_SS),                         \
270        __SMU_DUMMY_MAP(OUT_OF_BAND_MONITOR),            \
271        __SMU_DUMMY_MAP(TEMP_DEPENDENT_VMIN),            \
272        __SMU_DUMMY_MAP(MMHUB_PG),                       \
273        __SMU_DUMMY_MAP(ATHUB_PG),                       \
274        __SMU_DUMMY_MAP(APCC_DFLL),                      \
275        __SMU_DUMMY_MAP(DPM_GFX_GPO),                    \
276        __SMU_DUMMY_MAP(WAFL_CG),                        \
277        __SMU_DUMMY_MAP(CCLK_DPM),                       \
278        __SMU_DUMMY_MAP(FAN_CONTROLLER),                 \
279        __SMU_DUMMY_MAP(VCN_DPM),                        \
280        __SMU_DUMMY_MAP(FCLK_DPM),                       \
281        __SMU_DUMMY_MAP(SOCCLK_DPM),                     \
282        __SMU_DUMMY_MAP(MP0CLK_DPM),                     \
283        __SMU_DUMMY_MAP(LCLK_DPM),                       \
284        __SMU_DUMMY_MAP(SHUBCLK_DPM),                    \
285        __SMU_DUMMY_MAP(DCFCLK_DPM),                     \
286        __SMU_DUMMY_MAP(GFX_DPM),                        \
287        __SMU_DUMMY_MAP(DS_DCFCLK),                      \
288        __SMU_DUMMY_MAP(S0I2),                           \
289        __SMU_DUMMY_MAP(SMU_LOW_POWER),                  \
290        __SMU_DUMMY_MAP(GFX_DEM),                        \
291        __SMU_DUMMY_MAP(PSI),                            \
292        __SMU_DUMMY_MAP(PROCHOT),                        \
293        __SMU_DUMMY_MAP(CPUOFF),                         \
294        __SMU_DUMMY_MAP(STAPM),                          \
295        __SMU_DUMMY_MAP(S0I3),                           \
296        __SMU_DUMMY_MAP(DF_CSTATES),                     \
297        __SMU_DUMMY_MAP(PERF_LIMIT),                     \
298        __SMU_DUMMY_MAP(CORE_DLDO),                      \
299        __SMU_DUMMY_MAP(RSMU_LOW_POWER),                 \
300        __SMU_DUMMY_MAP(SMN_LOW_POWER),                  \
301        __SMU_DUMMY_MAP(THM_LOW_POWER),                  \
302        __SMU_DUMMY_MAP(SMUIO_LOW_POWER),                \
303        __SMU_DUMMY_MAP(MP1_LOW_POWER),                  \
304        __SMU_DUMMY_MAP(DS_VCN),                         \
305        __SMU_DUMMY_MAP(CPPC),                           \
306        __SMU_DUMMY_MAP(OS_CSTATES),                     \
307        __SMU_DUMMY_MAP(ISP_DPM),                        \
308        __SMU_DUMMY_MAP(A55_DPM),                        \
309        __SMU_DUMMY_MAP(CVIP_DSP_DPM),                   \
310        __SMU_DUMMY_MAP(MSMU_LOW_POWER),
311
312 #undef __SMU_DUMMY_MAP
313 #define __SMU_DUMMY_MAP(feature)        SMU_FEATURE_##feature##_BIT
314 enum smu_feature_mask {
315         SMU_FEATURE_MASKS
316         SMU_FEATURE_COUNT,
317 };
318
319 #endif