xref: /netbsd-src/sys/external/bsd/drm2/dist/drm/amd/powerplay/inc/arcturus_ppsmc.h (revision 41ec02673d281bbb3d38e6c78504ce6e30c228c1)
1 /*	$NetBSD: arcturus_ppsmc.h,v 1.2 2021/12/18 23:45:26 riastradh Exp $	*/
2 
3 /*
4  * Copyright 2019 Advanced Micro Devices, Inc.
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a
7  * copy of this software and associated documentation files (the "Software"),
8  * to deal in the Software without restriction, including without limitation
9  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10  * and/or sell copies of the Software, and to permit persons to whom the
11  * Software is furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
19  * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
20  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22  * OTHER DEALINGS IN THE SOFTWARE.
23  *
24  */
25 
26 #ifndef ARCTURUS_PP_SMC_H
27 #define ARCTURUS_PP_SMC_H
28 
29 #pragma pack(push, 1)
30 
31 // SMU Response Codes:
32 #define PPSMC_Result_OK                    0x1
33 #define PPSMC_Result_Failed                0xFF
34 #define PPSMC_Result_UnknownCmd            0xFE
35 #define PPSMC_Result_CmdRejectedPrereq     0xFD
36 #define PPSMC_Result_CmdRejectedBusy       0xFC
37 
38 // Message Definitions:
39 // BASIC
40 #define PPSMC_MSG_TestMessage                    0x1
41 #define PPSMC_MSG_GetSmuVersion                  0x2
42 #define PPSMC_MSG_GetDriverIfVersion             0x3
43 #define PPSMC_MSG_SetAllowedFeaturesMaskLow      0x4
44 #define PPSMC_MSG_SetAllowedFeaturesMaskHigh     0x5
45 #define PPSMC_MSG_EnableAllSmuFeatures           0x6
46 #define PPSMC_MSG_DisableAllSmuFeatures          0x7
47 #define PPSMC_MSG_EnableSmuFeaturesLow           0x8
48 #define PPSMC_MSG_EnableSmuFeaturesHigh          0x9
49 #define PPSMC_MSG_DisableSmuFeaturesLow          0xA
50 #define PPSMC_MSG_DisableSmuFeaturesHigh         0xB
51 #define PPSMC_MSG_GetEnabledSmuFeaturesLow       0xC
52 #define PPSMC_MSG_GetEnabledSmuFeaturesHigh      0xD
53 #define PPSMC_MSG_SetDriverDramAddrHigh          0xE
54 #define PPSMC_MSG_SetDriverDramAddrLow           0xF
55 #define PPSMC_MSG_SetToolsDramAddrHigh           0x10
56 #define PPSMC_MSG_SetToolsDramAddrLow            0x11
57 #define PPSMC_MSG_TransferTableSmu2Dram          0x12
58 #define PPSMC_MSG_TransferTableDram2Smu          0x13
59 #define PPSMC_MSG_UseDefaultPPTable              0x14
60 #define PPSMC_MSG_UseBackupPPTable               0x15
61 #define PPSMC_MSG_SetSystemVirtualDramAddrHigh   0x16
62 #define PPSMC_MSG_SetSystemVirtualDramAddrLow    0x17
63 
64 //BACO/BAMACO/BOMACO
65 #define PPSMC_MSG_EnterBaco                      0x18
66 #define PPSMC_MSG_ExitBaco                       0x19
67 #define PPSMC_MSG_ArmD3                          0x1A
68 
69 //DPM
70 #define PPSMC_MSG_SetSoftMinByFreq               0x1B
71 #define PPSMC_MSG_SetSoftMaxByFreq               0x1C
72 #define PPSMC_MSG_SetHardMinByFreq               0x1D
73 #define PPSMC_MSG_SetHardMaxByFreq               0x1E
74 #define PPSMC_MSG_GetMinDpmFreq                  0x1F
75 #define PPSMC_MSG_GetMaxDpmFreq                  0x20
76 #define PPSMC_MSG_GetDpmFreqByIndex              0x21
77 
78 #define PPSMC_MSG_SetWorkloadMask                0x22
79 #define PPSMC_MSG_SetDfSwitchType                0x23
80 #define PPSMC_MSG_GetVoltageByDpm                0x24
81 #define PPSMC_MSG_GetVoltageByDpmOverdrive       0x25
82 
83 #define PPSMC_MSG_SetPptLimit                    0x26
84 #define PPSMC_MSG_GetPptLimit                    0x27
85 
86 //Power Gating
87 #define PPSMC_MSG_PowerUpVcn0                    0x28
88 #define PPSMC_MSG_PowerDownVcn0                  0x29
89 #define PPSMC_MSG_PowerUpVcn1                    0x2A
90 #define PPSMC_MSG_PowerDownVcn1                  0x2B
91 
92 //Resets and reload
93 #define PPSMC_MSG_PrepareMp1ForUnload            0x2C
94 #define PPSMC_MSG_PrepareMp1ForReset             0x2D
95 #define PPSMC_MSG_PrepareMp1ForShutdown          0x2E
96 #define PPSMC_MSG_SoftReset                      0x2F
97 
98 //BTC
99 #define PPSMC_MSG_RunAfllBtc                     0x30
100 #define PPSMC_MSG_RunDcBtc                       0x31
101 
102 //Debug
103 #define PPSMC_MSG_DramLogSetDramAddrHigh         0x33
104 #define PPSMC_MSG_DramLogSetDramAddrLow          0x34
105 #define PPSMC_MSG_DramLogSetDramSize             0x35
106 #define PPSMC_MSG_GetDebugData                   0x36
107 
108 //WAFL and XGMI
109 #define PPSMC_MSG_WaflTest                       0x37
110 #define PPSMC_MSG_SetXgmiMode                    0x38
111 
112 //Others
113 #define PPSMC_MSG_SetMemoryChannelEnable         0x39
114 
115 #define PPSMC_Message_Count                      0x3A
116 
117 typedef uint32_t PPSMC_Result;
118 typedef uint32_t PPSMC_Msg;
119 #pragma pack(pop)
120 
121 #endif
122