From patchwork Thu Nov 12 06:18:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alex Deucher X-Patchwork-Id: 7599821 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 4E9B1BF90C for ; Thu, 12 Nov 2015 06:20:19 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 66B6C207D4 for ; Thu, 12 Nov 2015 06:20:18 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 4C14E207DB for ; Thu, 12 Nov 2015 06:20:17 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E1F117A103; Wed, 11 Nov 2015 22:19:29 -0800 (PST) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-qg0-f42.google.com (mail-qg0-f42.google.com [209.85.192.42]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3DAA07A133 for ; Wed, 11 Nov 2015 22:19:23 -0800 (PST) Received: by qgea14 with SMTP id a14so40617760qge.0 for ; Wed, 11 Nov 2015 22:19:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7OUE+F3C88vdOFrcG6JAgNPBS1KnVfIi5yVO4Wb+Sdo=; b=rZoWOAN6rcln1nLnv9SHHFK7F1JGUDeNuNQLdFVKyLa2wz8UddEhFCncJBDEShmLpB LwMHIlnrWhbqmDrKoN/BywKGDsiJCmLRnrx6cxcllaxhiZ86AXlOF42Tkre6YFCi8bk3 F1EsBGpXz107qJPjXnXL/p7y+bPt+lFWMWkjIDu+/P64iqET4FLzaIUS281EjNL5G3Hw 2HPFpB3L+9nrHaYgj0rpJXX4AFlxlwHuvDUlSRTCXw2y/SA1TAdKang5dvrnQFMZUUYO KoblsoKLEVDCzMn8nZL1MC1zHGEcjzsXKvxIEoUMCXfu4hLuJg98Mfsl4Jmng/Sq6gfm 6Uvw== X-Received: by 10.140.22.234 with SMTP id 97mr14677589qgn.55.1447309162586; Wed, 11 Nov 2015 22:19:22 -0800 (PST) Received: from localhost.localdomain (static-74-96-105-49.washdc.fios.verizon.net. [74.96.105.49]) by smtp.gmail.com with ESMTPSA id 202sm3693748qhc.49.2015.11.11.22.19.22 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 11 Nov 2015 22:19:22 -0800 (PST) From: Alex Deucher X-Google-Original-From: Alex Deucher To: dri-devel@lists.freedesktop.org Subject: [PATCH 37/51] drm/amdgpu/powerplay: add new function point in hwmgr_funcs for thermal control Date: Thu, 12 Nov 2015 01:18:27 -0500 Message-Id: <1447309121-2480-38-git-send-email-alexander.deucher@amd.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1447309121-2480-1-git-send-email-alexander.deucher@amd.com> References: <1447309121-2480-1-git-send-email-alexander.deucher@amd.com> Cc: Rex Zhu X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Rex Zhu Add the interface for fan and thermal control. Signed-off-by: Rex Zhu Reviewed-by: Jammy Zhou Reviewed-by: Alex Deucher --- drivers/gpu/drm/amd/powerplay/inc/hwmgr.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h index f90a8b6..aedb1e4 100644 --- a/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h +++ b/drivers/gpu/drm/amd/powerplay/inc/hwmgr.h @@ -35,6 +35,7 @@ struct pp_hwmgr; struct pp_hw_power_state; struct pp_power_state; struct PP_VCEState; +struct phm_fan_speed_info; enum PP_Result { PP_Result_TableImmediateExit = 0x13, @@ -291,6 +292,21 @@ struct pp_hwmgr_func { int (*disable_clock_power_gating)(struct pp_hwmgr *hwmgr); int (*update_clock_gatings)(struct pp_hwmgr *hwmgr, const uint32_t *msg_id); + int (*set_max_fan_rpm_output)(struct pp_hwmgr *hwmgr, uint16_t us_max_fan_pwm); + int (*set_max_fan_pwm_output)(struct pp_hwmgr *hwmgr, uint16_t us_max_fan_pwm); + int (*get_temperature)(struct pp_hwmgr *hwmgr); + int (*stop_thermal_controller)(struct pp_hwmgr *hwmgr); + int (*get_fan_speed_info)(struct pp_hwmgr *hwmgr, struct phm_fan_speed_info *fan_speed_info); + int (*set_fan_control_mode)(struct pp_hwmgr *hwmgr, uint32_t mode); + int (*get_fan_control_mode)(struct pp_hwmgr *hwmgr); + int (*set_fan_speed_percent)(struct pp_hwmgr *hwmgr, uint32_t percent); + int (*get_fan_speed_percent)(struct pp_hwmgr *hwmgr, uint32_t *speed); + int (*set_fan_speed_rpm)(struct pp_hwmgr *hwmgr, uint32_t percent); + int (*get_fan_speed_rpm)(struct pp_hwmgr *hwmgr, uint32_t *speed); + int (*reset_fan_speed_to_default)(struct pp_hwmgr *hwmgr); + int (*uninitialize_thermal_controller)(struct pp_hwmgr *hwmgr); + int (*register_internal_thermal_interrupt)(struct pp_hwmgr *hwmgr, + const void *thermal_interrupt_info); }; struct pp_table_func { @@ -548,12 +564,17 @@ struct pp_hwmgr { struct phm_runtime_table_header set_power_state; struct phm_runtime_table_header enable_clock_power_gatings; struct phm_runtime_table_header display_configuration_changed; + struct phm_runtime_table_header start_thermal_controller; + struct phm_runtime_table_header set_temperature_range; const struct pp_hwmgr_func *hwmgr_func; const struct pp_table_func *pptable_func; struct pp_power_state *ps; enum pp_power_source power_source; uint32_t num_ps; struct pp_thermal_controller_info thermal_controller; + bool fan_ctrl_is_in_default_mode; + uint32_t fan_ctrl_default_mode; + uint32_t tmin; struct phm_microcode_version_info microcode_version_info; uint32_t ps_size; struct pp_power_state *current_ps; @@ -599,6 +620,7 @@ extern void phm_wait_for_indirect_register_unequal( bool phm_cf_want_uvd_power_gating(struct pp_hwmgr *hwmgr); bool phm_cf_want_vce_power_gating(struct pp_hwmgr *hwmgr); +bool phm_cf_want_microcode_fan_ctrl(struct pp_hwmgr *hwmgr); #define PHM_ENTIRE_REGISTER_MASK 0xFFFFFFFFU