2 * Author......: Jens Steube <jens.steube@gmail.com>
9 #if defined(HAVE_HWMON) && defined(HAVE_ADL)
14 * Declarations from adl_sdk.h and subheaders
19 #define ADL_ERR_NOT_SUPPORTED -8
21 #define ADL_MAX_PATH 256
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
28 #define ADL_OD6_SETSTATE_PERFORMANCE 0x00000001
29 #define ADL_OD6_GETSTATEINFO_CUSTOM_PERFORMANCE 0x00000004
30 #define ADL_OD6_FANSPEED_TYPE_PERCENT 0x00000001
32 typedef struct AdapterInfo
36 char strUDID
[ADL_MAX_PATH
];
41 char strAdapterName
[ADL_MAX_PATH
];
42 char strDisplayName
[ADL_MAX_PATH
];
45 #if defined (_WIN32) || defined (_WIN64)
47 char strDriverPath
[ADL_MAX_PATH
];
48 char strDriverPathExt
[ADL_MAX_PATH
];
49 char strPNPString
[ADL_MAX_PATH
];
51 #endif /* (_WIN32) || (_WIN64) */
53 #if defined (__linux__)
56 char strXScreenConfigName
[ADL_MAX_PATH
];
57 #endif /* (__linux__) */
58 } AdapterInfo
, *LPAdapterInfo
;
60 typedef struct ADLThermalControllerInfo
66 } ADLThermalControllerInfo
;
68 typedef struct ADLTemperature
74 typedef struct ADLFanSpeedInfo
84 typedef struct ADLFanSpeedValue
92 typedef struct ADLDisplayID
94 int iDisplayLogicalIndex
;
95 int iDisplayPhysicalIndex
;
96 int iDisplayLogicalAdapterIndex
;
97 int iDisplayPhysicalAdapterIndex
;
98 } ADLDisplayID
, *LPADLDisplayID
;
100 typedef struct ADLDisplayInfo
102 ADLDisplayID displayID
;
103 int iDisplayControllerIndex
;
104 char strDisplayName
[ADL_MAX_PATH
];
105 char strDisplayManufacturerName
[ADL_MAX_PATH
];
107 int iDisplayOutputType
;
108 int iDisplayConnector
;
109 int iDisplayInfoMask
;
110 int iDisplayInfoValue
;
111 } ADLDisplayInfo
, *LPADLDisplayInfo
;
113 typedef struct ADLBiosInfo
115 char strPartNumber
[ADL_MAX_PATH
];
116 char strVersion
[ADL_MAX_PATH
];
117 char strDate
[ADL_MAX_PATH
];
118 } ADLBiosInfo
, *LPADLBiosInfo
;
120 typedef struct ADLPMActivity
126 int iActivityPercent
;
127 int iCurrentPerformanceLevel
;
128 int iCurrentBusSpeed
;
129 int iCurrentBusLanes
;
130 int iMaximumBusLanes
;
134 typedef struct ADLODParameterRange
139 } ADLODParameterRange
;
141 typedef struct ADLODParameters
144 int iNumberOfPerformanceLevels
;
145 int iActivityReportingSupported
;
146 int iDiscretePerformanceLevels
;
148 ADLODParameterRange sEngineClock
;
149 ADLODParameterRange sMemoryClock
;
150 ADLODParameterRange sVddc
;
153 typedef struct ADLODPerformanceLevel
158 } ADLODPerformanceLevel
;
160 typedef struct ADLODPerformanceLevels
164 ADLODPerformanceLevel aLevels
[1];
165 } ADLODPerformanceLevels
;
167 typedef struct ADLOD6FanSpeedInfo
170 int iFanSpeedPercent
;
174 } ADLOD6FanSpeedInfo
;
176 typedef struct ADLOD6FanSpeedValue
182 } ADLOD6FanSpeedValue
;
184 typedef struct ADLOD6CurrentStatus
188 int iActivityPercent
;
189 int iCurrentPerformanceLevel
;
190 int iCurrentBusSpeed
;
191 int iCurrentBusLanes
;
192 int iMaximumBusLanes
;
195 } ADLOD6CurrentStatus
;
197 typedef struct ADLOD6ParameterRange
202 } ADLOD6ParameterRange
;
204 typedef struct ADLOD6Capabilities
207 int iSupportedStates
;
208 int iNumberOfPerformanceLevels
;
209 ADLOD6ParameterRange sEngineClockRange
;
210 ADLOD6ParameterRange sMemoryClockRange
;
213 } ADLOD6Capabilities
;
215 typedef struct ADLOD6PerformanceLevel
219 } ADLOD6PerformanceLevel
;
221 typedef struct ADLOD6StateInfo
223 int iNumberOfPerformanceLevels
;
226 ADLOD6PerformanceLevel aLevels
[1];
229 typedef struct ADLOD6PowerControlInfo
236 } ADLOD6PowerControlInfo
;
238 #if !(defined (_WIN32) || defined (_WIN64))
242 typedef void* (__stdcall
*ADL_MAIN_MALLOC_CALLBACK
)( int );
245 * End of declarations from adl_sdk.h and subheaders
248 typedef int HM_ADAPTER_AMD
;
251 void *GetProcAddress (void *pLibrary
, const char *name
);
256 ADLOD6StateInfo state
;
257 ADLOD6PerformanceLevel level
;
259 } ADLOD6MemClockState
;
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 *);
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
);
327 #endif // HAVE_HWMON && HAVE_ADL