2 * Author......: Jens Steube <jens.steube@gmail.com>
8 int adl_init (ADL_PTR
*adl
)
10 if (!adl
) return (-1);
12 memset (adl
, 0, sizeof (ADL_PTR
));
15 if (!(adl
->lib
= hc_dlopen ("atiadlxx.dll")))
17 adl
->lib
= hc_dlopen ("atiadlxy.dll");
20 adl
->lib
= hc_dlopen ("libatiadlxx.so", RTLD_NOW
);
25 //if (data.quiet == 0)
26 // log_info ("WARNING: load ADL library failed, proceed without ADL HWMon enabled.");
31 HC_LOAD_FUNC(adl
, ADL_Main_Control_Destroy
, ADL_MAIN_CONTROL_DESTROY
, ADL
, 0)
32 HC_LOAD_FUNC(adl
, ADL_Main_Control_Create
, ADL_MAIN_CONTROL_CREATE
, ADL
, 0)
33 HC_LOAD_FUNC(adl
, ADL_Adapter_NumberOfAdapters_Get
, ADL_ADAPTER_NUMBEROFADAPTERS_GET
, ADL
, 0)
34 HC_LOAD_FUNC(adl
, ADL_Adapter_AdapterInfo_Get
, ADL_ADAPTER_ADAPTERINFO_GET
, ADL
, 0)
35 HC_LOAD_FUNC(adl
, ADL_Display_DisplayInfo_Get
, ADL_DISPLAY_DISPLAYINFO_GET
, ADL
, 0)
36 HC_LOAD_FUNC(adl
, ADL_Adapter_ID_Get
, ADL_ADAPTER_ID_GET
, ADL
, 0)
37 HC_LOAD_FUNC(adl
, ADL_Adapter_VideoBiosInfo_Get
, ADL_ADAPTER_VIDEOBIOSINFO_GET
, ADL
, 0)
38 HC_LOAD_FUNC(adl
, ADL_Overdrive5_ThermalDevices_Enum
, ADL_OVERDRIVE5_THERMALDEVICES_ENUM
, ADL
, 0)
39 HC_LOAD_FUNC(adl
, ADL_Overdrive5_Temperature_Get
, ADL_OVERDRIVE5_TEMPERATURE_GET
, ADL
, 0)
40 HC_LOAD_FUNC(adl
, ADL_Overdrive6_Temperature_Get
, ADL_OVERDRIVE6_TEMPERATURE_GET
, ADL
, 0)
41 HC_LOAD_FUNC(adl
, ADL_Overdrive5_CurrentActivity_Get
, ADL_OVERDRIVE5_CURRENTACTIVITY_GET
, ADL
, 0)
42 HC_LOAD_FUNC(adl
, ADL_Overdrive5_FanSpeedInfo_Get
, ADL_OVERDRIVE5_FANSPEEDINFO_GET
, ADL
, 0)
43 HC_LOAD_FUNC(adl
, ADL_Overdrive5_FanSpeed_Get
, ADL_OVERDRIVE5_FANSPEED_GET
, ADL
, 0)
44 HC_LOAD_FUNC(adl
, ADL_Overdrive6_FanSpeed_Get
, ADL_OVERDRIVE6_FANSPEED_GET
, ADL
, 0)
45 HC_LOAD_FUNC(adl
, ADL_Overdrive5_FanSpeed_Set
, ADL_OVERDRIVE5_FANSPEED_SET
, ADL
, 0)
46 HC_LOAD_FUNC(adl
, ADL_Overdrive6_FanSpeed_Set
, ADL_OVERDRIVE6_FANSPEED_SET
, ADL
, 0)
47 HC_LOAD_FUNC(adl
, ADL_Overdrive5_FanSpeedToDefault_Set
, ADL_OVERDRIVE5_FANSPEEDTODEFAULT_SET
, ADL
, 0)
48 HC_LOAD_FUNC(adl
, ADL_Overdrive5_ODParameters_Get
, ADL_OVERDRIVE5_ODPARAMETERS_GET
, ADL
, 0)
49 HC_LOAD_FUNC(adl
, ADL_Overdrive5_ODPerformanceLevels_Get
, ADL_OVERDRIVE5_ODPERFORMANCELEVELS_GET
, ADL
, 0)
50 HC_LOAD_FUNC(adl
, ADL_Overdrive5_ODPerformanceLevels_Set
, ADL_OVERDRIVE5_ODPERFORMANCELEVELS_SET
, ADL
, 0)
51 HC_LOAD_FUNC(adl
, ADL_Overdrive6_PowerControlInfo_Get
, ADL_OVERDRIVE6_POWERCONTROLINFO_GET
, ADL
, 0)
52 HC_LOAD_FUNC(adl
, ADL_Overdrive6_PowerControl_Get
, ADL_OVERDRIVE6_POWERCONTROL_GET
, ADL
, 0)
53 HC_LOAD_FUNC(adl
, ADL_Overdrive6_PowerControl_Set
, ADL_OVERDRIVE6_POWERCONTROL_SET
, ADL
, 0)
54 HC_LOAD_FUNC(adl
, ADL_Adapter_Active_Get
, ADL_ADAPTER_ACTIVE_GET
, ADL
, 0)
55 //HC_LOAD_FUNC(adl, ADL_DisplayEnable_Set, ADL_DISPLAYENABLE_SET, ADL, 0)
56 HC_LOAD_FUNC(adl
, ADL_Overdrive_Caps
, ADL_OVERDRIVE_CAPS
, ADL
, 0)
57 HC_LOAD_FUNC(adl
, ADL_Overdrive6_PowerControl_Caps
, ADL_OVERDRIVE6_POWERCONTROL_CAPS
, ADL
, 0)
58 HC_LOAD_FUNC(adl
, ADL_Overdrive6_Capabilities_Get
, ADL_OVERDRIVE6_CAPABILITIES_GET
, ADL
, 0)
59 HC_LOAD_FUNC(adl
, ADL_Overdrive6_StateInfo_Get
, ADL_OVERDRIVE6_STATEINFO_GET
, ADL
, 0)
60 HC_LOAD_FUNC(adl
, ADL_Overdrive6_CurrentStatus_Get
, ADL_OVERDRIVE6_CURRENTSTATUS_GET
, ADL
, 0)
61 HC_LOAD_FUNC(adl
, ADL_Overdrive6_State_Set
, ADL_OVERDRIVE6_STATE_SET
, ADL
, 0)
62 HC_LOAD_FUNC(adl
, ADL_Overdrive6_TargetTemperatureData_Get
, ADL_OVERDRIVE6_TARGETTEMPERATUREDATA_GET
, ADL
, 0)
63 HC_LOAD_FUNC(adl
, ADL_Overdrive6_TargetTemperatureRangeInfo_Get
, ADL_OVERDRIVE6_TARGETTEMPERATURERANGEINFO_GET
, ADL
, 0)
68 void adl_close (ADL_PTR
*adl
)
73 hc_dlclose (adl
->lib
);
79 int hm_ADL_Main_Control_Destroy (ADL_PTR
*adl
)
81 if (!adl
) return (-1);
83 int ADL_rc
= adl
->ADL_Main_Control_Destroy ();
87 log_info ("WARN: %s: %d\n", "ADL_Main_Control_Destroy()", ADL_rc
);
93 int hm_ADL_Main_Control_Create (ADL_PTR
*adl
, ADL_MAIN_MALLOC_CALLBACK callback
, int iEnumConnectedAdapters
)
95 if (!adl
) return (-1);
97 int ADL_rc
= adl
->ADL_Main_Control_Create (callback
, iEnumConnectedAdapters
);
101 log_info ("WARN: %s: %d\n", "ADL_Main_Control_Create()", ADL_rc
);
107 int hm_ADL_Adapter_NumberOfAdapters_Get (ADL_PTR
*adl
, int *lpNumAdapters
)
109 if (!adl
) return (-1);
111 int ADL_rc
= adl
->ADL_Adapter_NumberOfAdapters_Get (lpNumAdapters
);
113 if (ADL_rc
!= ADL_OK
)
115 log_info ("WARN: %s: %d\n", "ADL_Adapter_NumberOfAdapters_Get()", ADL_rc
);
121 int hm_ADL_Adapter_AdapterInfo_Get (ADL_PTR
*adl
, LPAdapterInfo lpInfo
, int iInputSize
)
123 if (!adl
) return (-1);
125 int ADL_rc
= adl
->ADL_Adapter_AdapterInfo_Get (lpInfo
, iInputSize
);
127 if (ADL_rc
!= ADL_OK
)
129 log_info ("WARN: %s: %d\n", "ADL_Adapter_AdapterInfo_Get()", ADL_rc
);
135 int hm_ADL_Display_DisplayInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *iNumDisplays
, ADLDisplayInfo
**lppInfo
, int iForceDetect
)
137 if (!adl
) return (-1);
139 int ADL_rc
= adl
->ADL_Display_DisplayInfo_Get (iAdapterIndex
, iNumDisplays
, lppInfo
, iForceDetect
);
141 if (ADL_rc
!= ADL_OK
)
143 log_info ("WARN: %s: %d\n", "ADL_Display_DisplayInfo_Get()", ADL_rc
);
149 int hm_ADL_Adapter_ID_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *lpAdapterID
)
151 if (!adl
) return (-1);
153 int ADL_rc
= adl
->ADL_Adapter_ID_Get (iAdapterIndex
, lpAdapterID
);
155 if (ADL_rc
!= ADL_OK
)
157 log_info ("WARN: %s: %d\n", "ADL_Adapter_ID_Get()", ADL_rc
);
163 int hm_ADL_Adapter_VideoBiosInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLBiosInfo
*lpBiosInfo
)
165 if (!adl
) return (-1);
167 int ADL_rc
= adl
->ADL_Adapter_VideoBiosInfo_Get (iAdapterIndex
, lpBiosInfo
);
169 if (ADL_rc
!= ADL_OK
)
171 log_info ("WARN: %s: %d\n", "ADL_Adapter_VideoBiosInfo_Get()", ADL_rc
);
177 int hm_ADL_Overdrive_ThermalDevices_Enum (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLThermalControllerInfo
*lpThermalControllerInfo
)
179 if (!adl
) return (-1);
181 int ADL_rc
= adl
->ADL_Overdrive5_ThermalDevices_Enum (iAdapterIndex
, iThermalControllerIndex
, lpThermalControllerInfo
);
183 if (ADL_rc
!= ADL_OK
)
185 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ThermalDevices_Enum()", ADL_rc
);
191 int hm_ADL_Overdrive5_Temperature_Get (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLTemperature
*lpTemperature
)
193 if (!adl
) return (-1);
195 int ADL_rc
= adl
->ADL_Overdrive5_Temperature_Get (iAdapterIndex
, iThermalControllerIndex
, lpTemperature
);
197 if (ADL_rc
!= ADL_OK
)
199 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_Temperature_Get()", ADL_rc
);
205 int hm_ADL_Overdrive6_Temperature_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *iTemperature
)
207 if (!adl
) return (-1);
209 int ADL_rc
= adl
->ADL_Overdrive6_Temperature_Get (iAdapterIndex
, iTemperature
);
211 if (ADL_rc
!= ADL_OK
)
213 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_Temperature_Get()", ADL_rc
);
219 int hm_ADL_Overdrive_CurrentActivity_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLPMActivity
*lpActivity
)
221 if (!adl
) return (-1);
223 int ADL_rc
= adl
->ADL_Overdrive5_CurrentActivity_Get (iAdapterIndex
, lpActivity
);
225 if (ADL_rc
!= ADL_OK
)
227 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_CurrentActivity_Get()", ADL_rc
);
233 int hm_ADL_Overdrive5_FanSpeedInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedInfo
*lpFanSpeedInfo
)
235 if (!adl
) return (-1);
237 int ADL_rc
= adl
->ADL_Overdrive5_FanSpeedInfo_Get (iAdapterIndex
, iThermalControllerIndex
, lpFanSpeedInfo
);
239 if (ADL_rc
!= ADL_OK
)
241 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeedInfo_Get()", ADL_rc
);
247 int hm_ADL_Overdrive5_FanSpeed_Get (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedValue
*lpFanSpeedValue
)
249 if (!adl
) return (-1);
251 int ADL_rc
= adl
->ADL_Overdrive5_FanSpeed_Get (iAdapterIndex
, iThermalControllerIndex
, lpFanSpeedValue
);
253 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
255 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeed_Get()", ADL_rc
);
261 int hm_ADL_Overdrive6_FanSpeed_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6FanSpeedInfo
*lpFanSpeedInfo
)
263 if (!adl
) return (-1);
265 int ADL_rc
= adl
->ADL_Overdrive6_FanSpeed_Get (iAdapterIndex
, lpFanSpeedInfo
);
267 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
269 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_FanSpeed_Get()", ADL_rc
);
275 int hm_ADL_Overdrive5_FanSpeed_Set (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedValue
*lpFanSpeedValue
)
277 if (!adl
) return (-1);
279 int ADL_rc
= adl
->ADL_Overdrive5_FanSpeed_Set (iAdapterIndex
, iThermalControllerIndex
, lpFanSpeedValue
);
281 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
283 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeed_Set()", ADL_rc
);
289 int hm_ADL_Overdrive6_FanSpeed_Set (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6FanSpeedValue
*lpFanSpeedValue
)
291 if (!adl
) return (-1);
293 int ADL_rc
= adl
->ADL_Overdrive6_FanSpeed_Set (iAdapterIndex
, lpFanSpeedValue
);
295 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
297 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_FanSpeed_Set()", ADL_rc
);
303 int hm_ADL_Overdrive5_FanSpeedToDefault_Set (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
)
305 if (!adl
) return (-1);
307 int ADL_rc
= adl
->ADL_Overdrive5_FanSpeedToDefault_Set (iAdapterIndex
, iThermalControllerIndex
);
309 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
311 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeedToDefault_Set()", ADL_rc
);
317 int hm_ADL_Overdrive_ODParameters_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLODParameters
*lpOdParameters
)
319 if (!adl
) return (-1);
321 int ADL_rc
= adl
->ADL_Overdrive5_ODParameters_Get (iAdapterIndex
, lpOdParameters
);
323 if (ADL_rc
!= ADL_OK
)
325 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODParameters_Get()", ADL_rc
);
331 int hm_ADL_Overdrive_ODPerformanceLevels_Get (ADL_PTR
*adl
, int iAdapterIndex
, int iDefault
, ADLODPerformanceLevels
*lpOdPerformanceLevels
)
333 if (!adl
) return (-1);
335 int ADL_rc
= adl
->ADL_Overdrive5_ODPerformanceLevels_Get (iAdapterIndex
, iDefault
, lpOdPerformanceLevels
);
337 if (ADL_rc
!= ADL_OK
)
339 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODPerformanceLevels_Get()", ADL_rc
);
345 int hm_ADL_Overdrive_ODPerformanceLevels_Set (ADL_PTR
*adl
, int iAdapterIndex
, ADLODPerformanceLevels
*lpOdPerformanceLevels
)
347 if (!adl
) return (-1);
349 int ADL_rc
= adl
->ADL_Overdrive5_ODPerformanceLevels_Set (iAdapterIndex
, lpOdPerformanceLevels
);
351 if (ADL_rc
!= ADL_OK
)
353 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODPerformanceLevels_Set()", ADL_rc
);
359 int hm_ADL_Overdrive_PowerControlInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6PowerControlInfo
*powertune
)
361 if (!adl
) return (-1);
363 int ADL_rc
= adl
->ADL_Overdrive6_PowerControlInfo_Get (iAdapterIndex
, powertune
);
368 int hm_ADL_Overdrive_PowerControl_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *iCurrentValue
)
370 if (!adl
) return (-1);
372 int default_value
= 0;
374 int ADL_rc
= adl
->ADL_Overdrive6_PowerControl_Get (iAdapterIndex
, iCurrentValue
, &default_value
);
379 int hm_ADL_Overdrive_PowerControl_Set (ADL_PTR
*adl
, int iAdapterIndex
, int level
)
381 if (!adl
) return (-1);
383 int ADL_rc
= ADL_ERR
;
385 ADLOD6PowerControlInfo powertune
= {0, 0, 0, 0, 0};
387 if ((ADL_rc
= hm_ADL_Overdrive_PowerControlInfo_Get (adl
, iAdapterIndex
, &powertune
)) != ADL_OK
)
389 log_info ("WARN: %s\n", "ADL_Overdrive6_PowerControl_Get", ADL_rc
);
393 int min
= powertune
.iMinValue
;
394 int max
= powertune
.iMaxValue
;
395 int step
= powertune
.iStepValue
;
397 if (level
< min
|| level
> max
)
399 log_info ("WARN: ADL PowerControl level invalid");
403 if (level
% step
!= 0)
405 log_info ("WARN: ADL PowerControl step invalid");
410 ADL_rc
= adl
->ADL_Overdrive6_PowerControl_Set (iAdapterIndex
, level
);
416 int hm_ADL_Adapter_Active_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *lpStatus
)
418 if (!adl
) return (-1);
420 int ADL_rc
= adl
->ADL_Adapter_Active_Get (iAdapterIndex
, lpStatus
);
422 if (ADL_rc
!= ADL_OK
)
424 log_info ("WARN: %s: %d\n", "ADL_Adapter_Active_Get()", ADL_rc
);
431 int hm_ADL_DisplayEnable_Set (ADL_PTR *adl, int iAdapterIndex, int *lpDisplayIndexList, int iDisplayListSize, int bPersistOnly)
433 if (!adl) return (-1);
435 int ADL_rc = adl->ADL_DisplayEnable_Set (iAdapterIndex, lpDisplayIndexList, iDisplayListSize, bPersistOnly);
437 if (ADL_rc != ADL_OK)
439 log_info ("WARN: %s: %d\n", "ADL_DisplayEnable_Set()", ADL_rc);
446 int hm_ADL_Overdrive_Caps (ADL_PTR
*adl
, int iAdapterIndex
, int *od_supported
, int *od_enabled
, int *od_version
)
448 if (!adl
) return (-1);
450 int ADL_rc
= adl
->ADL_Overdrive_Caps (iAdapterIndex
, od_supported
, od_enabled
, od_version
);
455 int hm_ADL_Overdrive6_PowerControl_Caps (ADL_PTR
*adl
, int iAdapterIndex
, int *lpSupported
)
457 if (!adl
) return (-1);
459 int ADL_rc
= adl
->ADL_Overdrive6_PowerControl_Caps (iAdapterIndex
, lpSupported
);
464 int hm_ADL_Overdrive_Capabilities_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6Capabilities
*caps
)
466 if (!adl
) return (-1);
468 int ADL_rc
= adl
->ADL_Overdrive6_Capabilities_Get (iAdapterIndex
, caps
);
473 int hm_ADL_Overdrive_StateInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, int type
, ADLOD6MemClockState
*state
)
475 if (!adl
) return (-1);
477 int ADL_rc
= adl
->ADL_Overdrive6_StateInfo_Get (iAdapterIndex
, type
, state
);
479 if (ADL_rc
== ADL_OK
)
481 // check if clocks are okay with step sizes
482 // if not run a little hack: adjust the clocks to nearest clock size (clock down just a little bit)
484 ADLOD6Capabilities caps
;
486 if ((hm_ADL_Overdrive_Capabilities_Get (adl
, iAdapterIndex
, &caps
)) != ADL_OK
)
488 log_info ("ERROR: failed to get ADL device capabilities");
493 if (state
->state
.aLevels
[0].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
495 log_info ("WARN: ADL engine step size invalid for performance level 1");
496 state
->state
.aLevels
[0].iEngineClock
-= state
->state
.aLevels
[0].iEngineClock
% caps
.sEngineClockRange
.iStep
;
499 if (state
->state
.aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
501 log_info ("WARN: ADL engine step size invalid for performance level 2");
502 state
->state
.aLevels
[1].iEngineClock
-= state
->state
.aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
;
505 if (state
->state
.aLevels
[0].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
507 log_info ("WARN: ADL memory step size invalid for performance level 1");
508 state
->state
.aLevels
[0].iMemoryClock
-= state
->state
.aLevels
[0].iMemoryClock
% caps
.sMemoryClockRange
.iStep
;
511 if (state
->state
.aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
513 log_info ("WARN: ADL memory step size invalid for performance level 2");
514 state
->state
.aLevels
[1].iMemoryClock
-= state
->state
.aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
;
521 int hm_ADL_Overdrive_CurrentStatus_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6CurrentStatus
*status
)
523 if (!adl
) return (-1);
525 int ADL_rc
= adl
->ADL_Overdrive6_CurrentStatus_Get (iAdapterIndex
, status
);
530 int hm_ADL_Overdrive_State_Set (ADL_PTR
*adl
, int iAdapterIndex
, int type
, ADLOD6StateInfo
*state
)
532 if (!adl
) return (-1);
536 ADLOD6Capabilities caps
;
538 if ((hm_ADL_Overdrive_Capabilities_Get (adl
, iAdapterIndex
, &caps
)) != ADL_OK
)
540 log_info ("ERROR: failed to get ADL device capabilities");
545 if (state
->aLevels
[0].iEngineClock
< caps
.sEngineClockRange
.iMin
|| state
->aLevels
[1].iEngineClock
> caps
.sEngineClockRange
.iMax
)
547 log_info ("WARN: ADL engine clock outside valid range");
552 if (state
->aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
554 log_info ("WARN: ADL engine step size invalid");
559 if (state
->aLevels
[0].iMemoryClock
< caps
.sMemoryClockRange
.iMin
|| state
->aLevels
[1].iMemoryClock
> caps
.sMemoryClockRange
.iMax
)
561 log_info ("WARN: ADL memory clock outside valid range");
566 if (state
->aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
568 log_info ("WARN: ADL memory step size invalid");
573 int ADL_rc
= adl
->ADL_Overdrive6_State_Set (iAdapterIndex
, type
, state
);
578 int hm_ADL_Overdrive6_TargetTemperatureData_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *cur_temp
, int *default_temp
)
580 if (!adl
) return (-1);
582 int ADL_rc
= adl
->ADL_Overdrive6_TargetTemperatureData_Get (iAdapterIndex
, cur_temp
, default_temp
);
587 int hm_ADL_Overdrive6_TargetTemperatureRangeInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6ParameterRange
*lpTargetTemperatureInfo
)
589 if (!adl
) return (-1);
591 int ADL_rc
= adl
->ADL_Overdrive6_TargetTemperatureRangeInfo_Get (iAdapterIndex
, lpTargetTemperatureInfo
);