From patchwork Tue Apr 24 00:20:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bjorn Andersson X-Patchwork-Id: 10358397 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E76486038F for ; Tue, 24 Apr 2018 00:20:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D6B0528C9B for ; Tue, 24 Apr 2018 00:20:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CB65628CA3; Tue, 24 Apr 2018 00:20:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 816CB28C9B for ; Tue, 24 Apr 2018 00:20:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932699AbeDXAUY (ORCPT ); Mon, 23 Apr 2018 20:20:24 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:37187 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932660AbeDXAUV (ORCPT ); Mon, 23 Apr 2018 20:20:21 -0400 Received: by mail-pf0-f195.google.com with SMTP id p6so10684744pfn.4 for ; Mon, 23 Apr 2018 17:20:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=oq/MiC8agxBZwYUIV0NGKzNJZJQo/yYIKvJRf6+gseI=; b=CzwC5R4QKaMWmSZX+q1tv5MRTSmSySzeaRDACVS+SJGXRA97V589CwlXb/93McvfK0 GtwXT3wZSkLd6pS6ozytjICxe4hBDTRzHWwANEIyz5pLIE93DKDtdErUxP2nDF/P79fq HL4NWW33y9C51d/wMxu0ANidzbk0vhF5XArqk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=oq/MiC8agxBZwYUIV0NGKzNJZJQo/yYIKvJRf6+gseI=; b=HBDOw8oxS2ztdlXubHrwGMolSOyznlsVhFyj8VU0CyjaHDioNXnLaHa1EVo/wSlFdw Aa5T/4+tymSFRnnGSJXKwIIXae0p3HrFjhyX/HpJDKd82TBWamGXndvYRmn20tb25HpX EEVPjb95Ww0Upzt12KzwzUMJN7O0CtCedgfsYSUh7emA1olGFPELYqhS7vYjAo3OuZ44 1HlKb9KCCozBXLBj2J4nbzcVwFxS8d7qLJPpGPBCi/CVJLU+drv0kDSDZoZ/z7CxrHIl H8Y4gWP+ZbNO1Zc7mb5W41USHYmgnYDdYhAnN4N/+RgcCLA/6JLCB0Q64iG8RsLrR2KC Xnjw== X-Gm-Message-State: ALQs6tBjO+bC5d0O0uPsrc8TWBiNMixIqC2fHTOGoiZXzrR51wMRCfoA S08vB3gOKc4YbMcJgG86fBfzbA== X-Google-Smtp-Source: AIpwx4/S0595Taj4H4GGp9ScJ+zDxgGWrB7djMmLijqJCKBKHQFspYD6td7jFGn9rW/GwT8nAsQEvA== X-Received: by 10.98.238.3 with SMTP id e3mr21753324pfi.232.1524529220991; Mon, 23 Apr 2018 17:20:20 -0700 (PDT) Received: from localhost.localdomain (104-188-17-28.lightspeed.sndgca.sbcglobal.net. [104.188.17.28]) by smtp.gmail.com with ESMTPSA id p6sm26669845pfk.104.2018.04.23.17.20.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Apr 2018 17:20:20 -0700 (PDT) From: Bjorn Andersson To: MyungJoo Ham , Kyungmin Park , Chanwoo Choi Cc: Vinayak Holikatti , "James E.J. Bottomley" , "Martin K. Petersen" , linux-scsi@vger.kernel.org, linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, Vivek Gautam Subject: [PATCH 1/3] PM / devfreq: Actually support providing freq_table Date: Mon, 23 Apr 2018 17:20:14 -0700 Message-Id: <20180424002016.9205-2-bjorn.andersson@linaro.org> X-Mailer: git-send-email 2.16.2 In-Reply-To: <20180424002016.9205-1-bjorn.andersson@linaro.org> References: <20180424002016.9205-1-bjorn.andersson@linaro.org> Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The code in devfreq_add_device() handles the case where a freq_table is passed by the client, but then requests min and max frequences from the, in this case absent, opp tables. Read the min and max frequencies from the frequency table, which has been built from the opp table if one exists, instead of querying the opp table. Signed-off-by: Bjorn Andersson --- An alternative approach is to clarify in the devfreq code that it's not possible to pass a freq_table and then in patch 3 create an opp table for the device in runtime; although the error handling of this becomes non-trivial. Transitioning the UFSHCD to use opp tables directly is hindered by the fact that the Qualcomm UFS hardware has two different clocks that needs to be running at different rates, so we would need a way to describe the two rates in the opp table. (And would force us to change the DT binding) drivers/devfreq/devfreq.c | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index fe2af6aa88fc..086ced50a13d 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -74,30 +74,16 @@ static struct devfreq *find_device_devfreq(struct device *dev) static unsigned long find_available_min_freq(struct devfreq *devfreq) { - struct dev_pm_opp *opp; - unsigned long min_freq = 0; - - opp = dev_pm_opp_find_freq_ceil(devfreq->dev.parent, &min_freq); - if (IS_ERR(opp)) - min_freq = 0; - else - dev_pm_opp_put(opp); + struct devfreq_dev_profile *profile = devfreq->profile; - return min_freq; + return profile->freq_table[0]; } static unsigned long find_available_max_freq(struct devfreq *devfreq) { - struct dev_pm_opp *opp; - unsigned long max_freq = ULONG_MAX; - - opp = dev_pm_opp_find_freq_floor(devfreq->dev.parent, &max_freq); - if (IS_ERR(opp)) - max_freq = 0; - else - dev_pm_opp_put(opp); + struct devfreq_dev_profile *profile = devfreq->profile; - return max_freq; + return profile->freq_table[profile->max_state - 1]; } /**