Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp887477ybb; Wed, 25 Mar 2020 11:29:53 -0700 (PDT) X-Google-Smtp-Source: ADFU+vt+yY71PT6olYOBQkxKpFSCxx+sxPpjcuyrgO5KOftfQY6j7ZBqelV1ZuE+UKGDMcz7o0sp X-Received: by 2002:a9d:5f7:: with SMTP id 110mr3094864otd.73.1585160993482; Wed, 25 Mar 2020 11:29:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585160993; cv=none; d=google.com; s=arc-20160816; b=btPSh/UWEv9zoKGlWz/2mJmG3av4sw/qFc4zaPYaUEuvVYlJeVw8FuY3FaDYIPrXxV 1w5A1uTKXWHlASnk6/86QGUyMpzVMzjS18ZM6TNkjxS6XMHSSWKjsQqiz2/bpo/c7dU3 GjdopR3FMzka0ar1Gj9ag2kj3GV0kM7DkMB2sHdre7XV2Qir1dvysG9AvbJiD8+EmDSU r3wxQfshach3xklQjX8WYKQ2X54JnaPJ7CuelYCBIWatE9vI5XvqTgHTK/RFcsFUMw3H vKWh48Rc3NMDG90Rq5jhbbKsX9+fMhR/wJv5HtuvxIKJyARwr4/aIwxcF/jJ7Bz3Edve tjeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from; bh=zUSfgVwxYzSYTAGCYHL+uOD1F1TCFVVCg8fHTlwv6z0=; b=YWLGfpc0m0JNN5ZHWE20903jaB4xQp7rJxlkGDpTsxCrkJaCz19YUc98T0r5CQlagm CJiOkeOH31yWqUWUrKJd6CrKQHjVBaeVsYHRtt21gC1U2/2+jQC7f6V5+/Gq0vboNDEp Rg5zjlxAEnY0wiXKT0RamdHC5QOej4QPw3YislLKrSGhe60zZcemq/wlnzBK2eW8wUX0 rp1B6EYHYxIyEPDXEAQUsDnx0PpKfxf0EcQrEeP0IjzBxqxZy7PESibKsBOIXnuO30d4 i/xukN7T6dB2PJPdOgG3MCg+ASp5LYjSKhP9j/DjuTCRFZ6B6KYbkJPDit/bPPV2T1oo x7EA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a9si1129386otr.186.2020.03.25.11.29.38; Wed, 25 Mar 2020 11:29:53 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727742AbgCYS3U (ORCPT + 99 others); Wed, 25 Mar 2020 14:29:20 -0400 Received: from alexa-out-sd-02.qualcomm.com ([199.106.114.39]:50676 "EHLO alexa-out-sd-02.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727129AbgCYS3T (ORCPT ); Wed, 25 Mar 2020 14:29:19 -0400 Received: from unknown (HELO ironmsg03-sd.qualcomm.com) ([10.53.140.143]) by alexa-out-sd-02.qualcomm.com with ESMTP; 25 Mar 2020 11:29:18 -0700 Received: from asutoshd-linux1.qualcomm.com ([10.46.160.39]) by ironmsg03-sd.qualcomm.com with ESMTP; 25 Mar 2020 11:29:17 -0700 Received: by asutoshd-linux1.qualcomm.com (Postfix, from userid 92687) id B50AE208CE; Wed, 25 Mar 2020 11:29:17 -0700 (PDT) From: Asutosh Das To: Avri.Altman@wdc.com, cang@codeaurora.org, martin.petersen@oracle.com, linux-scsi@vger.kernel.org Cc: Asutosh Das , linux-arm-msm@vger.kernel.org, Alim Akhtar , Avri Altman , "James E.J. Bottomley" , Stanley Chu , Bean Huo , Bart Van Assche , Venkat Gopalakrishnan , Tomas Winkler , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 1/3] scsi: ufshcd: Update the set frequency to devfreq Date: Wed, 25 Mar 2020 11:29:00 -0700 Message-Id: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, the frequency that devfreq provides the driver to set always leads the clocks to be scaled up. Hence, round the clock-rate to the nearest frequency before deciding to scale. Also update the devfreq statistics of current frequency. Signed-off-by: Asutosh Das --- drivers/scsi/ufs/ufshcd.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 2a2a63b..7916c8b 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -1187,6 +1187,9 @@ static int ufshcd_devfreq_target(struct device *dev, if (!ufshcd_is_clkscaling_supported(hba)) return -EINVAL; + clki = list_first_entry(&hba->clk_list_head, struct ufs_clk_info, list); + /* Override with the closest supported frequency */ + *freq = (unsigned long) clk_round_rate(clki->clk, *freq); spin_lock_irqsave(hba->host->host_lock, irq_flags); if (ufshcd_eh_in_progress(hba)) { spin_unlock_irqrestore(hba->host->host_lock, irq_flags); @@ -1201,8 +1204,11 @@ static int ufshcd_devfreq_target(struct device *dev, goto out; } - clki = list_first_entry(&hba->clk_list_head, struct ufs_clk_info, list); + /* Decide based on the rounded-off frequency and update */ scale_up = (*freq == clki->max_freq) ? true : false; + if (!scale_up) + *freq = clki->min_freq; + /* Update the frequency */ if (!ufshcd_is_devfreq_scaling_required(hba, scale_up)) { spin_unlock_irqrestore(hba->host->host_lock, irq_flags); ret = 0; @@ -1250,6 +1256,8 @@ static int ufshcd_devfreq_get_dev_status(struct device *dev, struct ufs_hba *hba = dev_get_drvdata(dev); struct ufs_clk_scaling *scaling = &hba->clk_scaling; unsigned long flags; + struct list_head *clk_list = &hba->clk_list_head; + struct ufs_clk_info *clki; if (!ufshcd_is_clkscaling_supported(hba)) return -EINVAL; @@ -1260,6 +1268,13 @@ static int ufshcd_devfreq_get_dev_status(struct device *dev, if (!scaling->window_start_t) goto start_window; + clki = list_first_entry(clk_list, struct ufs_clk_info, list); + /* + * If current frequency is 0, then the ondemand governor considers + * there's no initial frequency set. And it always requests to set + * to max. frequency. + */ + stat->current_frequency = clki->curr_freq; if (scaling->is_busy_started) scaling->tot_busy_t += ktime_to_us(ktime_sub(ktime_get(), scaling->busy_start_t)); -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.