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)
67 void adl_close (ADL_PTR
*adl
)
72 hc_dlclose (adl
->lib
);
78 int hm_ADL_Main_Control_Destroy (ADL_PTR
*adl
)
80 if (!adl
) return (-1);
82 int ADL_rc
= adl
->ADL_Main_Control_Destroy ();
86 log_info ("WARN: %s: %d\n", "ADL_Main_Control_Destroy()", ADL_rc
);
92 int hm_ADL_Main_Control_Create (ADL_PTR
*adl
, ADL_MAIN_MALLOC_CALLBACK callback
, int iEnumConnectedAdapters
)
94 if (!adl
) return (-1);
96 int ADL_rc
= adl
->ADL_Main_Control_Create (callback
, iEnumConnectedAdapters
);
100 log_info ("WARN: %s: %d\n", "ADL_Main_Control_Create()", ADL_rc
);
106 int hm_ADL_Adapter_NumberOfAdapters_Get (ADL_PTR
*adl
, int *lpNumAdapters
)
108 if (!adl
) return (-1);
110 int ADL_rc
= adl
->ADL_Adapter_NumberOfAdapters_Get (lpNumAdapters
);
112 if (ADL_rc
!= ADL_OK
)
114 log_info ("WARN: %s: %d\n", "ADL_Adapter_NumberOfAdapters_Get()", ADL_rc
);
120 int hm_ADL_Adapter_AdapterInfo_Get (ADL_PTR
*adl
, LPAdapterInfo lpInfo
, int iInputSize
)
122 if (!adl
) return (-1);
124 int ADL_rc
= adl
->ADL_Adapter_AdapterInfo_Get (lpInfo
, iInputSize
);
126 if (ADL_rc
!= ADL_OK
)
128 log_info ("WARN: %s: %d\n", "ADL_Adapter_AdapterInfo_Get()", ADL_rc
);
134 int hm_ADL_Display_DisplayInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *iNumDisplays
, ADLDisplayInfo
**lppInfo
, int iForceDetect
)
136 if (!adl
) return (-1);
138 int ADL_rc
= adl
->ADL_Display_DisplayInfo_Get (iAdapterIndex
, iNumDisplays
, lppInfo
, iForceDetect
);
140 if (ADL_rc
!= ADL_OK
)
142 log_info ("WARN: %s: %d\n", "ADL_Display_DisplayInfo_Get()", ADL_rc
);
148 int hm_ADL_Adapter_ID_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *lpAdapterID
)
150 if (!adl
) return (-1);
152 int ADL_rc
= adl
->ADL_Adapter_ID_Get (iAdapterIndex
, lpAdapterID
);
154 if (ADL_rc
!= ADL_OK
)
156 log_info ("WARN: %s: %d\n", "ADL_Adapter_ID_Get()", ADL_rc
);
162 int hm_ADL_Adapter_VideoBiosInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLBiosInfo
*lpBiosInfo
)
164 if (!adl
) return (-1);
166 int ADL_rc
= adl
->ADL_Adapter_VideoBiosInfo_Get (iAdapterIndex
, lpBiosInfo
);
168 if (ADL_rc
!= ADL_OK
)
170 log_info ("WARN: %s: %d\n", "ADL_Adapter_VideoBiosInfo_Get()", ADL_rc
);
176 int hm_ADL_Overdrive_ThermalDevices_Enum (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLThermalControllerInfo
*lpThermalControllerInfo
)
178 if (!adl
) return (-1);
180 int ADL_rc
= adl
->ADL_Overdrive5_ThermalDevices_Enum (iAdapterIndex
, iThermalControllerIndex
, lpThermalControllerInfo
);
182 if (ADL_rc
!= ADL_OK
)
184 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ThermalDevices_Enum()", ADL_rc
);
190 int hm_ADL_Overdrive5_Temperature_Get (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLTemperature
*lpTemperature
)
192 if (!adl
) return (-1);
194 int ADL_rc
= adl
->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 hm_ADL_Overdrive6_Temperature_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *iTemperature
)
206 if (!adl
) return (-1);
208 int ADL_rc
= adl
->ADL_Overdrive6_Temperature_Get (iAdapterIndex
, iTemperature
);
210 if (ADL_rc
!= ADL_OK
)
212 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_Temperature_Get()", ADL_rc
);
218 int hm_ADL_Overdrive_CurrentActivity_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLPMActivity
*lpActivity
)
220 if (!adl
) return (-1);
222 int ADL_rc
= adl
->ADL_Overdrive5_CurrentActivity_Get (iAdapterIndex
, lpActivity
);
224 if (ADL_rc
!= ADL_OK
)
226 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_CurrentActivity_Get()", ADL_rc
);
232 int hm_ADL_Overdrive5_FanSpeedInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedInfo
*lpFanSpeedInfo
)
234 if (!adl
) return (-1);
236 int ADL_rc
= adl
->ADL_Overdrive5_FanSpeedInfo_Get (iAdapterIndex
, iThermalControllerIndex
, lpFanSpeedInfo
);
238 if (ADL_rc
!= ADL_OK
)
240 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeedInfo_Get()", ADL_rc
);
246 int hm_ADL_Overdrive5_FanSpeed_Get (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedValue
*lpFanSpeedValue
)
248 if (!adl
) return (-1);
250 int ADL_rc
= adl
->ADL_Overdrive5_FanSpeed_Get (iAdapterIndex
, iThermalControllerIndex
, lpFanSpeedValue
);
252 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
254 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeed_Get()", ADL_rc
);
260 int hm_ADL_Overdrive6_FanSpeed_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6FanSpeedInfo
*lpFanSpeedInfo
)
262 if (!adl
) return (-1);
264 int ADL_rc
= adl
->ADL_Overdrive6_FanSpeed_Get (iAdapterIndex
, lpFanSpeedInfo
);
266 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
268 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_FanSpeed_Get()", ADL_rc
);
274 int hm_ADL_Overdrive5_FanSpeed_Set (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
, ADLFanSpeedValue
*lpFanSpeedValue
)
276 if (!adl
) return (-1);
278 int ADL_rc
= adl
->ADL_Overdrive5_FanSpeed_Set (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_Set()", ADL_rc
);
288 int hm_ADL_Overdrive6_FanSpeed_Set (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6FanSpeedValue
*lpFanSpeedValue
)
290 if (!adl
) return (-1);
292 int ADL_rc
= adl
->ADL_Overdrive6_FanSpeed_Set (iAdapterIndex
, lpFanSpeedValue
);
294 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
296 log_info ("WARN: %s: %d\n", "ADL_Overdrive6_FanSpeed_Set()", ADL_rc
);
302 int hm_ADL_Overdrive5_FanSpeedToDefault_Set (ADL_PTR
*adl
, int iAdapterIndex
, int iThermalControllerIndex
)
304 if (!adl
) return (-1);
306 int ADL_rc
= adl
->ADL_Overdrive5_FanSpeedToDefault_Set (iAdapterIndex
, iThermalControllerIndex
);
308 if ((ADL_rc
!= ADL_OK
) && (ADL_rc
!= ADL_ERR_NOT_SUPPORTED
)) // exception allowed only here
310 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_FanSpeedToDefault_Set()", ADL_rc
);
316 int hm_ADL_Overdrive_ODParameters_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLODParameters
*lpOdParameters
)
318 if (!adl
) return (-1);
320 int ADL_rc
= adl
->ADL_Overdrive5_ODParameters_Get (iAdapterIndex
, lpOdParameters
);
322 if (ADL_rc
!= ADL_OK
)
324 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODParameters_Get()", ADL_rc
);
330 int hm_ADL_Overdrive_ODPerformanceLevels_Get (ADL_PTR
*adl
, int iAdapterIndex
, int iDefault
, ADLODPerformanceLevels
*lpOdPerformanceLevels
)
332 if (!adl
) return (-1);
334 int ADL_rc
= adl
->ADL_Overdrive5_ODPerformanceLevels_Get (iAdapterIndex
, iDefault
, lpOdPerformanceLevels
);
336 if (ADL_rc
!= ADL_OK
)
338 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODPerformanceLevels_Get()", ADL_rc
);
344 int hm_ADL_Overdrive_ODPerformanceLevels_Set (ADL_PTR
*adl
, int iAdapterIndex
, ADLODPerformanceLevels
*lpOdPerformanceLevels
)
346 if (!adl
) return (-1);
348 int ADL_rc
= adl
->ADL_Overdrive5_ODPerformanceLevels_Set (iAdapterIndex
, lpOdPerformanceLevels
);
350 if (ADL_rc
!= ADL_OK
)
352 log_info ("WARN: %s: %d\n", "ADL_Overdrive5_ODPerformanceLevels_Set()", ADL_rc
);
358 int hm_ADL_Overdrive_PowerControlInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6PowerControlInfo
*powertune
)
360 if (!adl
) return (-1);
362 int ADL_rc
= adl
->ADL_Overdrive6_PowerControlInfo_Get (iAdapterIndex
, powertune
);
367 int hm_ADL_Overdrive_PowerControl_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *iCurrentValue
)
369 if (!adl
) return (-1);
371 int default_value
= 0;
373 int ADL_rc
= adl
->ADL_Overdrive6_PowerControl_Get (iAdapterIndex
, iCurrentValue
, &default_value
);
378 int hm_ADL_Overdrive_PowerControl_Set (ADL_PTR
*adl
, int iAdapterIndex
, int level
)
380 if (!adl
) return (-1);
382 int ADL_rc
= ADL_ERR
;
384 ADLOD6PowerControlInfo powertune
= {0, 0, 0, 0, 0};
386 if ((ADL_rc
= hm_ADL_Overdrive_PowerControlInfo_Get (adl
, iAdapterIndex
, &powertune
)) != ADL_OK
)
388 log_info ("WARN: %s\n", "ADL_Overdrive6_PowerControl_Get", ADL_rc
);
392 int min
= powertune
.iMinValue
;
393 int max
= powertune
.iMaxValue
;
394 int step
= powertune
.iStepValue
;
396 if (level
< min
|| level
> max
)
398 log_info ("WARN: ADL PowerControl level invalid");
402 if (level
% step
!= 0)
404 log_info ("WARN: ADL PowerControl step invalid");
409 ADL_rc
= adl
->ADL_Overdrive6_PowerControl_Set (iAdapterIndex
, level
);
415 int hm_ADL_Adapter_Active_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *lpStatus
)
417 if (!adl
) return (-1);
419 int ADL_rc
= adl
->ADL_Adapter_Active_Get (iAdapterIndex
, lpStatus
);
421 if (ADL_rc
!= ADL_OK
)
423 log_info ("WARN: %s: %d\n", "ADL_Adapter_Active_Get()", ADL_rc
);
430 int hm_ADL_DisplayEnable_Set (ADL_PTR *adl, int iAdapterIndex, int *lpDisplayIndexList, int iDisplayListSize, int bPersistOnly)
432 if (!adl) return (-1);
434 int ADL_rc = adl->ADL_DisplayEnable_Set (iAdapterIndex, lpDisplayIndexList, iDisplayListSize, bPersistOnly);
436 if (ADL_rc != ADL_OK)
438 log_info ("WARN: %s: %d\n", "ADL_DisplayEnable_Set()", ADL_rc);
445 int hm_ADL_Overdrive_Caps (ADL_PTR
*adl
, int iAdapterIndex
, int *od_supported
, int *od_enabled
, int *od_version
)
447 if (!adl
) return (-1);
449 int ADL_rc
= adl
->ADL_Overdrive_Caps (iAdapterIndex
, od_supported
, od_enabled
, od_version
);
454 int hm_ADL_Overdrive6_PowerControl_Caps (ADL_PTR
*adl
, int iAdapterIndex
, int *lpSupported
)
456 if (!adl
) return (-1);
458 int ADL_rc
= adl
->ADL_Overdrive6_PowerControl_Caps (iAdapterIndex
, lpSupported
);
463 int hm_ADL_Overdrive_Capabilities_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6Capabilities
*caps
)
465 if (!adl
) return (-1);
467 int ADL_rc
= adl
->ADL_Overdrive6_Capabilities_Get (iAdapterIndex
, caps
);
472 int hm_ADL_Overdrive_StateInfo_Get (ADL_PTR
*adl
, int iAdapterIndex
, int type
, ADLOD6MemClockState
*state
)
474 if (!adl
) return (-1);
476 int ADL_rc
= adl
->ADL_Overdrive6_StateInfo_Get (iAdapterIndex
, type
, state
);
478 if (ADL_rc
== ADL_OK
)
480 // check if clocks are okay with step sizes
481 // if not run a little hack: adjust the clocks to nearest clock size (clock down just a little bit)
483 ADLOD6Capabilities caps
;
485 if ((hm_ADL_Overdrive_Capabilities_Get (adl
, iAdapterIndex
, &caps
)) != ADL_OK
)
487 log_info ("ERROR: failed to get ADL device capabilities");
492 if (state
->state
.aLevels
[0].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
494 log_info ("WARN: ADL engine step size invalid for performance level 1");
495 state
->state
.aLevels
[0].iEngineClock
-= state
->state
.aLevels
[0].iEngineClock
% caps
.sEngineClockRange
.iStep
;
498 if (state
->state
.aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
500 log_info ("WARN: ADL engine step size invalid for performance level 2");
501 state
->state
.aLevels
[1].iEngineClock
-= state
->state
.aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
;
504 if (state
->state
.aLevels
[0].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
506 log_info ("WARN: ADL memory step size invalid for performance level 1");
507 state
->state
.aLevels
[0].iMemoryClock
-= state
->state
.aLevels
[0].iMemoryClock
% caps
.sMemoryClockRange
.iStep
;
510 if (state
->state
.aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
512 log_info ("WARN: ADL memory step size invalid for performance level 2");
513 state
->state
.aLevels
[1].iMemoryClock
-= state
->state
.aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
;
520 int hm_ADL_Overdrive_CurrentStatus_Get (ADL_PTR
*adl
, int iAdapterIndex
, ADLOD6CurrentStatus
*status
)
522 if (!adl
) return (-1);
524 int ADL_rc
= adl
->ADL_Overdrive6_CurrentStatus_Get (iAdapterIndex
, status
);
529 int hm_ADL_Overdrive_State_Set (ADL_PTR
*adl
, int iAdapterIndex
, int type
, ADLOD6StateInfo
*state
)
531 if (!adl
) return (-1);
535 ADLOD6Capabilities caps
;
537 if ((hm_ADL_Overdrive_Capabilities_Get (adl
, iAdapterIndex
, &caps
)) != ADL_OK
)
539 log_info ("ERROR: failed to get ADL device capabilities");
544 if (state
->aLevels
[0].iEngineClock
< caps
.sEngineClockRange
.iMin
|| state
->aLevels
[1].iEngineClock
> caps
.sEngineClockRange
.iMax
)
546 log_info ("WARN: ADL engine clock outside valid range");
551 if (state
->aLevels
[1].iEngineClock
% caps
.sEngineClockRange
.iStep
!= 0)
553 log_info ("WARN: ADL engine step size invalid");
558 if (state
->aLevels
[0].iMemoryClock
< caps
.sMemoryClockRange
.iMin
|| state
->aLevels
[1].iMemoryClock
> caps
.sMemoryClockRange
.iMax
)
560 log_info ("WARN: ADL memory clock outside valid range");
565 if (state
->aLevels
[1].iMemoryClock
% caps
.sMemoryClockRange
.iStep
!= 0)
567 log_info ("WARN: ADL memory step size invalid");
572 int ADL_rc
= adl
->ADL_Overdrive6_State_Set (iAdapterIndex
, type
, state
);
577 int hm_ADL_Overdrive6_TargetTemperatureData_Get (ADL_PTR
*adl
, int iAdapterIndex
, int *cur_temp
, int *default_temp
)
579 if (!adl
) return (-1);
581 int ADL_rc
= adl
->ADL_Overdrive6_TargetTemperatureData_Get (iAdapterIndex
, cur_temp
, default_temp
);