From 3e6ae89297253aee219029868e4a843ba917de67 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Sun, 29 May 2016 15:34:28 +0200 Subject: [PATCH] Add ADL_Overdrive6_TargetTemperatureData_Get() which for some reason does not work --- include/ext_ADL.h | 3 +++ src/ext_ADL.c | 10 ++++++++++ src/shared.c | 20 ++++++++++++++++++++ 3 files changed, 33 insertions(+) diff --git a/include/ext_ADL.h b/include/ext_ADL.h index ebf253c..a87faaa 100644 --- a/include/ext_ADL.h +++ b/include/ext_ADL.h @@ -312,6 +312,7 @@ typedef int (*ADL_OVERDRIVE6_CAPABILITIES_GET) (int, ADLOD6Capabilities *); typedef int (*ADL_OVERDRIVE6_STATE_SET) (int, int, ADLOD6StateInfo *); typedef int (*ADL_OVERDRIVE6_POWERCONTROL_CAPS) (int, int *); typedef int (*ADL_OVERDRIVE6_TARGETTEMPERATUREDATA_GET) (int, int *, int *); +typedef int (*ADL_OVERDRIVE6_TARGETTEMPERATURERANGEINFO_GET) (int, ADLOD6ParameterRange *); typedef struct { @@ -349,6 +350,7 @@ typedef struct ADL_OVERDRIVE6_CURRENTSTATUS_GET ADL_Overdrive6_CurrentStatus_Get; ADL_OVERDRIVE6_STATE_SET ADL_Overdrive6_State_Set; ADL_OVERDRIVE6_TARGETTEMPERATUREDATA_GET ADL_Overdrive6_TargetTemperatureData_Get; + ADL_OVERDRIVE6_TARGETTEMPERATURERANGEINFO_GET ADL_Overdrive6_TargetTemperatureRangeInfo_Get; } hm_adl_lib_t; @@ -389,6 +391,7 @@ int hm_ADL_Overdrive_Capabilities_Get (ADL_PTR *adl, int iAdapterIndex, ADLOD6Ca int hm_ADL_Overdrive_State_Set (ADL_PTR *adl, int iAdapterIndex, int type, ADLOD6StateInfo *state); int hm_ADL_Overdrive6_PowerControl_Caps (ADL_PTR *adl, int iAdapterIndex, int *lpSupported); int hm_ADL_Overdrive6_TargetTemperatureData_Get (ADL_PTR *adl, int iAdapterIndex, int *cur_temp, int *default_temp); +int hm_ADL_Overdrive6_TargetTemperatureRangeInfo_Get (ADL_PTR *adl, int iAdapterIndex, ADLOD6ParameterRange *lpTargetTemperatureInfo); #endif // HAVE_HWMON && HAVE_ADL diff --git a/src/ext_ADL.c b/src/ext_ADL.c index 9d27634..e6e167f 100644 --- a/src/ext_ADL.c +++ b/src/ext_ADL.c @@ -60,6 +60,7 @@ int adl_init (ADL_PTR *adl) HC_LOAD_FUNC(adl, ADL_Overdrive6_CurrentStatus_Get, ADL_OVERDRIVE6_CURRENTSTATUS_GET, ADL, 0) HC_LOAD_FUNC(adl, ADL_Overdrive6_State_Set, ADL_OVERDRIVE6_STATE_SET, ADL, 0) HC_LOAD_FUNC(adl, ADL_Overdrive6_TargetTemperatureData_Get, ADL_OVERDRIVE6_TARGETTEMPERATUREDATA_GET, ADL, 0) + HC_LOAD_FUNC(adl, ADL_Overdrive6_TargetTemperatureRangeInfo_Get, ADL_OVERDRIVE6_TARGETTEMPERATURERANGEINFO_GET, ADL, 0) return 0; } @@ -582,3 +583,12 @@ int hm_ADL_Overdrive6_TargetTemperatureData_Get (ADL_PTR *adl, int iAdapterIndex return (ADL_rc); } + +int hm_ADL_Overdrive6_TargetTemperatureRangeInfo_Get (ADL_PTR *adl, int iAdapterIndex, ADLOD6ParameterRange *lpTargetTemperatureInfo) +{ + if (!adl) return (-1); + + int ADL_rc = adl->ADL_Overdrive6_TargetTemperatureRangeInfo_Get (iAdapterIndex, lpTargetTemperatureInfo); + + return (ADL_rc); +} diff --git a/src/shared.c b/src/shared.c index 0396e93..e50db80 100644 --- a/src/shared.c +++ b/src/shared.c @@ -3062,7 +3062,27 @@ int hm_get_threshold_slowdown_with_device_id (const uint device_id) if ((data.devices_param[device_id].device_type & CL_DEVICE_TYPE_GPU) == 0) return -1; #ifdef HAVE_ADL + if (data.devices_param[device_id].device_vendor_id == VENDOR_ID_AMD) + { + if (data.hm_amd) + { + if (data.hm_device[device_id].od_version == 5) + { + } + else if (data.hm_device[device_id].od_version == 6) + { + int CurrentValue = 0; + int DefaultValue = 0; + + if (hm_ADL_Overdrive6_TargetTemperatureData_Get (data.hm_amd, data.hm_device[device_id].adapter_index.amd, &CurrentValue, &DefaultValue) != ADL_OK) return -1; + + // the return value has never been tested since hm_ADL_Overdrive6_TargetTemperatureData_Get() never worked on any system. expect problems. + + return DefaultValue; + } + } + } #endif #if defined(HAVE_NVML) || defined(HAVE_NVAPI) -- 2.25.1