From patchwork Tue Jun 13 19:54:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Boyd X-Patchwork-Id: 107522 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp798284vqr; Tue, 13 Jun 2023 13:11:35 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4MKLad41AWQgQu5pMLfyVcutedyGQPp0eABvF99AlgsuoAlovPnGsMNQ11ZYatx8+PVZJe X-Received: by 2002:a17:907:25ca:b0:971:55e2:82c3 with SMTP id ae10-20020a17090725ca00b0097155e282c3mr10865874ejc.20.1686687095365; Tue, 13 Jun 2023 13:11:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1686687095; cv=none; d=google.com; s=arc-20160816; b=0m+SWIJqOReTUFOZsu9cMZln3HR7vKZspPlJ1o3RHaUuzwFKhz6FsfIP08KbT1BD/Y GvBaxVLQjyIG4V7lkOpJuPxDRbxgGcNEBI8f1lu7PlJWDVCtRABLaVWEn9eWRRofJYWb uEPGpbytFVahOaUX9ggCnhVd3Hva+I40lY0SZlvncke1mrwqprx5nKZbzxQMXZhoTSi7 K6uPwu8o6N/nQg+ipMh9ekNlf6ElZ8mkhubW1r9Wau8dxGrBw92EIveGCTVG5lg3E2cc /XOpO60mVR2w7lY3YN2pIRBZcTij8GD5lPjP6FU2490rfCz/NOloiZE8T/qtdnxlIlsQ t1QQ== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=xvbDQ2+GwwiYdKL8ghJi7W0JA/DVyE4DjHj8Fj72HF0=; b=OVrVV8lOB7uloaOl04Z+JJ5UogTtiibn8SZcRmwFtG+rHDn1U6NGr00sIWUXCXnP99 5cEYqY8t2ikX+9KWkyhoP2ZPR9hqqy8e3PeCY1m1D/I6KVtZXQJYkpHnbSlP4EH24x6r HLXo6vww+SLP5akhDEXyhqJ8/BiIMajxF71pJaW99nn+fpD3leQMViYbuYFbYGGGIK/u HDpgNdFQKRZVawmyjTVKw6+NWBGEZc6bn4bjG7/BAvtI0jtCrbeWADOkeWKsnksmpuO2 5rlY5XoZEMmHAEvg2ZtqEEPLRLNh0D0RQBh9s2thABTUHMw6DKs4ndFZfyJ7yohIMlp9 CRCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="l5Rn/F83"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p17-20020a1709061b5100b00978b4529154si6935307ejg.818.2023.06.13.13.11.02; Tue, 13 Jun 2023 13:11:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="l5Rn/F83"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239102AbjFMTzO (ORCPT + 99 others); Tue, 13 Jun 2023 15:55:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48450 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229447AbjFMTyr (ORCPT ); Tue, 13 Jun 2023 15:54:47 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 44F50170E; Tue, 13 Jun 2023 12:54:45 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id CE82261800; Tue, 13 Jun 2023 19:54:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 070A1C433F0; Tue, 13 Jun 2023 19:54:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1686686084; bh=01Gy2b0SAp8++a2vjuQkj4/e/l8budPgWfPPBbejKNM=; h=From:To:Cc:Subject:Date:From; b=l5Rn/F83C70fysAwoHA+9nJdR8eCqM0WUQWwkLnPgY5m84IO+ApRXZdcpGi7JOzsL dEkZl60e5ywxRY2ZSTbNiEplcxNVlyZAmAk623GdTTwOShmUCxhUAFFP77h4Ie3iGo 1JoDZXPVhJIYNV7HoGiafU6vkZU1z8xtTnE+ZOk6BjwsyALCJCSNu2JA86mJlu9Ufa rIYa53660HdtMjHwvWGA2EHZlGDMkVmSFtt65wwxrBmwK5hqjvXSNbMDHULEiZz8RF /c7Np2W/RvaFuKeO8ULIzI48uwCrYN3Il/H8ipvp5SzTI6DlOuL+AEPZvEqtWclwKL 0CXEsvPNc8mkg== From: Stephen Boyd To: Michael Turquette , Stephen Boyd Cc: linux-kernel@vger.kernel.org, linux-clk@vger.kernel.org, patches@lists.linux.dev, Harshit Mogalapalli , Maxime Ripard Subject: [PATCH] clk: sprd: composite: Simplify determine_rate implementation Date: Tue, 13 Jun 2023 12:54:42 -0700 Message-ID: <20230613195443.1555132-1-sboyd@kernel.org> X-Mailer: git-send-email 2.41.0.162.gfafddb0af9-goog MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1768619607749539491?= X-GMAIL-MSGID: =?utf-8?q?1768619607749539491?= The sprd_div_helper_round_rate() function calls divider_round_rate() which calls divider_round_rate_parent() which calls divider_determine_rate(). This call chain converts back and forth from the rate request structure to make a determine_rate clk_op fit with a round_rate clk_op. Simplify the code here by directly calling divider_determine_rate() instead. This fixes a smatch warning where an unsigned long is compared to less than zero, which is impossible. This makes sprd_div_helper_round_rate() unnecessary as well so simply remove it and fold it into the only caller left. Reported-by: Harshit Mogalapalli Closes: https://lore.kernel.org/r/45fdc54e-7ab6-edd6-d55a-473485608473@oracle.com Cc: Maxime Ripard Fixes: 302d2f836d78 ("clk: sprd: composite: Switch to determine_rate") Signed-off-by: Stephen Boyd Reviewed-by: Maxime Ripard --- drivers/clk/sprd/composite.c | 9 +-------- drivers/clk/sprd/div.c | 14 ++------------ drivers/clk/sprd/div.h | 5 ----- 3 files changed, 3 insertions(+), 25 deletions(-) diff --git a/drivers/clk/sprd/composite.c b/drivers/clk/sprd/composite.c index d3a852720c07..ad6b6383e21f 100644 --- a/drivers/clk/sprd/composite.c +++ b/drivers/clk/sprd/composite.c @@ -13,15 +13,8 @@ static int sprd_comp_determine_rate(struct clk_hw *hw, struct clk_rate_request *req) { struct sprd_comp *cc = hw_to_sprd_comp(hw); - unsigned long rate; - rate = sprd_div_helper_round_rate(&cc->common, &cc->div, - req->rate, &req->best_parent_rate); - if (rate < 0) - return rate; - - req->rate = rate; - return 0; + return divider_determine_rate(hw, req, NULL, cc->div.width, 0); } static unsigned long sprd_comp_recalc_rate(struct clk_hw *hw, diff --git a/drivers/clk/sprd/div.c b/drivers/clk/sprd/div.c index 7621a1d1ab9c..c7261630cab4 100644 --- a/drivers/clk/sprd/div.c +++ b/drivers/clk/sprd/div.c @@ -9,23 +9,13 @@ #include "div.h" -long sprd_div_helper_round_rate(struct sprd_clk_common *common, - const struct sprd_div_internal *div, - unsigned long rate, - unsigned long *parent_rate) -{ - return divider_round_rate(&common->hw, rate, parent_rate, - NULL, div->width, 0); -} -EXPORT_SYMBOL_GPL(sprd_div_helper_round_rate); - static long sprd_div_round_rate(struct clk_hw *hw, unsigned long rate, unsigned long *parent_rate) { struct sprd_div *cd = hw_to_sprd_div(hw); - return sprd_div_helper_round_rate(&cd->common, &cd->div, - rate, parent_rate); + return divider_round_rate(&cd->common.hw, rate, parent_rate, NULL, + cd->div.width, 0); } unsigned long sprd_div_helper_recalc_rate(struct sprd_clk_common *common, diff --git a/drivers/clk/sprd/div.h b/drivers/clk/sprd/div.h index 6acfe6b179fc..f5d614b3dcf1 100644 --- a/drivers/clk/sprd/div.h +++ b/drivers/clk/sprd/div.h @@ -64,11 +64,6 @@ static inline struct sprd_div *hw_to_sprd_div(const struct clk_hw *hw) return container_of(common, struct sprd_div, common); } -long sprd_div_helper_round_rate(struct sprd_clk_common *common, - const struct sprd_div_internal *div, - unsigned long rate, - unsigned long *parent_rate); - unsigned long sprd_div_helper_recalc_rate(struct sprd_clk_common *common, const struct sprd_div_internal *div, unsigned long parent_rate);