2 * Author......: Jens Steube <jens.steube@gmail.com>
9 void *GetProcAddress (void *pLibrary
, const char *name
)
11 return dlsym (pLibrary
, name
);
15 int hc_ADL_Main_Control_Destroy (HM_LIB hDLL
)
17 ADL_MAIN_CONTROL_DESTROY ADL_Main_Control_Destroy
= (ADL_MAIN_CONTROL_DESTROY
) GetProcAddress (hDLL
, "ADL_Main_Control_Destroy");
19 if (ADL_Main_Control_Destroy
== NULL
)
21 log_error ("ERROR: %s\n", "ADL_Main_Control_Destroy() is missing");
26 int ADL_rc
= ADL_Main_Control_Destroy ();
30 log_info ("WARN: %s: %d\n", "ADL_Main_Control_Destroy()", ADL_rc
);
36 int hc_ADL_Main_Control_Create (HM_LIB hDLL
, ADL_MAIN_MALLOC_CALLBACK callback
, int iEnumConnectedAdapters
)
38 ADL_MAIN_CONTROL_CREATE ADL_Main_Control_Create
= (ADL_MAIN_CONTROL_CREATE
) GetProcAddress (hDLL
, "ADL_Main_Control_Create");
40 if (ADL_Main_Control_Create
== NULL
)
42 log_error ("ERROR: %s\n", "ADL_Main_Control_Create() is missing");
47 int ADL_rc
= ADL_Main_Control_Create (callback
, iEnumConnectedAdapters
);
51 log_info ("WARN: %s: %d\n", "ADL_Main_Control_Create()", ADL_rc
);
57 int hc_ADL_Adapter_NumberOfAdapters_Get (HM_LIB hDLL
, int *lpNumAdapters
)
59 ADL_ADAPTER_NUMBEROFADAPTERS_GET ADL_Adapter_NumberOfAdapters_Get
= (ADL_ADAPTER_NUMBEROFADAPTERS_GET
) GetProcAddress (hDLL
, "ADL_Adapter_NumberOfAdapters_Get");
61 if (ADL_Adapter_NumberOfAdapters_Get
== NULL
)
63 log_error ("ERROR: %s\n", "ADL_Adapter_NumberOfAdapters_Get() is missing");
68 int ADL_rc
= ADL_Adapter_NumberOfAdapters_Get (lpNumAdapters
);
72 log_info ("WARN: %s: %d\n", "ADL_Adapter_NumberOfAdapters_Get()", ADL_rc
);
78 int hc_ADL_Adapter_AdapterInfo_Get (HM_LIB hDLL
, LPAdapterInfo lpInfo
, int iInputSize
)
80 ADL_ADAPTER_ADAPTERINFO_GET ADL_Adapter_AdapterInfo_Get
= (ADL_ADAPTER_ADAPTERINFO_GET
) GetProcAddress (hDLL
, "ADL_Adapter_AdapterInfo_Get");
82 if (ADL_Adapter_AdapterInfo_Get
== NULL
)
84 log_error ("ERROR: %s\n", "ADL_Adapter_AdapterInfo_Get() is missing");
89 int ADL_rc
= ADL_Adapter_AdapterInfo_Get (lpInfo
, iInputSize
);
93 log_info ("WARN: %s: %d\n", "ADL_Adapter_AdapterInfo_Get()", ADL_rc
);
99 int hc_ADL_Display_DisplayInfo_Get (HM_LIB hDLL
, int iAdapterIndex
, int *iNumDisplays
, ADLDisplayInfo
**lppInfo
, int iForceDetect
)
101 ADL_DISPLAY_DISPLAYINFO_GET ADL_Display_DisplayInfo_Get
= (ADL_DISPLAY_DISPLAYINFO_GET
) GetProcAddress (hDLL
, "ADL_Display_DisplayInfo_Get");
103 if (ADL_Display_DisplayInfo_Get
== NULL
)
105 log_error ("ERROR: %s\n", "ADL_Display_DisplayInfo_Get() is missing");
110 int ADL_rc
= ADL_Display_DisplayInfo_Get (iAdapterIndex
, iNumDisplays
, lppInfo
, iForceDetect
);
112 if (ADL_rc
!= ADL_OK
)
114 log_info ("WARN: %s: %d\n", "ADL_Display_DisplayInfo_Get()", ADL_rc
);
120 int hc_ADL_Adapter_ID_Get (HM_LIB hDLL
, int iAdapterIndex
, int *lpAdapterID
)
122 HC_ADL_ADAPTER_ID_GET ADL_Adapter_ID_Get
= (HC_ADL_ADAPTER_ID_GET
) GetProcAddress (hDLL
, "ADL_Adapter_ID_Get");
124 if (ADL_Adapter_ID_Get
== NULL
)
126 log_error ("ERROR: %s\n", "ADL_Adapter_ID_Get() is missing");
131 int ADL_rc
= ADL_Adapter_ID_Get (iAdapterIndex
, lpAdapterID
);
133 if (ADL_rc
!= ADL_OK
)
135 log_info ("WARN: %s: %d\n", "ADL_Adapter_ID_Get()", ADL_rc
);
141 int hc_ADL_Adapter_VideoBiosInfo_Get (HM_LIB hDLL
, int iAdapterIndex
, ADLBiosInfo
*lpBiosInfo
)
143 HC_ADL_ADAPTER_VIDEOBIOSINFO_GET ADL_Adapter_VideoBiosInfo_Get
= (HC_ADL_ADAPTER_VIDEOBIOSINFO_GET
) GetProcAddress (hDLL
, "ADL_Adapter_VideoBiosInfo_Get");
145 if (ADL_Adapter_VideoBiosInfo_Get
== NULL
)
147 log_error ("ERROR: %s\n", "ADL_Adapter_VideoBiosInfo_Get() is missing");
152 int ADL_rc
= ADL_Adapter_VideoBiosInfo_Get (iAdapterIndex
, lpBiosInfo
);
154 if (ADL_rc
!= ADL_OK
)
156 log_info ("WARN: %s: %d\n", "ADL_Adapter_VideoBiosInfo_Get()", ADL_rc
);
162 int hc_ADL_Overdrive_ThermalDevices_Enum (HM_LIB hDLL
, int iAdapterIndex
, int iThermalControllerIndex
, ADLThermalControllerInfo
*lpThermalControllerInfo
)
164 HC_ADL_OVERDRIVE5_THERMALDEVICES_ENUM ADL_Overdrive5_ThermalDevices_Enum
= (HC_ADL_OVERDRIVE5_THERMALDEVICES_ENUM
) GetProcAddress (hDLL
, "ADL_Overdrive5_ThermalDevices_Enum");
166 if (ADL_Overdrive5_ThermalDevices_Enum
== NULL
)
168 log_error ("ERROR: %s\n", "ADL_Overdrive5_ThermalDevices_Enum() is missing");
173 int ADL_rc
= ADL_Overdrive5_ThermalDevices_Enum (iAdapterIndex
, iThermalControllerIndex
, lpThermalControllerInfo
);
175 if (ADL_rc
!= ADL_OK
)
177 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ThermalDevices_Enum()", ADL_rc
);
183 int hc_ADL_Overdrive5_Temperature_Get (HM_LIB hDLL
, int iAdapterIndex
, int iThermalControllerIndex
, ADLTemperature
*lpTemperature
)
185 ADL_OVERDRIVE5_TEMPERATURE_GET ADL_Overdrive5_Temperature_Get
= (ADL_OVERDRIVE5_TEMPERATURE_GET
) GetProcAddress (hDLL
, "ADL_Overdrive5_Temperature_Get");
187 if (ADL_Overdrive5_Temperature_Get
== NULL
)
189 log_error ("ERROR: %s\n", "ADL_Overdrive5_Temperature_Get() is missing");
194 int ADL_rc
= ADL_Overdrive5_Temperature_Get (iAdapterIndex
, iThermalControllerIndex
, lpTemperature
);
196 if (ADL_rc
!= ADL_OK
)
198 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_Temperature_Get()", ADL_rc
);
204 int hc_ADL_Overdrive6_Temperature_Get (HM_LIB hDLL
, int iAdapterIndex
, int *iTemperature
)
206 ADL_OVERDRIVE6_TEMPERATURE_GET ADL_Overdrive6_Temperature_Get
= (ADL_OVERDRIVE6_TEMPERATURE_GET
) GetProcAddress (hDLL
, "ADL_Overdrive6_Temperature_Get");
208 if (ADL_Overdrive6_Temperature_Get
== NULL
)
210 log_error ("ERROR: %s\n", "ADL_Overdrive6_Temperature_Get() is missing");
215 int ADL_rc
= ADL_Overdrive6_Temperature_Get (iAdapterIndex
, iTemperature
);
217 if (ADL_rc
!= ADL_OK
)
219 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_Temperature_Get()", ADL_rc
);
225 int hc_ADL_Overdrive_CurrentActivity_Get (HM_LIB hDLL
, int iAdapterIndex
, ADLPMActivity
*lpActivity
)
227 HC_ADL_OVERDRIVE5_CURRENTACTIVITY_GET ADL_Overdrive5_CurrentActivity_Get
= (HC_ADL_OVERDRIVE5_CURRENTACTIVITY_GET
) GetProcAddress (hDLL
, "ADL_Overdrive5_CurrentActivity_Get");
229 if (ADL_Overdrive5_CurrentActivity_Get
== NULL
)
231 log_error ("ERROR: %s\n", "ADL_Overdrive5_CurrentActivity_Get() is missing");
236 int ADL_rc
= ADL_Overdrive5_CurrentActivity_Get (iAdapterIndex
, lpActivity
);
238 if (ADL_rc
!= ADL_OK
)
240 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_CurrentActivity_Get()", ADL_rc
);
246 int hc_ADL_Overdrive5_FanSpeedInfo_Get (HM_LIB hDLL
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedInfo
*lpFanSpeedInfo
)
248 HC_ADL_OVERDRIVE5_FANSPEEDINFO_GET ADL_Overdrive5_FanSpeedInfo_Get
= (HC_ADL_OVERDRIVE5_FANSPEEDINFO_GET
) GetProcAddress (hDLL
, "ADL_Overdrive5_FanSpeedInfo_Get");
250 if (ADL_Overdrive5_FanSpeedInfo_Get
== NULL
)
252 log_error ("ERROR: %s\n", "ADL_Overdrive5_FanSpeedInfo_Get() is missing");
257 int ADL_rc
= ADL_Overdrive5_FanSpeedInfo_Get (iAdapterIndex
, iThermalControllerIndex
, lpFanSpeedInfo
);
259 if (ADL_rc
!= ADL_OK
)
261 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeedInfo_Get()", ADL_rc
);
267 int hc_ADL_Overdrive5_FanSpeed_Get (HM_LIB hDLL
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedValue
*lpFanSpeedValue
)
269 ADL_OVERDRIVE5_FANSPEED_GET ADL_Overdrive5_FanSpeed_Get
= (ADL_OVERDRIVE5_FANSPEED_GET
) GetProcAddress (hDLL
, "ADL_Overdrive5_FanSpeed_Get");
271 if (ADL_Overdrive5_FanSpeed_Get
== NULL
)
273 log_error ("ERROR: %s\n", "ADL_Overdrive5_FanSpeed_Get() is missing");
278 int ADL_rc
= ADL_Overdrive5_FanSpeed_Get (iAdapterIndex
, iThermalControllerIndex
, lpFanSpeedValue
);
280 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
282 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeed_Get()", ADL_rc
);
288 int hc_ADL_Overdrive6_FanSpeed_Get (HM_LIB hDLL
, int iAdapterIndex
, ADLOD6FanSpeedInfo
*lpFanSpeedInfo
)
290 ADL_OVERDRIVE6_FANSPEED_GET ADL_Overdrive6_FanSpeed_Get
= (ADL_OVERDRIVE6_FANSPEED_GET
) GetProcAddress (hDLL
, "ADL_Overdrive6_FanSpeed_Get");
292 if (ADL_Overdrive6_FanSpeed_Get
== NULL
)
294 log_error ("ERROR: %s\n", "ADL_Overdrive6_FanSpeed_Get() is missing");
299 int ADL_rc
= ADL_Overdrive6_FanSpeed_Get (iAdapterIndex
, lpFanSpeedInfo
);
301 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
303 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_FanSpeed_Get()", ADL_rc
);
309 int hc_ADL_Overdrive5_FanSpeed_Set (HM_LIB hDLL
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedValue
*lpFanSpeedValue
)
311 ADL_OVERDRIVE5_FANSPEED_SET ADL_Overdrive5_FanSpeed_Set
= (ADL_OVERDRIVE5_FANSPEED_SET
) GetProcAddress (hDLL
, "ADL_Overdrive5_FanSpeed_Set");
313 if (ADL_Overdrive5_FanSpeed_Set
== NULL
)
315 log_error ("ERROR: %s\n", "ADL_Overdrive5_FanSpeed_Set() is missing");
320 int ADL_rc
= ADL_Overdrive5_FanSpeed_Set (iAdapterIndex
, iThermalControllerIndex
, lpFanSpeedValue
);
322 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
324 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeed_Set()", ADL_rc
);
330 int hc_ADL_Overdrive6_FanSpeed_Set (HM_LIB hDLL
, int iAdapterIndex
, ADLOD6FanSpeedValue
*lpFanSpeedValue
)
332 ADL_OVERDRIVE6_FANSPEED_SET ADL_Overdrive6_FanSpeed_Set
= (ADL_OVERDRIVE6_FANSPEED_SET
) GetProcAddress (hDLL
, "ADL_Overdrive6_FanSpeed_Set");
334 if (ADL_Overdrive6_FanSpeed_Set
== NULL
)
336 log_error ("ERROR: %s\n", "ADL_Overdrive6_FanSpeed_Set() is missing");
341 int ADL_rc
= ADL_Overdrive6_FanSpeed_Set (iAdapterIndex
, lpFanSpeedValue
);
343 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
345 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_FanSpeed_Set()", ADL_rc
);
351 int hc_ADL_Overdrive5_FanSpeedToDefault_Set (HM_LIB hDLL
, int iAdapterIndex
, int iThermalControllerIndex
)
353 ADL_OVERDRIVE5_FANSPEEDTODEFAULT_SET ADL_Overdrive5_FanSpeedToDefault_Set
= (ADL_OVERDRIVE5_FANSPEEDTODEFAULT_SET
) GetProcAddress (hDLL
, "ADL_Overdrive5_FanSpeedToDefault_Set");
355 if (ADL_Overdrive5_FanSpeedToDefault_Set
== NULL
)
357 log_error ("ERROR: %s\n", "ADL_Overdrive5_FanSpeedToDefault_Set() is missing");
362 int ADL_rc
= ADL_Overdrive5_FanSpeedToDefault_Set (iAdapterIndex
, iThermalControllerIndex
);
364 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
366 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeedToDefault_Set()", ADL_rc
);
372 int hc_ADL_Overdrive_ODParameters_Get (HM_LIB hDLL
, int iAdapterIndex
, ADLODParameters
*lpOdParameters
)
374 HC_ADL_OVERDRIVE5_ODPARAMETERS_GET ADL_Overdrive5_ODParameters_Get
= (HC_ADL_OVERDRIVE5_ODPARAMETERS_GET
) GetProcAddress (hDLL
, "ADL_Overdrive5_ODParameters_Get");
376 if (ADL_Overdrive5_ODParameters_Get
== NULL
)
378 log_error ("ERROR: %s\n", "ADL_Overdrive5_ODParameters_Get() is missing");
383 int ADL_rc
= ADL_Overdrive5_ODParameters_Get (iAdapterIndex
, lpOdParameters
);
385 if (ADL_rc
!= ADL_OK
)
387 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODParameters_Get()", ADL_rc
);
393 int hc_ADL_Overdrive_ODPerformanceLevels_Get (HM_LIB hDLL
, int iAdapterIndex
, int iDefault
, ADLODPerformanceLevels
*lpOdPerformanceLevels
)
395 HC_ADL_OVERDRIVE5_ODPERFORMANCELEVELS_GET ADL_Overdrive5_ODPerformanceLevels_Get
= (HC_ADL_OVERDRIVE5_ODPERFORMANCELEVELS_GET
) GetProcAddress (hDLL
, "ADL_Overdrive5_ODPerformanceLevels_Get");
397 if (ADL_Overdrive5_ODPerformanceLevels_Get
== NULL
)
399 log_error ("ERROR: %s\n", "ADL_Overdrive5_ODPerformanceLevels_Get() is missing");
404 int ADL_rc
= ADL_Overdrive5_ODPerformanceLevels_Get (iAdapterIndex
, iDefault
, lpOdPerformanceLevels
);
406 if (ADL_rc
!= ADL_OK
)
408 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODPerformanceLevels_Get()", ADL_rc
);
414 int hc_ADL_Overdrive_ODPerformanceLevels_Set (HM_LIB hDLL
, int iAdapterIndex
, ADLODPerformanceLevels
*lpOdPerformanceLevels
)
416 HC_ADL_OVERDRIVE5_ODPERFORMANCELEVELS_SET ADL_Overdrive5_ODPerformanceLevels_Set
= (HC_ADL_OVERDRIVE5_ODPERFORMANCELEVELS_SET
) GetProcAddress (hDLL
, "ADL_Overdrive5_ODPerformanceLevels_Set");
418 if (ADL_Overdrive5_ODPerformanceLevels_Set
== NULL
)
420 log_error ("ERROR: %s\n", "ADL_Overdrive5_ODPerformanceLevels_Set() is missing");
425 int ADL_rc
= ADL_Overdrive5_ODPerformanceLevels_Set (iAdapterIndex
, lpOdPerformanceLevels
);
427 if (ADL_rc
!= ADL_OK
)
429 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODPerformanceLevels_Set()", ADL_rc
);
435 int hc_ADL_Overdrive_PowerControlInfo_Get (HM_LIB hDLL
, int iAdapterIndex
, ADLOD6PowerControlInfo
*powertune
)
437 HC_ADL_OVERDRIVE6_POWERCONTROLINFO_GET ADL_Overdrive6_PowerControlInfo_Get
= (HC_ADL_OVERDRIVE6_POWERCONTROLINFO_GET
) GetProcAddress (hDLL
, "ADL_Overdrive6_PowerControlInfo_Get");
439 if (ADL_Overdrive6_PowerControlInfo_Get
== NULL
)
441 log_error ("ERROR: %s\n", "ADL_Overdrive6_PowerControlInfo_Get is missing");
446 int ADL_rc
= ADL_Overdrive6_PowerControlInfo_Get (iAdapterIndex
, powertune
);
451 int hc_ADL_Overdrive_PowerControl_Get (HM_LIB hDLL
, int iAdapterIndex
, int *iCurrentValue
)
453 HC_ADL_OVERDRIVE6_POWERCONTROL_GET ADL_Overdrive6_PowerControl_Get
= (HC_ADL_OVERDRIVE6_POWERCONTROL_GET
) GetProcAddress (hDLL
, "ADL_Overdrive6_PowerControl_Get");
455 if (ADL_Overdrive6_PowerControl_Get
== NULL
)
457 log_error ("ERROR: %s\n", "ADL_Overdrive6_PowerControl_Get is missing");
462 int default_value
= 0;
464 int ADL_rc
= ADL_Overdrive6_PowerControl_Get (iAdapterIndex
, iCurrentValue
, &default_value
);
469 int hc_ADL_Overdrive_PowerControl_Set (HM_LIB hDLL
, int iAdapterIndex
, int level
)
471 HC_ADL_OVERDRIVE6_POWERCONTROL_SET ADL_Overdrive6_PowerControl_Set
= (HC_ADL_OVERDRIVE6_POWERCONTROL_SET
) GetProcAddress (hDLL
, "ADL_Overdrive6_PowerControl_Set");
473 int ADL_rc
= ADL_ERR
;
475 ADLOD6PowerControlInfo powertune
= {0, 0, 0, 0, 0};
477 if ((ADL_rc
= hc_ADL_Overdrive_PowerControlInfo_Get (hDLL
, iAdapterIndex
, &powertune
)) != ADL_OK
)
479 log_info ("WARN: %s\n", "ADL_Overdrive6_PowerControl_Get", ADL_rc
);
483 int min
= powertune
.iMinValue
;
484 int max
= powertune
.iMaxValue
;
485 int step
= powertune
.iStepValue
;
487 if (level
< min
|| level
> max
)
489 log_info ("WARN: ADL PowerControl level invalid");
493 if (level
% step
!= 0)
495 log_info ("WARN: ADL PowerControl step invalid");
500 ADL_rc
= ADL_Overdrive6_PowerControl_Set (iAdapterIndex
, level
);
506 int hc_ADL_Adapter_Active_Get (HM_LIB hDLL
, int iAdapterIndex
, int *lpStatus
)
508 ADL_ADAPTER_ACTIVE_GET ADL_Adapter_Active_Get
= (ADL_ADAPTER_ACTIVE_GET
) GetProcAddress (hDLL
, "ADL_Adapter_Active_Get");
510 if (ADL_Adapter_Active_Get
== NULL
)
512 log_error ("ERROR: %s\n", "ADL_Adapter_Active_Get() is missing");
517 int ADL_rc
= ADL_Adapter_Active_Get (iAdapterIndex
, lpStatus
);
519 if (ADL_rc
!= ADL_OK
)
521 log_info ("WARN: %s: %d\n", "ADL_Adapter_Active_Get()", ADL_rc
);
527 int hc_ADL_DisplayEnable_Set (HM_LIB hDLL
, int iAdapterIndex
, int *lpDisplayIndexList
, int iDisplayListSize
, int bPersistOnly
)
529 ADL_DISPLAYENABLE_SET ADL_DisplayEnable_Set
= (ADL_DISPLAYENABLE_SET
) GetProcAddress (hDLL
, "ADL_DisplayEnable_Set");
531 if (ADL_DisplayEnable_Set
== NULL
)
533 log_error ("ERROR: %s\n", "ADL_DisplayEnable_Set() is missing");
538 int ADL_rc
= ADL_DisplayEnable_Set (iAdapterIndex
, lpDisplayIndexList
, iDisplayListSize
, bPersistOnly
);
540 if (ADL_rc
!= ADL_OK
)
542 log_info ("WARN: %s: %d\n", "ADL_DisplayEnable_Set()", ADL_rc
);
548 int hc_ADL_Overdrive_Caps (HM_LIB hDLL
, int iAdapterIndex
, int *od_supported
, int *od_enabled
, int *od_version
)
550 ADL_OVERDRIVE_CAPS ADL_Overdrive_Caps
= (ADL_OVERDRIVE_CAPS
) GetProcAddress (hDLL
, "ADL_Overdrive_Caps");
552 if (ADL_Overdrive_Caps
== NULL
)
554 log_error ("ERROR: %s\n", "ADL_Overdrive_Caps() is missing");
559 int ADL_rc
= ADL_Overdrive_Caps (iAdapterIndex
, od_supported
, od_enabled
, od_version
);
564 int hc_ADL_Overdrive6_PowerControl_Caps (HM_LIB hDLL
, int iAdapterIndex
, int *lpSupported
)
566 ADL_OVERDRIVE6_POWERCONTROL_CAPS ADL_Overdrive6_PowerControl_Caps
= (ADL_OVERDRIVE6_POWERCONTROL_CAPS
) GetProcAddress (hDLL
, "ADL_Overdrive6_PowerControl_Caps");
568 if (ADL_Overdrive6_PowerControl_Caps
== NULL
)
570 log_error ("ERROR: %s\n", "ADL_Overdrive6_PowerControl_Caps() is missing");
575 int ADL_rc
= ADL_Overdrive6_PowerControl_Caps (iAdapterIndex
, lpSupported
);
580 int hc_ADL_Overdrive_Capabilities_Get (HM_LIB hDLL
, int iAdapterIndex
, ADLOD6Capabilities
*caps
)
582 ADL_OVERDRIVE6_CAPABILITIES_GET ADL_Overdrive6_Capabilities_Get
= (ADL_OVERDRIVE6_CAPABILITIES_GET
) GetProcAddress (hDLL
, "ADL_Overdrive6_Capabilities_Get");
584 if (ADL_Overdrive6_Capabilities_Get
== NULL
)
586 log_error ("ERROR: %s\n", "ADL_Overdrive6_Capabilities_Get() is missing");
591 int ADL_rc
= ADL_Overdrive6_Capabilities_Get (iAdapterIndex
, caps
);
596 int hc_ADL_Overdrive_StateInfo_Get (HM_LIB hDLL
, int iAdapterIndex
, int type
, ADLOD6MemClockState
*state
)
598 ADL_OVERDRIVE6_STATEINFO_GET ADL_Overdrive6_StateInfo_Get
= (ADL_OVERDRIVE6_STATEINFO_GET
) GetProcAddress (hDLL
, "ADL_Overdrive6_StateInfo_Get");
600 if (ADL_Overdrive6_StateInfo_Get
== NULL
)
602 log_error ("ERROR: %s\n", "ADL_Overdrive6_StateInfo_Get() is missing");
607 int ADL_rc
= ADL_Overdrive6_StateInfo_Get (iAdapterIndex
, type
, state
);
609 if (ADL_rc
== ADL_OK
)
611 // check if clocks are okay with step sizes
612 // if not run a little hack: adjust the clocks to nearest clock size (clock down just a little bit)
614 ADLOD6Capabilities caps
;
616 if ((hc_ADL_Overdrive_Capabilities_Get (hDLL
, iAdapterIndex
, &caps
)) != ADL_OK
)
618 log_info ("ERROR: failed to get ADL device capabilities");
623 if (state
->state
.aLevels
[0].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
625 log_info ("WARN: ADL engine step size invalid for performance level 1");
626 state
->state
.aLevels
[0].iEngineClock
-= state
->state
.aLevels
[0].iEngineClock
% caps
.sEngineClockRange
.iStep
;
629 if (state
->state
.aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
631 log_info ("WARN: ADL engine step size invalid for performance level 2");
632 state
->state
.aLevels
[1].iEngineClock
-= state
->state
.aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
;
635 if (state
->state
.aLevels
[0].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
637 log_info ("WARN: ADL memory step size invalid for performance level 1");
638 state
->state
.aLevels
[0].iMemoryClock
-= state
->state
.aLevels
[0].iMemoryClock
% caps
.sMemoryClockRange
.iStep
;
641 if (state
->state
.aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
643 log_info ("WARN: ADL memory step size invalid for performance level 2");
644 state
->state
.aLevels
[1].iMemoryClock
-= state
->state
.aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
;
651 int hc_ADL_Overdrive_CurrentStatus_Get (HM_LIB hDLL
, int iAdapterIndex
, ADLOD6CurrentStatus
*status
)
653 ADL_OVERDRIVE6_CURRENTSTATUS_GET ADL_Overdrive6_CurrentStatus_Get
= (ADL_OVERDRIVE6_CURRENTSTATUS_GET
) GetProcAddress (hDLL
, "ADL_Overdrive6_CurrentStatus_Get");
655 if (ADL_Overdrive6_CurrentStatus_Get
== NULL
)
657 log_error ("ERROR: %s\n", "ADL_Overdrive6_CurrentStatus_Get() is missing");
662 int ADL_rc
= ADL_Overdrive6_CurrentStatus_Get (iAdapterIndex
, status
);
667 int hc_ADL_Overdrive_State_Set (HM_LIB hDLL
, int iAdapterIndex
, int type
, ADLOD6StateInfo
*state
)
669 ADL_OVERDRIVE6_STATE_SET ADL_Overdrive6_State_Set
= (ADL_OVERDRIVE6_STATE_SET
) GetProcAddress (hDLL
, "ADL_Overdrive6_State_Set");
671 if (ADL_Overdrive6_State_Set
== NULL
)
673 log_error ("ERROR: %s\n", "ADL_Overdrive6_State_Set() is missing");
680 ADLOD6Capabilities caps
;
682 if ((hc_ADL_Overdrive_Capabilities_Get (hDLL
, iAdapterIndex
, &caps
)) != ADL_OK
)
684 log_info ("ERROR: failed to get ADL device capabilities");
689 if (state
->aLevels
[0].iEngineClock
< caps
.sEngineClockRange
.iMin
|| state
->aLevels
[1].iEngineClock
> caps
.sEngineClockRange
.iMax
)
691 log_info ("WARN: ADL engine clock outside valid range");
696 if (state
->aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
698 log_info ("WARN: ADL engine step size invalid");
703 if (state
->aLevels
[0].iMemoryClock
< caps
.sMemoryClockRange
.iMin
|| state
->aLevels
[1].iMemoryClock
> caps
.sMemoryClockRange
.iMax
)
705 log_info ("WARN: ADL memory clock outside valid range");
710 if (state
->aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
712 log_info ("WARN: ADL memory step size invalid");
717 int ADL_rc
= ADL_Overdrive6_State_Set (iAdapterIndex
, type
, state
);
722 int hc_ADL_Overdrive6_TargetTemperatureData_Get (HM_LIB hDLL
, int iAdapterIndex
, int *cur_temp
, int *default_temp
)
724 ADL_OVERDRIVE6_TARGETTEMPERATUREDATA_GET ADL_Overdrive6_TargetTemperatureData_Get
= (ADL_OVERDRIVE6_TARGETTEMPERATUREDATA_GET
) GetProcAddress (hDLL
, "ADL_Overdrive6_TargetTemperatureData_Get");
726 if (ADL_Overdrive6_TargetTemperatureData_Get
== NULL
)
728 log_error ("ERROR: %s\n", "ADL_Overdrive6_TargetTemperatureData_Get() is missing");
733 int ADL_rc
= ADL_Overdrive6_TargetTemperatureData_Get (iAdapterIndex
, cur_temp
, default_temp
);