From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.4 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 125A4C2BA19 for ; Thu, 9 Apr 2020 18:20:29 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D60E020CC7 for ; Thu, 9 Apr 2020 18:20:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="eiWw9hPG" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725970AbgDISU1 (ORCPT ); Thu, 9 Apr 2020 14:20:27 -0400 Received: from mail-pj1-f65.google.com ([209.85.216.65]:51058 "EHLO mail-pj1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726579AbgDISUZ (ORCPT ); Thu, 9 Apr 2020 14:20:25 -0400 Received: by mail-pj1-f65.google.com with SMTP id b7so1643082pju.0 for ; Thu, 09 Apr 2020 11:20:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=BeycGXQuoBVYG9ONaPHpfk62jXqpOs5+cJRriF7c/i8=; b=eiWw9hPGWIX/zUVRY9wkUwIv1FnbbBOrbahsPi5dTo5e/FwwwapcN5dyzIuiSgY9mp Ip1Ixj5snBlO6YG3cKudB8PLfCHgRRXnoRMswLYfbVE8jle0nx7NR5kBBGLjagEPSx9f koHAPmeN6wPc3hT3KTb+hLuL7RlUjRVgdH+Oo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=BeycGXQuoBVYG9ONaPHpfk62jXqpOs5+cJRriF7c/i8=; b=NJm25Vk3ZIVdOZUhA9E4q9Lf+Biqruymtns3B1cpJYj1dGnxKFgfQwdVfTfzt/rprR ozHE2+MqUBaMtTA6se1H4vxxrBJksmQD8UvJJI5V59HyIvePPJo2H/Tuag/opittgane Z6qfcCdyK7E7p1YxaS36xyExz8piP06pnlkT1jatUXt7sSWaF48dKLEjC1wYqmBD6CVU qtrlcv7n1exojMVeQz2g2eOS7teeMemjAK4xVhuchPTuF2+ajzfeA22/CmRwSeI4pXSs Q5jZ3toD24p4Wg5Sa3dnNQ1xps4hzZMLIVY7nDcWYBczfssg70XFKHPnZjJkkYGJa3o5 ZzCw== X-Gm-Message-State: AGi0Pub6Sx71zeIewI3kSQbfaXbv5Iz/9wvW/7JMlo6TNbdG9vd+fjze 2D6vNPEsjEyXFExLjPHEkigsVw== X-Google-Smtp-Source: APiQypLNbNT42VEJbPyenbCADnqH7UTIDCwf3AhvZbUz4pn+NCvzf8moNTIgUtBVxtsTfY0oYZ7a9w== X-Received: by 2002:a17:90a:198b:: with SMTP id 11mr879240pji.23.1586456423630; Thu, 09 Apr 2020 11:20:23 -0700 (PDT) Received: from localhost ([2620:15c:202:1:4fff:7a6b:a335:8fde]) by smtp.gmail.com with ESMTPSA id h13sm6213736pfr.1.2020.04.09.11.20.22 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Apr 2020 11:20:22 -0700 (PDT) Date: Thu, 9 Apr 2020 11:20:21 -0700 From: Matthias Kaehlcke To: Rajendra Nayak Cc: viresh.kumar@linaro.org, sboyd@kernel.org, bjorn.andersson@linaro.org, agross@kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Alok Chauhan , Akash Asthana , linux-spi@vger.kernel.org Subject: Re: [PATCH 03/21] spi: spi-geni-qcom: Use OPP API to set clk/perf state Message-ID: <20200409182021.GT199755@google.com> References: <1586353607-32222-1-git-send-email-rnayak@codeaurora.org> <1586353607-32222-4-git-send-email-rnayak@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1586353607-32222-4-git-send-email-rnayak@codeaurora.org> User-Agent: Mutt/1.12.2 (2019-09-21) Sender: linux-arm-msm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Hi Rajendra, On Wed, Apr 08, 2020 at 07:16:29PM +0530, Rajendra Nayak wrote: > geni spi needs to express a perforamnce state requirement on CX > depending on the frequency of the clock rates. Use OPP table from > DT to register with OPP framework and use dev_pm_opp_set_rate() to > set the clk/perf state. > > Signed-off-by: Rajendra Nayak > Cc: Alok Chauhan > Cc: Akash Asthana > Cc: linux-spi@vger.kernel.org > --- > drivers/spi/spi-geni-qcom.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c > index c397242..ce387dc 100644 > --- a/drivers/spi/spi-geni-qcom.c > +++ b/drivers/spi/spi-geni-qcom.c > @@ -7,6 +7,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -95,7 +96,6 @@ static int get_spi_clk_cfg(unsigned int speed_hz, > { > unsigned long sclk_freq; > unsigned int actual_hz; > - struct geni_se *se = &mas->se; > int ret; > > ret = geni_se_clk_freq_match(&mas->se, > @@ -112,9 +112,9 @@ static int get_spi_clk_cfg(unsigned int speed_hz, > > dev_dbg(mas->dev, "req %u=>%u sclk %lu, idx %d, div %d\n", speed_hz, > actual_hz, sclk_freq, *clk_idx, *clk_div); > - ret = clk_set_rate(se->clk, sclk_freq); > + ret = dev_pm_opp_set_rate(mas->dev, sclk_freq); > if (ret) > - dev_err(mas->dev, "clk_set_rate failed %d\n", ret); > + dev_err(mas->dev, "dev_pm_opp_set_rate failed %d\n", ret); > return ret; > } > > @@ -553,6 +553,7 @@ static int spi_geni_probe(struct platform_device *pdev) > if (!spi) > return -ENOMEM; > > + > platform_set_drvdata(pdev, spi); > mas = spi_master_get_devdata(spi); > mas->irq = irq; > @@ -561,6 +562,8 @@ static int spi_geni_probe(struct platform_device *pdev) > mas->se.wrapper = dev_get_drvdata(dev->parent); > mas->se.base = base; > mas->se.clk = clk; > + mas->se.opp = dev_pm_opp_set_clkname(&pdev->dev, "se"); As commented on the serial patch, it seems an error check is needed and the OPP table saved in 'struct geni_se' is never used. > + dev_pm_opp_of_add_table(&pdev->dev); This function could also fail for multiple reasons, so the return value should be checked. >From patch "[01/21] opp: Manage empty OPP tables with clk handle" it seems ignoring errors is intended to be able to operate when no OPP table is specified. But even with that you want to return in case of certain errors, like an invalid OPP table, out of memory or -EPROBE_DEFER.