Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3405457pxf; Mon, 22 Mar 2021 05:50:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyFIhImHM3LJfZKJ3kwg71NTN/J/teoqpdRkVeBsIei3xDeNtEwpFrzVfmi0/lLKDKqt5os X-Received: by 2002:a17:906:af91:: with SMTP id mj17mr18639257ejb.230.1616417427457; Mon, 22 Mar 2021 05:50:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616417427; cv=none; d=google.com; s=arc-20160816; b=w/wJC60GuOoQWPvbCygjCaZZ0TpP/Ft2ZNOEaD0NBR2umRaL8iGdv3OOnWKlsB6Cdx HxRJXm3oMnXLEPDWDTAsYM7iDs58/pxAQ1rerwqszDj8sDEVf3hEajvf6w0Wh4JpeVZS RkKXP8Kx36OAxpwrsFK44bxfnVJxy1TFA9J4JrlcBefZe2jTqTLn/KKHgfhYQhmf3mL0 aAV0j7Hjhr57ClRaOU76qPnIm4O9s6kbIIMGLSe4h8nitnTVhFtiDlhcWGe5Daz2g14r ARlE0sNJm+yZqgqpll6Etgxt1DvqJpBW8ZKxJDpl4tEDj7MfS6n0O44K/jcdsRlGD1nw OlWw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=W8i0COZo1jv5yH7J+DsxUd+9619D9FHPYsVry6O3dGo=; b=FfboP1XIQay8GL1roARRAYRqT6E8UGHXO2teH1/afEz+qpx0WZo/yGuDH31NbwxhgK JTVf1xe9vH+UqIlxyNTOWA6G3TN1OIqqZdCrOJESsye0vT8LMGXIOnyRWCjpDVsE/SaO og5tfv/n1WdqndR/3rT1AKrhuIxQI6L2EA1ZyTTPbSELPS2j6+6XhGkbUqs9NQqpWVoN UBcZg6QImlRhXaCqEzCvek+3gB5xuUVBUUM6SCE9OjtRSUDBXv2WWj+BMFOcYgPbkE8q EEoyPi80CNtohRU3wFbNBNPXHDckhMMSLXsWbEa18jULLfcTX+drNHQsTCIH4fXo8B94 NSjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="eDRx/W9x"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b67si12712369edf.490.2021.03.22.05.50.05; Mon, 22 Mar 2021 05:50:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="eDRx/W9x"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231759AbhCVMsu (ORCPT + 99 others); Mon, 22 Mar 2021 08:48:50 -0400 Received: from mail.kernel.org ([198.145.29.99]:35346 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231214AbhCVMk3 (ORCPT ); Mon, 22 Mar 2021 08:40:29 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 62707619B5; Mon, 22 Mar 2021 12:39:01 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1616416741; bh=ooNAaCIzc/y87wVxj2ySWUESTteO8GdRRD6fcFWGHd8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eDRx/W9xePyVlGaJiVT0MPwo5RvnVJChncIq0jNGvERpy9jZoMeA5DHp4UTbj/VQY GngiH4/7fNgczBKkYiDejbxNRjkAaaL+M/1q4TDZZ7XiPc8+W9w7JKYU0TZ9xpKoYE bN3yfsB5PmAk85t6h0lseaVMyOBy5q8sCmYG3rEg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Evan Quan , Alex Deucher , Sasha Levin Subject: [PATCH 5.10 102/157] drm/amd/pm: fulfill the Polaris implementation for get_clock_by_type_with_latency() Date: Mon, 22 Mar 2021 13:27:39 +0100 Message-Id: <20210322121937.010230816@linuxfoundation.org> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20210322121933.746237845@linuxfoundation.org> References: <20210322121933.746237845@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Evan Quan [ Upstream commit 690cdc2635849db8b782dbbcabfb1c7519c84fa1 ] Fulfill Polaris get_clock_by_type_with_latency(). Signed-off-by: Evan Quan Acked-by: Alex Deucher Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- .../drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c index 35629140fc7a..c5223a9e0d89 100644 --- a/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c +++ b/drivers/gpu/drm/amd/pm/powerplay/hwmgr/smu7_hwmgr.c @@ -4771,6 +4771,72 @@ static int smu7_get_clock_by_type(struct pp_hwmgr *hwmgr, enum amd_pp_clock_type return 0; } +static int smu7_get_sclks_with_latency(struct pp_hwmgr *hwmgr, + struct pp_clock_levels_with_latency *clocks) +{ + struct phm_ppt_v1_information *table_info = + (struct phm_ppt_v1_information *)hwmgr->pptable; + struct phm_ppt_v1_clock_voltage_dependency_table *dep_sclk_table = + table_info->vdd_dep_on_sclk; + int i; + + clocks->num_levels = 0; + for (i = 0; i < dep_sclk_table->count; i++) { + if (dep_sclk_table->entries[i].clk) { + clocks->data[clocks->num_levels].clocks_in_khz = + dep_sclk_table->entries[i].clk * 10; + clocks->num_levels++; + } + } + + return 0; +} + +static int smu7_get_mclks_with_latency(struct pp_hwmgr *hwmgr, + struct pp_clock_levels_with_latency *clocks) +{ + struct phm_ppt_v1_information *table_info = + (struct phm_ppt_v1_information *)hwmgr->pptable; + struct phm_ppt_v1_clock_voltage_dependency_table *dep_mclk_table = + table_info->vdd_dep_on_mclk; + int i; + + clocks->num_levels = 0; + for (i = 0; i < dep_mclk_table->count; i++) { + if (dep_mclk_table->entries[i].clk) { + clocks->data[clocks->num_levels].clocks_in_khz = + dep_mclk_table->entries[i].clk * 10; + clocks->data[clocks->num_levels].latency_in_us = + smu7_get_mem_latency(hwmgr, dep_mclk_table->entries[i].clk); + clocks->num_levels++; + } + } + + return 0; +} + +static int smu7_get_clock_by_type_with_latency(struct pp_hwmgr *hwmgr, + enum amd_pp_clock_type type, + struct pp_clock_levels_with_latency *clocks) +{ + if (!(hwmgr->chip_id >= CHIP_POLARIS10 && + hwmgr->chip_id <= CHIP_VEGAM)) + return -EINVAL; + + switch (type) { + case amd_pp_sys_clock: + smu7_get_sclks_with_latency(hwmgr, clocks); + break; + case amd_pp_mem_clock: + smu7_get_mclks_with_latency(hwmgr, clocks); + break; + default: + return -EINVAL; + } + + return 0; +} + static int smu7_notify_cac_buffer_info(struct pp_hwmgr *hwmgr, uint32_t virtual_addr_low, uint32_t virtual_addr_hi, @@ -5188,6 +5254,7 @@ static const struct pp_hwmgr_func smu7_hwmgr_funcs = { .get_mclk_od = smu7_get_mclk_od, .set_mclk_od = smu7_set_mclk_od, .get_clock_by_type = smu7_get_clock_by_type, + .get_clock_by_type_with_latency = smu7_get_clock_by_type_with_latency, .read_sensor = smu7_read_sensor, .dynamic_state_management_disable = smu7_disable_dpm_tasks, .avfs_control = smu7_avfs_control, -- 2.30.1