Drop dependencies on non-distributable ADL/NVML headers. The needed glue
[hashcat.git] / include / ext_ADL.h
1 /**
2 * Author......: Jens Steube <jens.steube@gmail.com>
3 * License.....: MIT
4 */
5
6 #ifndef EXT_ADL_H
7 #define EXT_ADL_H
8
9 #if defined(HAVE_HWMON) && defined(HAVE_ADL)
10
11 #include <common.h>
12
13 /**
14 * Declarations from adl_sdk.h and subheaders
15 */
16
17 #define ADL_OK 0
18 #define ADL_ERR -1
19 #define ADL_ERR_NOT_SUPPORTED -8
20
21 #define ADL_MAX_PATH 256
22
23 #define ADL_DL_FANCTRL_SUPPORTS_PERCENT_READ 1
24 #define ADL_DL_FANCTRL_SUPPORTS_PERCENT_WRITE 2
25 #define ADL_DL_FANCTRL_SPEED_TYPE_PERCENT 1
26 #define ADL_DL_FANCTRL_FLAG_USER_DEFINED_SPEED 1
27
28 #define ADL_OD6_SETSTATE_PERFORMANCE 0x00000001
29 #define ADL_OD6_GETSTATEINFO_CUSTOM_PERFORMANCE 0x00000004
30 #define ADL_OD6_FANSPEED_TYPE_PERCENT 0x00000001
31
32 typedef struct AdapterInfo
33 {
34 int iSize;
35 int iAdapterIndex;
36 char strUDID[ADL_MAX_PATH];
37 int iBusNumber;
38 int iDeviceNumber;
39 int iFunctionNumber;
40 int iVendorID;
41 char strAdapterName[ADL_MAX_PATH];
42 char strDisplayName[ADL_MAX_PATH];
43 int iPresent;
44
45 #if defined (_WIN32) || defined (_WIN64)
46 int iExist;
47 char strDriverPath[ADL_MAX_PATH];
48 char strDriverPathExt[ADL_MAX_PATH];
49 char strPNPString[ADL_MAX_PATH];
50 int iOSDisplayIndex;
51 #endif /* (_WIN32) || (_WIN64) */
52
53 #if defined (__linux__)
54 int iXScreenNum;
55 int iDrvIndex;
56 char strXScreenConfigName[ADL_MAX_PATH];
57 #endif /* (__linux__) */
58 } AdapterInfo, *LPAdapterInfo;
59
60 typedef struct ADLThermalControllerInfo
61 {
62 int iSize;
63 int iThermalDomain;
64 int iDomainIndex;
65 int iFlags;
66 } ADLThermalControllerInfo;
67
68 typedef struct ADLTemperature
69 {
70 int iSize;
71 int iTemperature;
72 } ADLTemperature;
73
74 typedef struct ADLFanSpeedInfo
75 {
76 int iSize;
77 int iFlags;
78 int iMinPercent;
79 int iMaxPercent;
80 int iMinRPM;
81 int iMaxRPM;
82 } ADLFanSpeedInfo;
83
84 typedef struct ADLFanSpeedValue
85 {
86 int iSize;
87 int iSpeedType;
88 int iFanSpeed;
89 int iFlags;
90 } ADLFanSpeedValue;
91
92 typedef struct ADLDisplayID
93 {
94 int iDisplayLogicalIndex;
95 int iDisplayPhysicalIndex;
96 int iDisplayLogicalAdapterIndex;
97 int iDisplayPhysicalAdapterIndex;
98 } ADLDisplayID, *LPADLDisplayID;
99
100 typedef struct ADLDisplayInfo
101 {
102 ADLDisplayID displayID;
103 int iDisplayControllerIndex;
104 char strDisplayName[ADL_MAX_PATH];
105 char strDisplayManufacturerName[ADL_MAX_PATH];
106 int iDisplayType;
107 int iDisplayOutputType;
108 int iDisplayConnector;
109 int iDisplayInfoMask;
110 int iDisplayInfoValue;
111 } ADLDisplayInfo, *LPADLDisplayInfo;
112
113 typedef struct ADLBiosInfo
114 {
115 char strPartNumber[ADL_MAX_PATH];
116 char strVersion[ADL_MAX_PATH];
117 char strDate[ADL_MAX_PATH];
118 } ADLBiosInfo, *LPADLBiosInfo;
119
120 typedef struct ADLPMActivity
121 {
122 int iSize;
123 int iEngineClock;
124 int iMemoryClock;
125 int iVddc;
126 int iActivityPercent;
127 int iCurrentPerformanceLevel;
128 int iCurrentBusSpeed;
129 int iCurrentBusLanes;
130 int iMaximumBusLanes;
131 int iReserved;
132 } ADLPMActivity;
133
134 typedef struct ADLODParameterRange
135 {
136 int iMin;
137 int iMax;
138 int iStep;
139 } ADLODParameterRange;
140
141 typedef struct ADLODParameters
142 {
143 int iSize;
144 int iNumberOfPerformanceLevels;
145 int iActivityReportingSupported;
146 int iDiscretePerformanceLevels;
147 int iReserved;
148 ADLODParameterRange sEngineClock;
149 ADLODParameterRange sMemoryClock;
150 ADLODParameterRange sVddc;
151 } ADLODParameters;
152
153 typedef struct ADLODPerformanceLevel
154 {
155 int iEngineClock;
156 int iMemoryClock;
157 int iVddc;
158 } ADLODPerformanceLevel;
159
160 typedef struct ADLODPerformanceLevels
161 {
162 int iSize;
163 int iReserved;
164 ADLODPerformanceLevel aLevels [1];
165 } ADLODPerformanceLevels;
166
167 typedef struct ADLOD6FanSpeedInfo
168 {
169 int iSpeedType;
170 int iFanSpeedPercent;
171 int iFanSpeedRPM;
172 int iExtValue;
173 int iExtMask;
174 } ADLOD6FanSpeedInfo;
175
176 typedef struct ADLOD6FanSpeedValue
177 {
178 int iSpeedType;
179 int iFanSpeed;
180 int iExtValue;
181 int iExtMask;
182 } ADLOD6FanSpeedValue;
183
184 typedef struct ADLOD6CurrentStatus
185 {
186 int iEngineClock;
187 int iMemoryClock;
188 int iActivityPercent;
189 int iCurrentPerformanceLevel;
190 int iCurrentBusSpeed;
191 int iCurrentBusLanes;
192 int iMaximumBusLanes;
193 int iExtValue;
194 int iExtMask;
195 } ADLOD6CurrentStatus;
196
197 typedef struct ADLOD6ParameterRange
198 {
199 int iMin;
200 int iMax;
201 int iStep;
202 } ADLOD6ParameterRange;
203
204 typedef struct ADLOD6Capabilities
205 {
206 int iCapabilities;
207 int iSupportedStates;
208 int iNumberOfPerformanceLevels;
209 ADLOD6ParameterRange sEngineClockRange;
210 ADLOD6ParameterRange sMemoryClockRange;
211 int iExtValue;
212 int iExtMask;
213 } ADLOD6Capabilities;
214
215 typedef struct ADLOD6PerformanceLevel
216 {
217 int iEngineClock;
218 int iMemoryClock;
219 } ADLOD6PerformanceLevel;
220
221 typedef struct ADLOD6StateInfo
222 {
223 int iNumberOfPerformanceLevels;
224 int iExtValue;
225 int iExtMask;
226 ADLOD6PerformanceLevel aLevels [1];
227 } ADLOD6StateInfo;
228
229 typedef struct ADLOD6PowerControlInfo
230 {
231 int iMinValue;
232 int iMaxValue;
233 int iStepValue;
234 int iExtValue;
235 int iExtMask;
236 } ADLOD6PowerControlInfo;
237
238 #if !(defined (_WIN32) || defined (_WIN64))
239 #define __stdcall
240 #endif
241
242 typedef void* (__stdcall *ADL_MAIN_MALLOC_CALLBACK )( int );
243
244 /*
245 * End of declarations from adl_sdk.h and subheaders
246 **/
247
248 typedef int HM_ADAPTER_AMD;
249
250 #ifdef _POSIX
251 void *GetProcAddress (void *pLibrary, const char *name);
252 #endif
253
254 typedef struct
255 {
256 ADLOD6StateInfo state;
257 ADLOD6PerformanceLevel level;
258
259 } ADLOD6MemClockState;
260
261 typedef int (*ADL_MAIN_CONTROL_DESTROY) ();
262 typedef int (*ADL_MAIN_CONTROL_CREATE) (ADL_MAIN_MALLOC_CALLBACK, int);
263 typedef int (*ADL_ADAPTER_NUMBEROFADAPTERS_GET) (int *);
264 typedef int (*ADL_ADAPTER_ADAPTERINFO_GET) (LPAdapterInfo, int);
265 typedef int (*ADL_DISPLAY_DISPLAYINFO_GET) (int, int *, ADLDisplayInfo **, int);
266 typedef int (*ADL_OVERDRIVE5_TEMPERATURE_GET) (int, int, ADLTemperature *);
267 typedef int (*ADL_OVERDRIVE6_TEMPERATURE_GET) (int, int *);
268 typedef int (*HC_ADL_OVERDRIVE5_CURRENTACTIVITY_GET) (int, ADLPMActivity *);
269 typedef int (*HC_ADL_OVERDRIVE5_THERMALDEVICES_ENUM) (int, int, ADLThermalControllerInfo *);
270 typedef int (*HC_ADL_ADAPTER_ID_GET) (int, int *);
271 typedef int (*HC_ADL_ADAPTER_VIDEOBIOSINFO_GET) (int, ADLBiosInfo *);
272 typedef int (*HC_ADL_OVERDRIVE5_FANSPEEDINFO_GET) (int, int, ADLFanSpeedInfo *);
273 typedef int (*ADL_OVERDRIVE5_FANSPEED_GET) (int, int, ADLFanSpeedValue *);
274 typedef int (*ADL_OVERDRIVE6_FANSPEED_GET) (int, ADLOD6FanSpeedInfo *);
275 typedef int (*ADL_OVERDRIVE5_FANSPEED_SET) (int, int, ADLFanSpeedValue *);
276 typedef int (*ADL_OVERDRIVE6_FANSPEED_SET) (int, ADLOD6FanSpeedValue *);
277 typedef int (*ADL_OVERDRIVE5_FANSPEEDTODEFAULT_SET) (int, int);
278 typedef int (*HC_ADL_OVERDRIVE5_ODPARAMETERS_GET) (int, ADLODParameters *);
279 typedef int (*HC_ADL_OVERDRIVE5_ODPERFORMANCELEVELS_GET) (int, int, ADLODPerformanceLevels *);
280 typedef int (*HC_ADL_OVERDRIVE5_ODPERFORMANCELEVELS_SET) (int, ADLODPerformanceLevels *);
281 typedef int (*HC_ADL_OVERDRIVE6_POWERCONTROL_SET) (int, int);
282 typedef int (*HC_ADL_OVERDRIVE6_POWERCONTROL_GET) (int, int *, int *);
283 typedef int (*HC_ADL_OVERDRIVE6_POWERCONTROLINFO_GET) (int, ADLOD6PowerControlInfo *);
284 typedef int (*ADL_ADAPTER_ACTIVE_GET) (int, int *);
285 typedef int (*ADL_DISPLAYENABLE_SET) (int, int *, int, int);
286 typedef int (*ADL_OVERDRIVE_CAPS) (int, int *, int *, int *);
287 typedef int (*ADL_OVERDRIVE6_CURRENTSTATUS_GET) (int, ADLOD6CurrentStatus *);
288 typedef int (*ADL_OVERDRIVE6_STATEINFO_GET) (int, int, ADLOD6MemClockState *);
289 typedef int (*ADL_OVERDRIVE6_CAPABILITIES_GET) (int, ADLOD6Capabilities *);
290 typedef int (*ADL_OVERDRIVE6_STATE_SET) (int, int, ADLOD6StateInfo *);
291 typedef int (*ADL_OVERDRIVE6_POWERCONTROL_CAPS) (int, int *);
292 typedef int (*ADL_OVERDRIVE6_TARGETTEMPERATUREDATA_GET) (int, int *, int *);
293
294 int hc_ADL_Main_Control_Destroy (HM_LIB hDLL);
295 int hc_ADL_Main_Control_Create (HM_LIB hDLL, ADL_MAIN_MALLOC_CALLBACK callback, int iEnumConnectedAdapters);
296 int hc_ADL_Adapter_NumberOfAdapters_Get (HM_LIB hDLL, int *lpNumAdapters);
297 int hc_ADL_Adapter_AdapterInfo_Get (HM_LIB hDLL, LPAdapterInfo lpInfo, int iInputSize);
298 int hc_ADL_Display_DisplayInfo_Get (HM_LIB hDLL, int iAdapterIndex, int *iNumDisplays, ADLDisplayInfo **lppInfo, int iForceDetect);
299 int hc_ADL_Overdrive5_Temperature_Get (HM_LIB hDLL, int iAdapterIndex, int iThermalControllerIndex, ADLTemperature *lpTemperature);
300 int hc_ADL_Overdrive6_Temperature_Get (HM_LIB hDLL, int iAdapterIndex, int *iTemperature);
301 int hc_ADL_Overdrive_CurrentActivity_Get (HM_LIB hDLL, int iAdapterIndex, ADLPMActivity *lpActivity);
302 int hc_ADL_Overdrive_ThermalDevices_Enum (HM_LIB hDLL, int iAdapterIndex, int iThermalControllerIndex, ADLThermalControllerInfo *lpThermalControllerInfo);
303 int hc_ADL_Adapter_ID_Get (HM_LIB hDLL, int iAdapterIndex, int *lpAdapterID);
304 int hc_ADL_Adapter_VideoBiosInfo_Get (HM_LIB hDLL, int iAdapterIndex, ADLBiosInfo *lpBiosInfo);
305 int hc_ADL_Overdrive5_FanSpeedInfo_Get (HM_LIB hDLL, int iAdapterIndex, int iThermalControllerIndex, ADLFanSpeedInfo *lpFanSpeedInfo);
306 int hc_ADL_Overdrive5_FanSpeed_Get (HM_LIB hDLL, int iAdapterIndex, int iThermalControllerIndex, ADLFanSpeedValue *lpFanSpeedValue);
307 int hc_ADL_Overdrive6_FanSpeed_Get (HM_LIB hDLL, int iAdapterIndex, ADLOD6FanSpeedInfo *lpFanSpeedInfo);
308 int hc_ADL_Overdrive5_FanSpeed_Set (HM_LIB hDLL, int iAdapterIndex, int iThermalControllerIndex, ADLFanSpeedValue *lpFanSpeedValue);
309 int hc_ADL_Overdrive6_FanSpeed_Set (HM_LIB hDLL, int iAdapterIndex, ADLOD6FanSpeedValue *lpFanSpeedValue);
310 int hc_ADL_Overdrive5_FanSpeedToDefault_Set (HM_LIB hDLL, int iAdapterIndex, int iThermalControllerIndex);
311 int hc_ADL_Overdrive_ODParameters_Get (HM_LIB hDLL, int iAdapterIndex, ADLODParameters *lpOdParameters);
312 int hc_ADL_Overdrive_ODPerformanceLevels_Get (HM_LIB hDLL, int iAdapterIndex, int iDefault, ADLODPerformanceLevels *lpOdPerformanceLevels);
313 int hc_ADL_Overdrive_ODPerformanceLevels_Set (HM_LIB hDLL, int iAdapterIndex, ADLODPerformanceLevels *lpOdPerformanceLevels);
314 int hc_ADL_Overdrive_PowerControlInfo_Get (HM_LIB hDLL, int iAdapterIndex, ADLOD6PowerControlInfo *);
315 int hc_ADL_Overdrive_PowerControl_Get (HM_LIB hDLL, int iAdapterIndex, int *level);
316 int hc_ADL_Overdrive_PowerControl_Set (HM_LIB hDLL, int iAdapterIndex, int level);
317 int hc_ADL_Adapter_Active_Get (HM_LIB hDLL, int iAdapterIndex, int *lpStatus);
318 int hc_ADL_DisplayEnable_Set (HM_LIB hDLL, int iAdapterIndex, int *lpDisplayIndexList, int iDisplayListSize, int bPersistOnly);
319 int hc_ADL_Overdrive_Caps (HM_LIB hDLL, int iAdapterIndex, int *od_supported, int *od_enabled, int *od_version);
320 int hc_ADL_Overdrive_CurrentStatus_Get (HM_LIB hDLL, int iAdapterIndex, ADLOD6CurrentStatus *status);
321 int hc_ADL_Overdrive_StateInfo_Get (HM_LIB hDLL, int iAdapterIndex, int type, ADLOD6MemClockState *state);
322 int hc_ADL_Overdrive_Capabilities_Get (HM_LIB hDLL, int iAdapterIndex, ADLOD6Capabilities *caps);
323 int hc_ADL_Overdrive_State_Set (HM_LIB hDLL, int iAdapterIndex, int type, ADLOD6StateInfo *state);
324 int hc_ADL_Overdrive6_PowerControl_Caps (HM_LIB hDLL, int iAdapterIndex, int *lpSupported);
325 int hc_ADL_Overdrive6_TargetTemperatureData_Get (HM_LIB hDLL, int iAdapterIndex, int *cur_temp, int *default_temp);
326
327 #endif // HAVE_HWMON && HAVE_ADL
328
329 #endif // EXT_ADL_H