From: Rex Zhu <rex....@amd.com>

Thermal controller interface.

Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>
Reviewed-by: Jammy Zhou <Jammy.Zhou at amd.com>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
---
 .../gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c  | 29 ++++++++++++++++++++++
 .../gpu/drm/amd/powerplay/inc/hardwaremanager.h    | 16 ++++++++++++
 drivers/gpu/drm/amd/powerplay/inc/power_state.h    |  4 +--
 3 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c 
b/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c
index 620119f..9d910f3 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hardwaremanager.c
@@ -194,3 +194,32 @@ int 
phm_notify_smc_display_config_after_ps_adjustment(struct pp_hwmgr *hwmgr)

     return 0;
 }
+
+int phm_stop_thermal_controller(struct pp_hwmgr *hwmgr)
+{
+       if (hwmgr == NULL || hwmgr->hwmgr_func->stop_thermal_controller == NULL)
+               return -EINVAL;
+
+       return hwmgr->hwmgr_func->stop_thermal_controller(hwmgr);
+}
+
+int phm_register_thermal_interrupt(struct pp_hwmgr *hwmgr, const void *info)
+{
+       if (hwmgr == NULL || 
hwmgr->hwmgr_func->register_internal_thermal_interrupt == NULL)
+               return -EINVAL;
+
+       return hwmgr->hwmgr_func->register_internal_thermal_interrupt(hwmgr, 
info);
+}
+
+/**
+* Initializes the thermal controller subsystem.
+*
+* @param    pHwMgr  the address of the powerplay hardware manager.
+* @param    pTemperatureRange the address of the structure holding the 
temperature range.
+* @exception PP_Result_Failed if any of the paramters is NULL, otherwise the 
return value from the dispatcher.
+*/
+int phm_start_thermal_controller(struct pp_hwmgr *hwmgr, struct 
PP_TemperatureRange *temperature_range)
+{
+
+       return phm_dispatch_table(hwmgr, &(hwmgr->start_thermal_controller), 
temperature_range, NULL);
+}
diff --git a/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h 
b/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
index 1d29760..a868110 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/hardwaremanager.h
@@ -29,6 +29,18 @@ struct pp_hwmgr;
 struct pp_hw_power_state;
 struct pp_power_state;
 enum amd_dpm_forced_level;
+struct PP_TemperatureRange;
+
+struct phm_fan_speed_info {
+       uint32_t min_percent;
+       uint32_t max_percent;
+       uint32_t min_rpm;
+       uint32_t max_rpm;
+       bool supports_percent_read;
+       bool supports_percent_write;
+       bool supports_rpm_read;
+       bool supports_rpm_write;
+};

 /* Automatic Power State Throttling */
 enum PHM_AutoThrottleSource
@@ -330,4 +342,8 @@ extern int phm_apply_state_adjust_rules(struct pp_hwmgr 
*hwmgr,
 extern int phm_force_dpm_levels(struct pp_hwmgr *hwmgr, enum 
amd_dpm_forced_level level);
 extern int phm_display_configuration_changed(struct pp_hwmgr *hwmgr);
 extern int phm_notify_smc_display_config_after_ps_adjustment(struct pp_hwmgr 
*hwmgr);
+extern int phm_register_thermal_interrupt(struct pp_hwmgr *hwmgr, const void 
*info);
+extern int phm_start_thermal_controller(struct pp_hwmgr *hwmgr, struct 
PP_TemperatureRange *temperature_range);
+extern int phm_stop_thermal_controller(struct pp_hwmgr *hwmgr);
 #endif /* _HARDWARE_MANAGER_H_ */
+
diff --git a/drivers/gpu/drm/amd/powerplay/inc/power_state.h 
b/drivers/gpu/drm/amd/powerplay/inc/power_state.h
index c63bcc7..a3f0ce4 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/power_state.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/power_state.h
@@ -122,8 +122,8 @@ struct PP_StateSoftwareAlgorithmBlock {
  * Type to hold a temperature range.
  */
 struct PP_TemperatureRange {
-       uint16_t min;
-       uint16_t max;
+       uint32_t min;
+       uint32_t max;
 };

 struct PP_StateValidationBlock {
-- 
1.8.3.1

Reply via email to