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: 10358395 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 71D7960225 for ; Tue, 24 Apr 2018 00:20:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6102328C9B for ; Tue, 24 Apr 2018 00:20:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 560A828CA3; Tue, 24 Apr 2018 00:20:38 +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 D461028C9B for ; Tue, 24 Apr 2018 00:20:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932697AbeDXAUY (ORCPT ); Mon, 23 Apr 2018 20:20:24 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:44516 "EHLO mail-pf0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932659AbeDXAUV (ORCPT ); Mon, 23 Apr 2018 20:20:21 -0400 Received: by mail-pf0-f193.google.com with SMTP id p15so10681735pff.11 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=TLoJ6TeyzObCWj26fE2sPTtMXgRapGqkQM00el46NBVVINLuVrm+lprknmxY8WRPcC yG/DPKGgFDWS6AAjehc6Grrjafcjnv1NqU4hrOgS81TzHb3eacpj1ebX1+hkhlSzVYLN TGbsaemw1FCHax8FFTbfozRinNZS3w74bCdO28Gc+LAMoTf2dh9G5uFA0mn7Lk4B3kby wm84pxELu/KNcwsbHlJ+GlFeTaqPLGmRUZ6sY2IqCHLSj1+nhqnBRES0x06ktVlOoIui teExiSzGhmAbljtg4tezRVsT3O47Dy6pnelkp9Q8p3/uxDLCPlXxRIqrLoFsEIPV7JYq X+Kw== X-Gm-Message-State: ALQs6tAdHHI6JDyTF8jHXCH0/hL4DDtExBGkh0faHGbx1dBdbIQqsJhf 5lxV8cMABcQbbYLphUAjWeMEbA== 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-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@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]; } /**