From patchwork Mon Jul 17 13:34:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121359 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1143794vqt; Mon, 17 Jul 2023 07:22:39 -0700 (PDT) X-Google-Smtp-Source: APBJJlFWVkF01xdPwi1j9OZVMJ0I8rc9/q8pLobBckOurNSbGz5UaTB7NtHqUvx1o90xIVki/1iZ X-Received: by 2002:a05:6a21:329a:b0:134:4de4:d5e6 with SMTP id yt26-20020a056a21329a00b001344de4d5e6mr7809331pzb.57.1689603758955; Mon, 17 Jul 2023 07:22:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689603758; cv=none; d=google.com; s=arc-20160816; b=f5TWxtbeCvedMHgLEcxsCx/IEfiPwJh919lpBoZzpTjrQRBemqQ9CRRT3wP2ROX/5y JUp28hBU2x99i5IHoXMEcRHytbg22SxI2n99zGne/5xeWbsZldf/YlBPSno1F6PuIkMq xFAk9pbKtb8Sz+91Xce8Wp/e2xlTI4bH7ITxzv9wwY1XByL6u1yqoaB40P+ti3HhgGrK fkuxa2uJdY/o594lo+cVT75UNHDDytAMPBQxfzQiU+OKXrFg+T7usrQGP12wsw0S7FOT kyF9PpCbUmNOS51c06NpXwkWGzRaT970hZX4J91u84CWuURk+nK7gRmexiFMlknaat5m 4DXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=Rv0VQb3dID9vli2KRI1IVx8tJ5Pn4HiXMxnfk/v2f54=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=rSOjAF2sPBScMH7Gfp0pzUQJ6VPvSJKtT7ofmJuXG2yzZGP/2mptbkHpTZBHjw82hH jHa54t8dpK6vFHl6ScKRXeUvqTDPmY1xqmsN9kD0abkcn8qbjVf0plYdm0qsD3sHB3XV xnktK67Jz5JCfU8XLX3/Yqan411eDjLicOMkTV2JiLas6b07yNi/XQ5pVnsCCXmjYsDF IvrzHLw8DfObQgXCrJanC8pVoYMDvueKTuA5brPKa0UhWx00iizbJSSYXcUBAD95z57z kY7PeaVRwXAwna1Sbcb+2dQuKf9LW2QjGbwTD2ev8t5Z/CepstDMS/cGHHHggoeIl9ku nkfA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=UdgMZcFQ; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g4-20020a056a000b8400b0067b77e7f472si11685444pfj.402.2023.07.17.07.22.26; Mon, 17 Jul 2023 07:22:38 -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=@oltmanns.dev header.s=MBO0001 header.b=UdgMZcFQ; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229537AbjGQNer (ORCPT + 99 others); Mon, 17 Jul 2023 09:34:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230150AbjGQNeq (ORCPT ); Mon, 17 Jul 2023 09:34:46 -0400 Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [80.241.56.151]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B229D1; Mon, 17 Jul 2023 06:34:45 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4R4NNd5Wr3z9sSZ; Mon, 17 Jul 2023 15:34:41 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600881; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Rv0VQb3dID9vli2KRI1IVx8tJ5Pn4HiXMxnfk/v2f54=; b=UdgMZcFQiZNijaJ818yBZITHgNgs7jk9u/yxUH2p4p6zjpy2lMPdZjGYvH9tuo3JL0PLyz AIwcmeJV8YtIavkbsDo/ckUIrUBBzd5udR1J11SCpqLUOJtik7xrFrTpRX9dwvBsnNSe3g IdpuM2ckCPnexhIs3KkTRs3AE5AL7jzwxZAGJrRNUZFD1U3PZ/0fl2LnrsotXLlOQad++p /chQPeBFUr53hjGSl/j9+rgn4B9G1e3x9ZCrICpVBAEnTmKwdSr+PO9u5Ugg89LkWA6eBE sinCM2G5EFfOG+kcq8mNPkQPLKdrv2SC8SFHUZRWS0oy5yuHekvB2S6f1YaRHw== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:25 +0200 Subject: [PATCH v4 01/11] clk: sunxi-ng: nkm: Use correct parameter name for parent HW MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-1-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=891; i=frank@oltmanns.dev; h=from:subject:message-id; bh=uK7iF9etz2opMttdEsAttxwMIOMUY7i/XdBlUa+elf0=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNmFQCKCWHtrI124RzW8kgbzVigb3cH+d6IZ XD6/S3ICBiJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDZgAKCRCaaaIIlErT x9QAC/9fRFd5dETwAqOSVpi+ipUDaYRB+lzuhAfAdqmX2FjcTnTuSiBAgk/WAkANzhgLAoMTfeO DxJmc/G4V6gSd+X9mDNjwbdNh1HCxHYXAkqz3RwwEYSRl7bH+29uQyEeNd+A7vLlRs64ODpR7ok xwn8O0HYE45jPYYh6jjcE9/rlujiqY1AbxvRfVprQoB6JHpzFwmQe1ukoeUDMXTUw2S9S1UEetr IsGGuPOetODJP6mqbtcdhU9xCmjqmiJsUWw58Wz/5QqZw6tpA2LQcHY9bsLOB4zGuGDgx4olfY2 pZ1vGNja0LpukouUr4c6/SIDd4r6wEAE0rktWi3lp4MyjlV0cEyOOVhiCgd+YfiX6z9bbppnYEg JMv4x1VVGQoBnOfOMYQ098WX9yaUrBxAydC7e151XRkQeHpcMhdMg4FXskfVfsLahVPSdc/Pgsq GTKa4K3rjMAe1Yor8IegTjJTS9pF2lL5pyHJVQSEYaROVqEh25+iWYDfbflmqJrUY26Xk= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771677950826369585 X-GMAIL-MSGID: 1771677950826369585 ccu_nkm_round_rate() takes a clk_hw as parameter "hw". Since "hw" is the nkm clock's parent clk_hw, not the clk_hw of the nkm clock itself, change the parameter name to "parent_hw" to make it more clear what we're dealing with. Signed-off-by: Frank Oltmanns Acked-by: Maxime Ripard --- drivers/clk/sunxi-ng/ccu_nkm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c index a0978a50edae..f267142e58b3 100644 --- a/drivers/clk/sunxi-ng/ccu_nkm.c +++ b/drivers/clk/sunxi-ng/ccu_nkm.c @@ -106,7 +106,7 @@ static unsigned long ccu_nkm_recalc_rate(struct clk_hw *hw, } static unsigned long ccu_nkm_round_rate(struct ccu_mux_internal *mux, - struct clk_hw *hw, + struct clk_hw *parent_hw, unsigned long *parent_rate, unsigned long rate, void *data) From patchwork Mon Jul 17 13:34:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121340 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1126942vqt; Mon, 17 Jul 2023 06:58:00 -0700 (PDT) X-Google-Smtp-Source: APBJJlECgXvMjCVSFXo8XizaHrAteFQ2PBfF9jm0xgg0nq0Yg39tQyyJMggyBEO4TerqQmjjQdhq X-Received: by 2002:a2e:8456:0:b0:2b6:df00:b371 with SMTP id u22-20020a2e8456000000b002b6df00b371mr11229052ljh.6.1689602280698; Mon, 17 Jul 2023 06:58:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689602280; cv=none; d=google.com; s=arc-20160816; b=I35H0ktpeSfcoi7m9ID6M+RQrLNofXRX0d3VupVJKK5QpLc4qD1FTQSYI2pA3LYCTR OxFrH1j4/JC1o+nVQPr/KPzh6Ld0k/WtHYB2D/YUN94FLM0st+YYY4IeApfLUY8m+fON oecgwJrvc2224VZYGWjGDmys1iQfsPMcTK7NznsoBOwwwjng1/gJ8PrN4agQSzhIm9Z3 i3g+JAq1q7IcGPU9YTF3SpJ5C60QPIBz2JMUznVC0Ume/YEbLVhnoBTzd0uGehPL5MLi Evd7R520pzADlcjhU+5hZq35LiJsAIyUPXQAPb9jDqQrRLOMdI7gltctqj5fG8yW/yQX CUtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=cPWCHbaMIzPJhoorxt9HLF+kv4sZYegCcJXZOrRKrWE=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=kqRUZOyAxSTLnmR+igNG1US4dBB+8m6e7kzHfpWX1a5LoOagEFRmUNswGuReHMHQUm qkRE16W0fWmLip1wodhBfgeZt3v1Vsp3ShooLkul63uqwvC4GTQvK0eWR7wPQSAy+O/R du9et/qfMRyiLOg3R1RVZPjces8Dpisi65xt1YPx54On8HV6NzoXloFtfZyZB0hSQzJD rQcS2jvBo+lBUHo7O6xcb9LyH5WTwlDe5QGnt2iKDvnjcT1meL85uXWRxL6vIFQnZept qBkAAWl5HUFlPmbfvXkXe+npBdWQ//6GI+iM0v2Sd0PvKomLL7+aT3ngiqqTsSG2ux2W k5jw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=04fVJiZM; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id rk9-20020a170907214900b00997ba1c6f3dsi2787704ejb.403.2023.07.17.06.57.35; Mon, 17 Jul 2023 06:58:00 -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=@oltmanns.dev header.s=MBO0001 header.b=04fVJiZM; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230394AbjGQNew (ORCPT + 99 others); Mon, 17 Jul 2023 09:34:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230306AbjGQNet (ORCPT ); Mon, 17 Jul 2023 09:34:49 -0400 Received: from mout-p-202.mailbox.org (mout-p-202.mailbox.org [80.241.56.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8CF56D1; Mon, 17 Jul 2023 06:34:47 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4R4NNh29vnz9spM; Mon, 17 Jul 2023 15:34:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600884; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cPWCHbaMIzPJhoorxt9HLF+kv4sZYegCcJXZOrRKrWE=; b=04fVJiZMhngVED/Pi8lx6h0xC5TrS3ghl8MRos+jdHoBkK4RYfzP+J7Z3OzHd+aTdwVxxj TZnQgTeq2fhVSyD8uphoqt4xtiCV2Is69RvL7XuoGpFqmF6FJt/esQ+5voG76rhwM1je8F 52geNyGydIyifzJPVt765+jB4rrtvB/RdY8d1UQgI1Up21ClXHyy0wRLuswKdklq2yrF16 1AoLcnxN5Y1Cp1xdQVL9CK4/cXzieSO/y2h2YQLEaQg/Riug5gIjL4Yuh5gpu/2VqlNGAA gHAoRWsUXDTdGIx6pRXpuW/NGyY6ph+lOA+s7mPQsGdMBlNYf3BqiZWsqdZ6sQ== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:26 +0200 Subject: [PATCH v4 02/11] clk: sunxi-ng: nkm: consider alternative parent rates when determining rate MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-2-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=2786; i=frank@oltmanns.dev; h=from:subject:message-id; bh=ln8ewZB8HSlEkTwEPnYVk2xiK3z7aFrdhE31L9k7BeE=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNmBiTRyNBUXsoPkUobN7y+D/M84n6Ihezx/ KIsuAQwbISJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDZgAKCRCaaaIIlErT x8mfC/4xmWR7TpNRcNtu6On+oaAp0H/+K7AOZP1gdw1xLCJOXl9mGeYL7ljQLqfh8WF9eRo+6jn Tyo9Q3fpCcorU9J8yx75k+xqfWqL6SY7mnZhCBLOrhCypR1P4eaVkYMBwYaSHr/TDPBaIJT+u9H IXWYrd+KcYzTi17mp/d5zq1BhhOEjtE5GXSd/NQwYsT2KY13aR8crSiLulzaF9a91AGKfJSHY8l ajeMK7Ey5yjGWPwHQ/QIqeClx1wiIaqUi4svjaq6RhwhwhSJCTiFV2eBPFyBe/9QUXyA3h7qLPQ 7cNdnijiR7KbMJHsGulPj/YbJtQaCLVZDyBv+GtVqxwupZ46KfJMaAE3IbmS5TAGnqWjgXbFNOT Ird7Nyy6Pno14Tyw13oi/3evBs/Z0Sv7qjrmRZO+okjE0sBG255Pzxq6204gK8j7XNOiI8379HO Jisb/I+ujmzOjXx0XsIJQLr0gY0xVeCg0J6JrlNp/ROiV25ZweDOoaSwdg0gWhF4i9Zws= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2,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: INBOX X-GMAIL-THRID: 1771676401138677820 X-GMAIL-MSGID: 1771676401138677820 In case the CLK_SET_RATE_PARENT flag is set, consider using a different parent rate when determining a new rate. To find the best match for the requested rate, perform the following steps for each NKM combination: - calculate the optimal parent rate, - find the best parent rate that the parent clock actually supports - use that parent rate to calculate the effective rate. In case the clk does not support setting the parent rate, use the same algorithm as before. Signed-off-by: Frank Oltmanns Acked-by: Maxime Ripard --- drivers/clk/sunxi-ng/ccu_nkm.c | 44 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c index f267142e58b3..750e2b8da24b 100644 --- a/drivers/clk/sunxi-ng/ccu_nkm.c +++ b/drivers/clk/sunxi-ng/ccu_nkm.c @@ -6,6 +6,7 @@ #include #include +#include #include "ccu_gate.h" #include "ccu_nkm.h" @@ -16,6 +17,44 @@ struct _ccu_nkm { unsigned long m, min_m, max_m; }; +static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struct _ccu_nkm *nkm, + unsigned long *parent, unsigned long rate) +{ + unsigned long best_rate = 0, best_parent_rate = *parent, tmp_parent = *parent; + unsigned long best_n = 0, best_k = 0, best_m = 0; + unsigned long _n, _k, _m; + + for (_k = nkm->min_k; _k <= nkm->max_k; _k++) { + for (_n = nkm->min_n; _n <= nkm->max_n; _n++) { + for (_m = nkm->min_m; _m <= nkm->max_m; _m++) { + unsigned long tmp_rate; + + tmp_parent = clk_hw_round_rate(phw, rate * _m / (_n * _k)); + + tmp_rate = tmp_parent * _n * _k / _m; + if (tmp_rate > rate) + continue; + + if ((rate - tmp_rate) < (rate - best_rate)) { + best_rate = tmp_rate; + best_parent_rate = tmp_parent; + best_n = _n; + best_k = _k; + best_m = _m; + } + } + } + } + + nkm->n = best_n; + nkm->k = best_k; + nkm->m = best_m; + + *parent = best_parent_rate; + + return best_rate; +} + static unsigned long ccu_nkm_find_best(unsigned long parent, unsigned long rate, struct _ccu_nkm *nkm) { @@ -124,7 +163,10 @@ static unsigned long ccu_nkm_round_rate(struct ccu_mux_internal *mux, if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) rate *= nkm->fixed_post_div; - rate = ccu_nkm_find_best(*parent_rate, rate, &_nkm); + if (!clk_hw_can_set_rate_parent(&nkm->common.hw)) + rate = ccu_nkm_find_best(*parent_rate, rate, &_nkm); + else + rate = ccu_nkm_find_best_with_parent_adj(parent_hw, &_nkm, parent_rate, rate); if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) rate /= nkm->fixed_post_div; From patchwork Mon Jul 17 13:34:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121341 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1127070vqt; Mon, 17 Jul 2023 06:58:19 -0700 (PDT) X-Google-Smtp-Source: APBJJlHizBleiDa2RsI3zXqE00WK0PFuOEiEDfUzmnGk4tTMnT2+0lUZ1UEu3FMVC1T3L79Dez5c X-Received: by 2002:a17:906:1097:b0:992:a838:a564 with SMTP id u23-20020a170906109700b00992a838a564mr11170779eju.28.1689602299037; Mon, 17 Jul 2023 06:58:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689602299; cv=none; d=google.com; s=arc-20160816; b=nkI8L4l4qHjpi9D4l4lZsntarIN0p6i0RWYkqbSg+vu6FDQRerpW00m71DWH9UV/rC RIhF6pqqdHozFbfyFQCKNtC7lo6EVdzDAUK2rVI+paEw0Z5f/IP15OTvSzJHS5pKOT7T 1Z2+FAB9RDYBtdut1GjCGqD0aPotA5ayo7emY9sUUy9rtLxtfufiOjQ5zgJFwmqToeMq g/Cmh1hhSvpkzVZ0qR5UX4e9palzJ5XtKcyJmgqWusmgIa8ci+aU7MPKpiIfIDdqXZRF SJwIaox5wLjkmumd4rMNTyQKZKtB8adKzoRh1LZZ5CInOZNQSnyDO5bzmogb+8TB+NaW 3FqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=mxSpbKadXwGFFmICM4KCVhlYhVMAa5nTGvXXvvCR/6c=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=Fa7t5BBhYfcePGCliUC4RezPR2SmCd0CHTqCJs4LBpS/5C1Hs69ateuVrVOXmS0ABZ 4tAElQNdCUPFpOR9OPAieamZolKODo3t2c9fFH16ewyMbBfjCWpWdLzZOG48auP0aOFL x7CPTD98/tJG6x+/y3yL+cMTZlEO7eLx9upkHgAPejyw6GkLHAcFmspWC7dueyt+RJT5 UQopBXZfmgCs+cXt0TwaXW/RmzvFson5nDhVKwsv29Dc4OmKYOgoCVuxrxIwfMnHMkQl ia4CqXHReGHotbd6lgPDYbVFu7qISOKb8k+Ko8Wd7B2HzRGOu083yGeJ1VRShHFCr8pS pQVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=C8pe7OXk; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b18-20020a1709063f9200b00992e0f4e85fsi12930708ejj.229.2023.07.17.06.57.54; Mon, 17 Jul 2023 06:58:19 -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=@oltmanns.dev header.s=MBO0001 header.b=C8pe7OXk; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231557AbjGQNfB (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44084 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229765AbjGQNe6 (ORCPT ); Mon, 17 Jul 2023 09:34:58 -0400 Received: from mout-p-201.mailbox.org (mout-p-201.mailbox.org [IPv6:2001:67c:2050:0:465::201]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4DAFB103; Mon, 17 Jul 2023 06:34:49 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4R4NNk0BPCz9sqj; Mon, 17 Jul 2023 15:34:46 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600886; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=mxSpbKadXwGFFmICM4KCVhlYhVMAa5nTGvXXvvCR/6c=; b=C8pe7OXk8RmslfUhyHWhNO1IAtnp2revBFmvlWYWs4pPEwjPuzxgx4oGVOm/nj+6w3TjzE /byQuUXA3cFygxHe6MO7QXpb6p+rP1xlv8EDye4yJ5GSrKwhSin4zrB6or+fQKoDzrdSDd B70RVo2tyg+/NHo/rVYnUi8xgOHpMj03QzG8Z5J7fN0XHE8rgQczeMQsKRFmYPqEFLBUde 8OOogZnIznjMwQjqkNBYU+UJUkcCPd9FLtbICDR1lPnRHsSFepaZS6fY4kAVYC7Wz+bXke hbMNcyY/kM66phckmFXXIwlgojxvAq2nNFtDqxu95dnComl3b7wyFAZRILDXqQ== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:27 +0200 Subject: [PATCH v4 03/11] clk: sunxi-ng: nkm: Improve determine rate when setting parent MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-3-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=3162; i=frank@oltmanns.dev; h=from:subject:message-id; bh=ybYcatfzXzLhtH3Us9O9aTKgAbrOK5YclAuVqdRWKwM=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNnbBuKGKMOIVIPQcqh33VQB7vClVkKoHIDR onfsZc+Gk6JAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDZwAKCRCaaaIIlErT xyBjC/9k/2f+UphH0jsSxuPMHBPNOkwewxe5ctT/T+mDGggMT8aTLtvJTrBkOE/+QkBYPZYwzVn PjJh/JJLKKxSno6MIYixIr1m5N5sEiN2IdnbXcQ7FldjLxmXSFkuIBPft4rMCefIorle4AWmRkt 4j2hyOjn5oevtUQ+/+XyixdE4kdu8/cXW24bxdu5zNWkA33EkFL1qNHrmCImPOqv1r28nhZmGuN uSO7XCCclDwDLJ23OrGCKXl7WCFFTkiFhHjplSOEChoYDQGwO+flDmtjpJ67CZe21pV/ZcglEES Tria8vZKA737utAYpVjz8oXp/SmzcaZ6MQMTyXAepfwRaL/Ndq2ON5rjS94/mlFxyV8SNYv0kld k33OMm1FSdXXIP2MIpKSiC0+bJSQ2JN8Mi/JaLzlHxUjRgQtrpj75TI+V+pbC+OH0x/S3yAoPDc pTzVNaX5rs05gNeQ46W2fMz7KWwGutatxTlDXuDPrqD11nUmIuthZ24Zfk00qH4+qrkm0= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Rspamd-Queue-Id: 4R4NNk0BPCz9sqj X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771676420267851203 X-GMAIL-MSGID: 1771676420267851203 Make the SET_PARENT_RATE flag independent of the parents round_rate or determine_rate implementation. Currently, the algorithm for ccu_nkm_find_best_with_parent_adj simply calculates the optimal parent rate as (1) parent = rate * m / (n * k) Due to integer division (1) might return a parent rate that is too low. So using this value for asking the parent for a rate it supports via clk_hw_round_rate causes problems on a) parents that only support finding rates that are lower than the requested rate - which is the default for sunxi-ng ccu's. b) parents that incidentally also support the truncated rate. In those cases ccu_nkm_determine_rate might return A' when A is requested and A'' when rate A' is requested. Prevent this by trying to find a parent rate so that (2) _rate = parent * n * k / m matches the requested rate exactly, if possible. Background: =========== determine_rate may be called multiple times by the clk framework when setting a clock's rate. But the clk framework expects that the values determine_rate returns (i.e. the rate and parent_rate) are consistent with previous calls. Specifically, clock's have to ensure that if determine_rate is called with requested rate A and the best rate it can find is A', it must also return A' when called with requested rate A'. Signed-off-by: Frank Oltmanns --- drivers/clk/sunxi-ng/ccu_nkm.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c index 750e2b8da24b..793160bc2d47 100644 --- a/drivers/clk/sunxi-ng/ccu_nkm.c +++ b/drivers/clk/sunxi-ng/ccu_nkm.c @@ -17,6 +17,27 @@ struct _ccu_nkm { unsigned long m, min_m, max_m; }; +/* + * Calculate the optimal parent when determining the nkm clock's rate. + * + * This function is used when the nkm clock supports setting the parent rate and ensures that the + * determine_rate function returns consistent values. I.e., when determine rate is called for rate A + * and the best rate it can find is A', this function ensures that determine_rate will also return + * A' when A' is requested. + */ +static unsigned long ccu_nkm_optimal_parent_rate(unsigned long rate, unsigned long n, + unsigned long k, unsigned long m) +{ + unsigned long _rate, parent; + + parent = DIV_ROUND_UP(rate * m, n * k); + + _rate = parent * n * k / m; + if (_rate > rate) + parent = rate * m / (n * k); + return parent; +} + static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struct _ccu_nkm *nkm, unsigned long *parent, unsigned long rate) { @@ -29,7 +50,8 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struc for (_m = nkm->min_m; _m <= nkm->max_m; _m++) { unsigned long tmp_rate; - tmp_parent = clk_hw_round_rate(phw, rate * _m / (_n * _k)); + tmp_parent = ccu_nkm_optimal_parent_rate(rate, _n, _k, _m); + tmp_parent = clk_hw_round_rate(phw, tmp_parent); tmp_rate = tmp_parent * _n * _k / _m; if (tmp_rate > rate) From patchwork Mon Jul 17 13:34:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121342 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1127155vqt; Mon, 17 Jul 2023 06:58:25 -0700 (PDT) X-Google-Smtp-Source: APBJJlHgTrQCkQh5Agw1WENAr+wD+saMLc3z34LzwZ1gmn/pLDh1izbl6zBmCakBrvs22Vh+OSOv X-Received: by 2002:a17:907:d0d:b0:988:9b29:5653 with SMTP id gn13-20020a1709070d0d00b009889b295653mr11099103ejc.77.1689602305194; Mon, 17 Jul 2023 06:58:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689602305; cv=none; d=google.com; s=arc-20160816; b=J1/kjZdQvjq6MbpJVBUZ694ScqLVQAKXhw/0DxY4Ob1Q5GzZEnINy7aglYSnL0MC3C OUos5pPzc4k2YIi0MWAeknZ6w5ZKGVLeqyGrybfROa9JEX+Gds7NUNeZFBPs8S1/n717 xUtPq0OkQ1c7z9p3k6cv/KRfnmwuTL+9klYZrPRIn2GZFDuFK0c2zEvqaQiF0QivvHuX cHe1w8E/DesR3itcc/MF3dDX/z9U5RIeK/p9ZooVqQcMF2K4fVzQ56/fJCWMNn/fZQy2 AnUyqACyJGUCdxDxCyNDIz3xqZqfPf1dHcVDU2wldb/4rE/nFk81/8A4b5ouEcmaQMIM M8WQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=9/AP7UiU8qhdUXkhdNLxJOtFL/gExqBQUGjN0bV4ALI=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=UqXfmsvQ9eEu7iNgtNO0GgdDGBgD+DicuyGVZX+nQ/Xrqf8bUupTn1gH8adKIyW+Ae UEK6Byr7Xv12VxuKQgsETdvjKV4JrZbGAbBHV6jCLmNSJDlzBbdYjSU3EpCSHuqIZfJM iHllqYgk8SlgcdAaT3hW8/Gj4UKeja/UK+urLLxKfnvRjpM4GpbPvCvnYyhVNjJQ6ZpG +jBLK0G4Ar8uZxE2RJJTME5DRK4qiongKcAR8Rb47aQhULQyT1S2ik3qomf79jr3ggV3 vcMT16eigvXG6as8DKymTNplAxLKl3Yt/RcEYcPA1UNcfaQw+hy7Qx8sM1BBv7Vpl2Zq 9bIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b="p/8X/pMD"; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a3-20020a170906368300b00993150e55desi13273637ejc.291.2023.07.17.06.58.00; Mon, 17 Jul 2023 06:58:25 -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=@oltmanns.dev header.s=MBO0001 header.b="p/8X/pMD"; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230260AbjGQNfF (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44100 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230464AbjGQNe6 (ORCPT ); Mon, 17 Jul 2023 09:34:58 -0400 Received: from mout-p-201.mailbox.org (mout-p-201.mailbox.org [IPv6:2001:67c:2050:0:465::201]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E3505131; Mon, 17 Jul 2023 06:34:50 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4R4NNl62XSz9sTm; Mon, 17 Jul 2023 15:34:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600887; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9/AP7UiU8qhdUXkhdNLxJOtFL/gExqBQUGjN0bV4ALI=; b=p/8X/pMDRn3VDPLMa9zLgWy+rJIex7YxNUplJXmFOQs6YGNqZ8+77rYfoLWuXmFTTOf7ju ppV5CGi8C4+BplaaYXXwPDf6ycWJ+j/hK0gyZ/5wSxA0SOQ+kz7dJI5gcJgewmCNnzzSVU ld/OkigUvNfkqojRM7wHBT3tc2g1oGDSeBpple/Dx/hiVnsWR7I+aK8i0RCnVC81lKooSN huhnH281gRXYrX9zpLlP/HQCjAIJ77IjDVI/K9yI0n5D6sK394ihjlYMcPuBYhmPSU+aHt DTqWEV8AlihINbJ27qrfjiXX9yu5b5WRSiMWMA+JpqNSy+lP2mjh3v7d8NkULQ== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:28 +0200 Subject: [PATCH v4 04/11] clk: sunxi-ng: a64: allow pll-mipi to set parent's rate MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-4-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=852; i=frank@oltmanns.dev; h=from:subject:message-id; bh=MYgMUXDylKq1ueF0/z4NSPOcrbzoRllAat6F65tgrPA=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNnxvQm4kVTKSzVBGDfgQtD8lSHZzj2+2z1W HNjRC5aMdOJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDZwAKCRCaaaIIlErT x5o8C/9q96AvAhFPEi/8WLlv4yDjFChHVlw6zt991yUMF2Aq4UtVoMQdqNXVWyAUBGXkvOaoc+8 xeIe582TfsjmepFqB1beJG2HyX4AVYpKb4cG8oh7wjgzVYBJWNXbCYc1q7FRSfUmpiiO9Oc3KHh 2Ixd5hknOEwibM/9LJr67U0hTyAEJsi6W+e0SsyMybKw1xxMvx6WwvN2F6P+g08Vp8CW5QSgzUN j5LZafiUP+uEyVxgknLdGilQJ4nSwv6COsrqg/n6tfktXUeklQX3+kR0h+qT1Dkb23dwbc1EdxD CNkONrQZG4S7S5kj/AqrahT6YCFg+/FMNiZfE1NzyOvErvHqd6dJcVg0jyuWQZlncGnXsm+1qnV yrLIVO7A6O4e38svoOrJ+U246MjJgcR1O26CtaFQGaE1lNi+7qiCg2pe+xzL6Fe5MG5mKbsrv4s SLvEjCD8jdxlpdUNXOuAUq0f6wPJ0fl24fZ3mBR2afhmjYBZEdhu58TGzwW5YDgjHSCdo= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771676427082282129 X-GMAIL-MSGID: 1771676427082282129 The nkm clock now supports setting the parent's rate. Utilize this option to find the optimal rate for pll-mipi. Acked-by: Maxime Ripard Signed-off-by: Frank Oltmanns --- drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c index 41519185600a..a139a5c438d4 100644 --- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c @@ -179,7 +179,8 @@ static struct ccu_nkm pll_mipi_clk = { .common = { .reg = 0x040, .hw.init = CLK_HW_INIT("pll-mipi", "pll-video0", - &ccu_nkm_ops, CLK_SET_RATE_UNGATE), + &ccu_nkm_ops, + CLK_SET_RATE_UNGATE | CLK_SET_RATE_PARENT), }, }; From patchwork Mon Jul 17 13:34:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121343 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1127240vqt; Mon, 17 Jul 2023 06:58:38 -0700 (PDT) X-Google-Smtp-Source: APBJJlHw1fAIDhAmtwa700JKp5jThVj/xJLRvRoOUOzCsUg1sbQgHfiYrdzTavzxKYYFumtDoLM2 X-Received: by 2002:a17:906:2205:b0:993:ec0b:1a24 with SMTP id s5-20020a170906220500b00993ec0b1a24mr10994442ejs.7.1689602318339; Mon, 17 Jul 2023 06:58:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689602318; cv=none; d=google.com; s=arc-20160816; b=EuMTLi63oQo9aKxAGmjcXb8gOWjuidWKv2X9mptsxut61B9gUlI5PckBrNAWS78PfU QI530LqlUIQzwQHKJ1v4omuUDuAC2+9eEIP2dTiF38y85c1aJrVoIvJGiuatvaQVDcWN WUKQB4iXPPFl+u1hNyow1//tsG5snMDVdRk9U5gqr/w6pAcqod1D9XdjCAibIHzMlEK2 VOXMyUJKnB7hVvfKNpN1XGymQRMgGX+bGlkYTbptWDtiDE71epb+720k/nmME0CVppqb vZRsnSdez08eqtWJDkeaS/ALFb4Nylx15baydhBc/ZcBEjf23mNo91pMNYyFitf6vsBu M0WQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=9mBnj/sxnS9zwU8wD2TdC9KZuObHfj2Iut9ShLW7rE4=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=crVEAHFw6KtNX2hFqYB1aEjTYM+ekDqu91KTyXLgKSulHLoggxu5bxvBOl5UH4W6vj aH2iYnON/PzwhLaVM14ZPEj9M8yW2PRUyo21u65hjry2J1ausfnoUwjifdpR7l+fJuV1 Erw1UDeqWsbQtJT5Ow+j5Jcjbv2+JeNXh2lQu079zMO/GwmeBKCliMFQ81N5m0r2ytY5 NhTEmIdk0nYuVFaDQS3Jd93s+JgHGpeqfNT4Mb5mKnpVcGI1vIk+6RnID3+yCzgeE3QO ln+LE8XeP9BF3+Doh+FJWrDyef/Iu22lEJMImUJ7TRO5BXGCnw/91SEa3zFdzvZDOgXx K4Eg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=P4IYBLXp; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id u13-20020a170906c40d00b00992bf74c31csi5634731ejz.1005.2023.07.17.06.58.14; Mon, 17 Jul 2023 06:58:38 -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=@oltmanns.dev header.s=MBO0001 header.b=P4IYBLXp; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231671AbjGQNfJ (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231387AbjGQNfA (ORCPT ); Mon, 17 Jul 2023 09:35:00 -0400 Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [IPv6:2001:67c:2050:0:465::101]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE5AE198; Mon, 17 Jul 2023 06:34:52 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4R4NNn2wXfz9scd; Mon, 17 Jul 2023 15:34:49 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600889; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9mBnj/sxnS9zwU8wD2TdC9KZuObHfj2Iut9ShLW7rE4=; b=P4IYBLXpzSKDpQDC3y/8eQEb7xIwNG2KeqYk9uYFHqXJh+SvwkbfijIZOWTyq9ScLuLh3t o5xviA0TEGMhMCOWCdOszeUF8aSM3UJbub59652i3lt0+Z3ZBWO8hNqLBs6b23oi7awO78 QrEa2gpkhWFeXbp79PcSYhZvAGuo7OEv4nbjMtzXB+QyhUuzAjKlAw2N2E2rAmGLQVhURo rmuS65BPDo5/b0uqaXRVXzvHs9m4XQRfsll0LunNKgYXGrBfy65rz14MZtAFwPbrnhYaZa NBn+tMDFWOw8cTuhcciq8pqy5laq7dH7ozr/CLuFpClYY7eTl97GflWoNWpT0g== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:29 +0200 Subject: [PATCH v4 05/11] clk: sunxi-ng: Add feature to find closest rate MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-5-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=925; i=frank@oltmanns.dev; h=from:subject:message-id; bh=gnSO2u9KSds+yso2ENUmK1fTBfjNRGShsPD5HpXqe+0=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNnQaE7W76TYcfxfYnWsd1bG/r3SzYlXk8Rx EmA2MoX7ZmJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDZwAKCRCaaaIIlErT x492C/96NNmsav+tjwb4ER/kGeVV0NdFdh7BNDSmd/fCpHM4z0947Pi/8UHRgMHz+7i5n/xydyk oeKOFIEFZTCvA6MbQS7vcuS3szA4u72eOREafKEpwCLZRq6Tns0R2Z4r8lAuFZIs8bHf2QR86GB zy0yk0exP77FgUh3DycvDSpz/a0nuQZbzeqAjpPiVwre4TO0Bsez/lWMVGF5ZcnNSkA8KosGdsv mSSWmoYNU1YxO22J+r/Pg3HWIPW4k1TiQkOLTmK8Xcd7Nw67uGDQDpWLBxTC2t5sM+rCupVcwVf foXD7h21UYidnpg0wCaOc00SnWDTTxZzt9Kpewun2mYlfaP+dxmzqdG4QR2+qiwIgnoin3DDuYV avd/LnyHh1w7v3pkqXOSw4NjSoBzmpx3a1tm088tY9qsDf6JIAxH2CxsRFYu8NF+SXSQtWxwEtZ tGFLjGS0ANDgnLFddEki3/pMZqaDgig7bC+BgWgd+OyYJqGveWqPjK1Gs/mGAS1ne3RcE= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771676440227164434 X-GMAIL-MSGID: 1771676440227164434 The default behaviour of clocks in the sunxi-ng driver is to select a clock rate that is closest to but less than the requested rate. Add the CCU_FEATURE_CLOSEST_RATE flag, which can be used to allow clocks to find the closest rate instead. Acked-by: Maxime Ripard Signed-off-by: Frank Oltmanns --- drivers/clk/sunxi-ng/ccu_common.h | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/clk/sunxi-ng/ccu_common.h b/drivers/clk/sunxi-ng/ccu_common.h index fbf16c6b896d..5ad219f041d5 100644 --- a/drivers/clk/sunxi-ng/ccu_common.h +++ b/drivers/clk/sunxi-ng/ccu_common.h @@ -18,6 +18,7 @@ #define CCU_FEATURE_MMC_TIMING_SWITCH BIT(6) #define CCU_FEATURE_SIGMA_DELTA_MOD BIT(7) #define CCU_FEATURE_KEY_FIELD BIT(8) +#define CCU_FEATURE_CLOSEST_RATE BIT(9) /* MMC timing mode switch bit */ #define CCU_MMC_NEW_TIMING_MODE BIT(30) From patchwork Mon Jul 17 13:34:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121344 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1127348vqt; Mon, 17 Jul 2023 06:58:55 -0700 (PDT) X-Google-Smtp-Source: APBJJlH2Wu+f1fbFRrgfvTJJo0cU+A49ZFi58elAennJxDlj8v8zlXUS0nsDg7WsshNbwJoCKUlX X-Received: by 2002:aa7:d803:0:b0:521:7a5e:ab0f with SMTP id v3-20020aa7d803000000b005217a5eab0fmr5288569edq.9.1689602334781; Mon, 17 Jul 2023 06:58:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689602334; cv=none; d=google.com; s=arc-20160816; b=qI+pf3my5heMevkCDydkYrQYEQhlKxgiiHFYQIRT03mw4R7GEg3QlWTJQZwCukLPlG FaB1s7Xx3a4XJlLFoFsGWss5ke06ABzGB57ZdoiOTtsVEV/qOjHUmeqYRr7R9tBm+NSU 71b1WKKnDnubw36oNUpcArSoOEoSZxrJ5Prl2x6mxepfTw2NPHwvLJMbAyRsP8nHsU3n bckX5n3zhXbD1s2gFMTE9vdm1gTqI0NtJYMMVAOIITD48QIOA/Db4ODrRTmGjL29G5W6 vybpXmC+CTRLaPgogdnTJ4cA1cRmhmsqF3KgCNmhs4rS6x6eUI8O7Rb1/5qY0dF3xCP1 97Sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=AjFCY3HxW03cxoBZRPjTS+r4+YQ2i2FxYxF8BGQxqRs=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=fM4pPP3NN3vxbM3O5bXnVptBQk28K3B9V5UuAFbVoIjGMg0Ty/YT9GWWU4+ZaNE3Q6 nkFbTj34IqEwHP3kYWnKr3IkVIKDl7sC2w7q1w9gxX04bOW73hnnOb2TM2DkyXrqMvuC vNHwijZ0KKNyUaba0GS9l8YtYL2Rd5IGJpC0V2LBDhRZ27867f1BEz+owr15FNGNM6aQ sbjKdDdNdx8tFk8+C+KE60wFv2xXdtdZfzybQMnnC0lx5xihPhWlX8le8nxDY5pAxORM IKwKoroKqg0qAWA37afUQRgx1+NiOIChv0ajktC0SniM/SbW/GkkVZYmJ56WAuWSVEfc 9aXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=lqCftgPB; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bf10-20020a0564021a4a00b0051de49abbd2si5904284edb.483.2023.07.17.06.58.30; Mon, 17 Jul 2023 06:58:54 -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=@oltmanns.dev header.s=MBO0001 header.b=lqCftgPB; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231855AbjGQNfR (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44382 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231250AbjGQNfA (ORCPT ); Mon, 17 Jul 2023 09:35:00 -0400 Received: from mout-p-202.mailbox.org (mout-p-202.mailbox.org [80.241.56.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D544D10D3; Mon, 17 Jul 2023 06:34:54 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-202.mailbox.org (Postfix) with ESMTPS id 4R4NNq5hHTz9spg; Mon, 17 Jul 2023 15:34:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600891; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=AjFCY3HxW03cxoBZRPjTS+r4+YQ2i2FxYxF8BGQxqRs=; b=lqCftgPBqtnXs2n/n2lMayHb6woREijxYVm13HsND8SB3l1Y4qJ3Eq2HaxC5UQl2wJI/zT SJYJOeNEJ3sZjvPpvvqgdSrDEf7sbCdkq8imafn1yK+5vNAJ6lRrTxSkwcfxHaLs0d2d0u 9lGPRqatT+/5C3Ohr4zDKQgmREJg4X6VyyvP84ZU2oi8UI6i6v5MrssVtx5c3QLeK640T5 2j7i5f3K+w7DqDF54sUKk3B+2yz33CIFscESXSSPJz1mOFmqnJbJR9pFMA1thyYW5l/7Dj d7jT6xlIuVE6RDzslQzbkvU3EUKlVVYRiKHHkW0F3/c3i18jWqINHDvROfc3WA== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:30 +0200 Subject: [PATCH v4 06/11] clk: sunxi-ng: Add helper function to find closest rate MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-6-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=2008; i=frank@oltmanns.dev; h=from:subject:message-id; bh=HKQcQnjj5qfhxp0P09j7Gl6Mbxsh+yyoCxFM8Ft7zNM=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNnkE00hapfor0wr5bj5Dtq+dTlwCnMQOK+s ELOrs3x6XGJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDZwAKCRCaaaIIlErT x2vPC/kB7w335bl9VHEBhhj2h+GQE8Tm+AEihJihO2JcP4vuBCX41g6ajVERRGp1AMsz/Q8Idlc zvXhmXWirHKdPNCLdBmuslbWZX2+PThnhwbTJhL6NfBB4bIm8l83IP2Wp1BIveLifnTiBqmHDtW Z4nWmHk695LPheIVjswfEznK1PVLV1NsRXPWBz1pUh7Ngfg6RRUw5VN17xB9t9+xsE41AJrd2hl nQibASXTfi1QKJdfYQ8NrW8xF2f0MbhcWoUGBJqZgvvWrZXsvtIHN/WE5/jea1rtz2ScD5f/qMi bQtMGxx96Qi3taoix4PZ4BX6+rCfAxPfYxFLMVOW8nBQyRiQ9hdETRG0hB6ZkSKpi2sR6rgOp1V 0qsimH7eQI5ruaXd4RgUl2lqASGNSr7x62dCvhjVVsqVc2ZBQ8jkQRY2q8hz/5girb1zv9yOvn0 dKeldput9qZJv2iOg2lJdSTTUP8rHTElyNGsfr8xBGTUh9z1dOdRNXnteDPSFRn41RJE4= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2,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: INBOX X-GMAIL-THRID: 1771676457860349228 X-GMAIL-MSGID: 1771676457860349228 The default behaviour of clocks in the sunxi-ng driver is to select a clock rate that is closest to but less than the requested rate. Add the ccu_is_better_rate() helper function that - depending on the fact if thc CCU_FEATURE_CLOSEST_RATE flag is set - decides if a rate is closer than another rate. Signed-off-by: Frank Oltmanns Acked-by: Maxime Ripard --- drivers/clk/sunxi-ng/ccu_common.c | 12 ++++++++++++ drivers/clk/sunxi-ng/ccu_common.h | 5 +++++ 2 files changed, 17 insertions(+) diff --git a/drivers/clk/sunxi-ng/ccu_common.c b/drivers/clk/sunxi-ng/ccu_common.c index 8d28a7a079d0..8babce55302f 100644 --- a/drivers/clk/sunxi-ng/ccu_common.c +++ b/drivers/clk/sunxi-ng/ccu_common.c @@ -39,6 +39,18 @@ void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock) } EXPORT_SYMBOL_NS_GPL(ccu_helper_wait_for_lock, SUNXI_CCU); +bool ccu_is_better_rate(struct ccu_common *common, + unsigned long target_rate, + unsigned long current_rate, + unsigned long best_rate) +{ + if (common->features & CCU_FEATURE_CLOSEST_RATE) + return abs(current_rate - target_rate) < abs(best_rate - target_rate); + + return current_rate <= target_rate && current_rate > best_rate; +} +EXPORT_SYMBOL_NS_GPL(ccu_is_better_rate, SUNXI_CCU); + /* * This clock notifier is called when the frequency of a PLL clock is * changed. In common PLL designs, changes to the dividers take effect diff --git a/drivers/clk/sunxi-ng/ccu_common.h b/drivers/clk/sunxi-ng/ccu_common.h index 5ad219f041d5..942a72c09437 100644 --- a/drivers/clk/sunxi-ng/ccu_common.h +++ b/drivers/clk/sunxi-ng/ccu_common.h @@ -53,6 +53,11 @@ struct sunxi_ccu_desc { void ccu_helper_wait_for_lock(struct ccu_common *common, u32 lock); +bool ccu_is_better_rate(struct ccu_common *common, + unsigned long target_rate, + unsigned long current_rate, + unsigned long best_rate); + struct ccu_pll_nb { struct notifier_block clk_nb; struct ccu_common *common; From patchwork Mon Jul 17 13:34:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121345 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1127385vqt; Mon, 17 Jul 2023 06:58:59 -0700 (PDT) X-Google-Smtp-Source: APBJJlGCkN5eWbUMVynZ2aSKGTvCQ2nDV94dE8M1rA2S49AA48q0lsuR9j937v3tutJjLcD7evy4 X-Received: by 2002:aa7:d9d6:0:b0:51d:9dae:a591 with SMTP id v22-20020aa7d9d6000000b0051d9daea591mr11512641eds.21.1689602339722; Mon, 17 Jul 2023 06:58:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689602339; cv=none; d=google.com; s=arc-20160816; b=Y3R9IctufwUEAG7kCpLHwxMlJ48UzHXQvHL6YTXYI58YcpJoGsPlKxb1ROInyfT87h dl000ZI5vNpGHz5BWoq9yjH9R4cL2Ia3kakCO6LKwiGWxD5uJSlJJBt7OULoXLa25j0N dzHTQ0yJdHzoknKgwSipKFrFp4zjIWDRZsitT1oDJ1fCieoJL2Dakmjjt1PO3BfxUH11 c6I82q/sOV9GIGBZiWe4e2Dlttdaz86+5acYDfrcfP/8jn+QoQrF+NGcC/VPhnnbA5yb p8x6Q/uU6DLv8Q5Xf0YxM1GxbXkumeNf6ZksS+iIuINzbnj5OCl1rigY1TQTJIixsUJW pF9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=VLlZ20gT3AYBxK1XNMqqr6vr/q9ctYDYjWAuz89wTeI=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=G6bZKqVf4m/VPj5VzEtvi7wA9f+q9hrtFh9F00MNlW3ybLB1d565ECynEB1MV1y5Sm J2h0YRLvSQ+j3QYzVnvfYkqdGf1onwQXi5Yff7dq9nvPprtP/b/BGRlqvnt20kXVyklW tIIDtd9zlusH1kAGX/Vsr3gShGFkLyo8uFYcpYacnt1IEZGp7k4raQqQV1F6yAbt8uZD Q4Vi0M3sVJ41AJ76tCVwuccsYQV3ZZPsU1akBF6BUWxgH2YvX0f4dgJahUEYtDxeuvhJ UTem1xN3gX5as03IAwnGKEBtMmH+SBiQsQnyWOLlUcPhnobx4YVcIrEvCOaW+0mdfXZt CvRg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=FauePXE2; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l16-20020aa7d950000000b0051e2286b849si13603698eds.654.2023.07.17.06.58.35; Mon, 17 Jul 2023 06:58:59 -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=@oltmanns.dev header.s=MBO0001 header.b=FauePXE2; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231343AbjGQNfV (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43998 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231580AbjGQNfB (ORCPT ); Mon, 17 Jul 2023 09:35:01 -0400 Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [IPv6:2001:67c:2050:0:465::101]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D455210FA; Mon, 17 Jul 2023 06:34:56 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4R4NNs3xktz9sn0; Mon, 17 Jul 2023 15:34:53 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600893; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=VLlZ20gT3AYBxK1XNMqqr6vr/q9ctYDYjWAuz89wTeI=; b=FauePXE2BeyhtMEhZ8a/oZikKUJ9mLjJOdTlEybsRzYiibAYAvL0UkdQgEDB62QAPflBvs wbS91bJHsZHzcrF2zrEDrMkOylTmTWrgujlqfPIHjzXJsOuMnMnRjxLqUwyko+2f6H0J0N QAqFxM+PXBfMyqimi/pr6sWpZmXr59XesOF+O9/hr8Y5Wxv3+BqD2yPIhrt0ogryZaxWXy KDYf7stY0+c7q6V8VqNTwBX2vM8bTUczPvS/JyIgmuLMSf0cbUlk/MdYfmy26rDVVqMnoL 3Uwt48aYlMmG2GxQDMqcjLHWgipbPEHdOzAwHpEdx5v4z5L0LmBhWY+ITyACGg== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:31 +0200 Subject: [PATCH v4 07/11] clk: sunxi-ng: nm: Support finding closest rate MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-7-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=5089; i=frank@oltmanns.dev; h=from:subject:message-id; bh=NepBBc4l97PvUGu6ZIRJp/OdImGWyPyBUbamE+1jv1o=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNn9Y3lBf5N2ajTepXKLJ+mjiTtVwbQxpO2O aboO54rn+SJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDZwAKCRCaaaIIlErT xxbXDACKhryJmCyCo+ZOit2eroVXh9w6WrCLSafRUolxDHQJP2mlATGDQeDT4QH1AGD2NC5XHpk a10nSqVFEuMZQY5xzkvnXxA3vebDr8M6P/F8LH+K1p7ip3WiVcoqGSnD5lueKlr2AFvMhofLHyo QW+MMYUuHGD5CQK0TRcmmpTLRs7RSgxp1dC1gNqo4fGxW6KXNwI7RdlLM1hFp57aDhybhjMG8Yp J8wnh+usI7hbFbuHZMFo/m+2HbbTj/UioyWuQRELXTuzmFO+hwvn7YPyCG3a70tCWw6oMlQkcCl GzSlEIMWH+4j49a0Ipdke/5TZs10eU3x9gWgc096u0SpZH5Ez/qVaLhZyNFlP/zKwfxPF1Wmi6O SGGa+KOjAgx/kctVOccga2SylFEjmBZnmxUuLdpbwbEBDoPBgl6UpuIXEzR3i1cgorEosVhKuqV mPs0yWLHUUIFqVe6+cLoH5OoxwjEgRxVD/bZpWigvBsRxqQDsVs7sAp25hb3O1FK26Lqs= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Rspamd-Queue-Id: 4R4NNs3xktz9sn0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771676462817261402 X-GMAIL-MSGID: 1771676462817261402 Use the helper function ccu_is_better_rate() to determine the rate that is closest to the requested rate, thereby supporting rates that are higher than the requested rate if the clock uses the CCU_FEATURE_CLOSEST_RATE. Add the macro SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_CLOSEST which sets CCU_FEATURE_CLOSEST_RATE. To avoid code duplication, add the macros SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_FEAT that allows selecting arbitrary features and use it in the original SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX as well as the newly introduced SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_CLOSEST macros. Signed-off-by: Frank Oltmanns Acked-by: Maxime Ripard --- drivers/clk/sunxi-ng/ccu_nm.c | 11 ++++------ drivers/clk/sunxi-ng/ccu_nm.h | 48 ++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu_nm.c b/drivers/clk/sunxi-ng/ccu_nm.c index c1fd11542c45..35d00783d748 100644 --- a/drivers/clk/sunxi-ng/ccu_nm.c +++ b/drivers/clk/sunxi-ng/ccu_nm.c @@ -28,7 +28,7 @@ static unsigned long ccu_nm_calc_rate(unsigned long parent, } static unsigned long ccu_nm_find_best(unsigned long parent, unsigned long rate, - struct _ccu_nm *nm) + struct _ccu_nm *nm, struct ccu_common *common) { unsigned long best_rate = 0; unsigned long best_n = 0, best_m = 0; @@ -39,10 +39,7 @@ static unsigned long ccu_nm_find_best(unsigned long parent, unsigned long rate, unsigned long tmp_rate = ccu_nm_calc_rate(parent, _n, _m); - if (tmp_rate > rate) - continue; - - if ((rate - tmp_rate) < (rate - best_rate)) { + if (ccu_is_better_rate(common, rate, tmp_rate, best_rate)) { best_rate = tmp_rate; best_n = _n; best_m = _m; @@ -159,7 +156,7 @@ static long ccu_nm_round_rate(struct clk_hw *hw, unsigned long rate, _nm.min_m = 1; _nm.max_m = nm->m.max ?: 1 << nm->m.width; - rate = ccu_nm_find_best(*parent_rate, rate, &_nm); + rate = ccu_nm_find_best(*parent_rate, rate, &_nm, &nm->common); if (nm->common.features & CCU_FEATURE_FIXED_POSTDIV) rate /= nm->fixed_post_div; @@ -210,7 +207,7 @@ static int ccu_nm_set_rate(struct clk_hw *hw, unsigned long rate, &_nm.m, &_nm.n); } else { ccu_sdm_helper_disable(&nm->common, &nm->sdm); - ccu_nm_find_best(parent_rate, rate, &_nm); + ccu_nm_find_best(parent_rate, rate, &_nm, &nm->common); } spin_lock_irqsave(nm->common.lock, flags); diff --git a/drivers/clk/sunxi-ng/ccu_nm.h b/drivers/clk/sunxi-ng/ccu_nm.h index 2904e67f05a8..93c11693574f 100644 --- a/drivers/clk/sunxi-ng/ccu_nm.h +++ b/drivers/clk/sunxi-ng/ccu_nm.h @@ -108,7 +108,7 @@ struct ccu_nm { }, \ } -#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(_struct, _name, \ +#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_FEAT(_struct, _name, \ _parent, _reg, \ _min_rate, _max_rate, \ _nshift, _nwidth, \ @@ -116,7 +116,8 @@ struct ccu_nm { _frac_en, _frac_sel, \ _frac_rate_0, \ _frac_rate_1, \ - _gate, _lock, _flags) \ + _gate, _lock, _flags, \ + _features) \ struct ccu_nm _struct = { \ .enable = _gate, \ .lock = _lock, \ @@ -129,7 +130,7 @@ struct ccu_nm { .max_rate = _max_rate, \ .common = { \ .reg = _reg, \ - .features = CCU_FEATURE_FRACTIONAL, \ + .features = _features, \ .hw.init = CLK_HW_INIT(_name, \ _parent, \ &ccu_nm_ops, \ @@ -137,6 +138,47 @@ struct ccu_nm { }, \ } +#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(_struct, _name, \ + _parent, _reg, \ + _min_rate, _max_rate, \ + _nshift, _nwidth, \ + _mshift, _mwidth, \ + _frac_en, _frac_sel, \ + _frac_rate_0, \ + _frac_rate_1, \ + _gate, _lock, _flags) \ + SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_FEAT(_struct, _name, \ + _parent, _reg, \ + _min_rate, _max_rate, \ + _nshift, _nwidth, \ + _mshift, _mwidth, \ + _frac_en, _frac_sel, \ + _frac_rate_0, \ + _frac_rate_1, \ + _gate, _lock, _flags, \ + CCU_FEATURE_FRACTIONAL) + +#define SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_CLOSEST(_struct, _name, \ + _parent, _reg, \ + _min_rate, _max_rate, \ + _nshift, _nwidth, \ + _mshift, _mwidth, \ + _frac_en, _frac_sel, \ + _frac_rate_0, \ + _frac_rate_1, \ + _gate, _lock, _flags) \ + SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_FEAT(_struct, _name, \ + _parent, _reg, \ + _min_rate, _max_rate, \ + _nshift, _nwidth, \ + _mshift, _mwidth, \ + _frac_en, _frac_sel, \ + _frac_rate_0, \ + _frac_rate_1, \ + _gate, _lock, _flags, \ + CCU_FEATURE_FRACTIONAL |\ + CCU_FEATURE_CLOSEST_RATE) + #define SUNXI_CCU_NM_WITH_GATE_LOCK(_struct, _name, _parent, _reg, \ _nshift, _nwidth, \ _mshift, _mwidth, \ From patchwork Mon Jul 17 13:34:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121353 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1140701vqt; Mon, 17 Jul 2023 07:17:18 -0700 (PDT) X-Google-Smtp-Source: APBJJlFx4RDJXlZjAriXSg7fOrKxXJKu8ok9/nAa4hH2qYh7dzmybKgtqyh5WpF7jn48dhO60Dzq X-Received: by 2002:a17:90a:648b:b0:267:6ce0:cb25 with SMTP id h11-20020a17090a648b00b002676ce0cb25mr9719111pjj.16.1689603438438; Mon, 17 Jul 2023 07:17:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689603438; cv=none; d=google.com; s=arc-20160816; b=leSG+HsMIR89fb+b+DP+Txa/ecVOhuCUGfQyCQEDOViJsW60e3Kqeipl1JloOOJO0x eVvalVs6vxCQPFNgUh9oOM/aaCUgvwkF+Bgs5VXd/7/VHCdomPKhNCesfWNOESxOfSWX NBH7KC9tVMk9BccC+mojE3ovDhOoQPPjaJMxW11F9eSW3m9SSWfF5TwUqgS0V5RGJ4sz LIEdp6pXbUu8HrR4PxmGiPYfe/ah70xFT0sPldEt6IkN3/zr6mtKGQup5exvsev0M2qF l18JrAldJzIfrboMR+ZOfFOk4YOadNf0oc4NjDefodmEHlSVzYflIrmEha8AMqOC84fG Bdbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=rlTJuOBcXldwNheInskRcuqMdDaXa3wlYPUBaUVJITM=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=JPGQfNcDrfqbJOFfo+qCm9AujcVt/4hi4M45bYubwfg6o8875h9SZKi7bzU4i9QDD5 hkdUAEwGtId8kMkXVo1QfapP1l4hvwYaALRTf7Ah5nZ+kFDvrgXoUVEYxX7s/VGR+joI LfTYiHdbWTcPN52jr0Z0avxzfnMbM1Cmc2xcc7/J7seMTxoxOwFZlHSgQkJhekM4ZLtn se67Q/42OWCPm8nHTEUrDTeiMILlULItUn/Kn9h5HHOq57Sx4Z7A1JQYY/UCDZCBHVFe iMZLY11pVuUzG/0QjxBb1u5vlcl+W7LAoZs96cbbudW2enmujPWbCQQ/ticGRx0Xf0m0 TGkQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=k3Izz2QD; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id nk7-20020a17090b194700b00262f99a851asi5599183pjb.96.2023.07.17.07.17.05; Mon, 17 Jul 2023 07:17:18 -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=@oltmanns.dev header.s=MBO0001 header.b=k3Izz2QD; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230129AbjGQNfb (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44764 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231787AbjGQNfP (ORCPT ); Mon, 17 Jul 2023 09:35:15 -0400 Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [80.241.56.152]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DDFEB1980; Mon, 17 Jul 2023 06:34:59 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4R4NNw3Svtz9sXk; Mon, 17 Jul 2023 15:34:56 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600896; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rlTJuOBcXldwNheInskRcuqMdDaXa3wlYPUBaUVJITM=; b=k3Izz2QDMb4ZkG7IdiVrxI4xiC2CYmFKBAPQsC9m8jqjf3xoziGkIDTMs6Yv1jKAVxTW7c nxWUALor4jJ3y+1Zht/k8H7RaK8CHGpZlnfXW39dK1ak0pIiTpLOClXSyrLq3oiNp+i54a qCeCRH/t4RBpvrpo1GAsg+M0Pnd5kDXN+S8PcQY1W85RWtkHa3810Y0JWzctpE7A+l3dML EYqJWgUYsXi+QJMijoa91VI/cBFrb69m+kaRGajxhE2YvCGqHg1mvZ0uh89UDpfBdiVsDJ BJId1g7oXD8lp9Gkr3ZnlC5eb3fx0mkUYAHHHVXpRCr/QxlDwQYEHAXOmxWM0g== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:32 +0200 Subject: [PATCH v4 08/11] clk: sunxi-ng: nkm: Support finding closest rate MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-8-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=3726; i=frank@oltmanns.dev; h=from:subject:message-id; bh=QflG05ovfcYkdKjU+vIi9ERE1oD6pVxvlipjsNU5BvM=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNn4hmkcdxGSrDuWuDUm1o7lKzVeUSIiR/VN 5cUaRPKDoCJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDZwAKCRCaaaIIlErT x8EdC/wMKH2lWa2XhH6vFrr4FfyZCnlE9m584JJSfG2UVEaRUIzh7hLvIUC68KvBShSyFtZuX60 8+eq7o5e4wQh+j6J5W5yxD4t0XDxBhxBvUfqjifbm92vVi119LVinHbZ6cYOApuARW+MRqVJCGS v7E2aLzLCOfLXrbVZeQIuSGszrtZvw1dYul1GIGUyNjER0XAzHaJpF+0iQeTO0KvArCgQvXEPB6 VVczu+kl70h4jnv+gyxt/i28SkjhSzzYJ3HA8TEkGCB4iWnn7wx3WwFzQMIIHNfCrBU0vCgh9NH sRM4+V+yxXOgjd2AQTPxY9t5QETLVLqU7OTYi9+/IrFSPR+lNhvzX5Mc6+daIwExsIxRcHGoNX7 gDhe6LW4VBQKLfnV9VZ6G3GChdB6zVY27wPNg2kf5SDj/AcOxh0mLiUUD9tlPblR+lhxOjJfsqw rbvKLi5iqgg9gZ9QmVSYsFyLZuOHioFbFzexXZ62Zz2U/sBm2BIOwdLMjDtOgvhnJNcJ4= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Rspamd-Queue-Id: 4R4NNw3Svtz9sXk X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771677615147539533 X-GMAIL-MSGID: 1771677615147539533 When finding the best rate for a NKM clock, consider rates that are higher than the requested rate, if the CCU_FEATURE_CLOSEST_RATE flag is set by using the helper function ccu_is_better_rate(). Accommodate ccu_mux_helper_determine_rate to this change. Signed-off-by: Frank Oltmanns Acked-by: Maxime Ripard --- drivers/clk/sunxi-ng/ccu_mux.c | 2 +- drivers/clk/sunxi-ng/ccu_nkm.c | 18 ++++++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu_mux.c b/drivers/clk/sunxi-ng/ccu_mux.c index 1d557e323169..3ca695439620 100644 --- a/drivers/clk/sunxi-ng/ccu_mux.c +++ b/drivers/clk/sunxi-ng/ccu_mux.c @@ -139,7 +139,7 @@ int ccu_mux_helper_determine_rate(struct ccu_common *common, goto out; } - if ((req->rate - tmp_rate) < (req->rate - best_rate)) { + if (ccu_is_better_rate(common, req->rate, tmp_rate, best_rate)) { best_rate = tmp_rate; best_parent_rate = parent_rate; best_parent = parent; diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c index 793160bc2d47..5439b9351cd7 100644 --- a/drivers/clk/sunxi-ng/ccu_nkm.c +++ b/drivers/clk/sunxi-ng/ccu_nkm.c @@ -39,6 +39,7 @@ static unsigned long ccu_nkm_optimal_parent_rate(unsigned long rate, unsigned lo } static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struct _ccu_nkm *nkm, + struct ccu_common *common, unsigned long *parent, unsigned long rate) { unsigned long best_rate = 0, best_parent_rate = *parent, tmp_parent = *parent; @@ -54,10 +55,8 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struc tmp_parent = clk_hw_round_rate(phw, tmp_parent); tmp_rate = tmp_parent * _n * _k / _m; - if (tmp_rate > rate) - continue; - if ((rate - tmp_rate) < (rate - best_rate)) { + if (ccu_is_better_rate(common, rate, tmp_rate, best_rate)) { best_rate = tmp_rate; best_parent_rate = tmp_parent; best_n = _n; @@ -78,7 +77,7 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struc } static unsigned long ccu_nkm_find_best(unsigned long parent, unsigned long rate, - struct _ccu_nkm *nkm) + struct _ccu_nkm *nkm, struct ccu_common *common) { unsigned long best_rate = 0; unsigned long best_n = 0, best_k = 0, best_m = 0; @@ -91,9 +90,7 @@ static unsigned long ccu_nkm_find_best(unsigned long parent, unsigned long rate, tmp_rate = parent * _n * _k / _m; - if (tmp_rate > rate) - continue; - if ((rate - tmp_rate) < (rate - best_rate)) { + if (ccu_is_better_rate(common, rate, tmp_rate, best_rate)) { best_rate = tmp_rate; best_n = _n; best_k = _k; @@ -186,9 +183,10 @@ static unsigned long ccu_nkm_round_rate(struct ccu_mux_internal *mux, rate *= nkm->fixed_post_div; if (!clk_hw_can_set_rate_parent(&nkm->common.hw)) - rate = ccu_nkm_find_best(*parent_rate, rate, &_nkm); + rate = ccu_nkm_find_best(*parent_rate, rate, &_nkm, &nkm->common); else - rate = ccu_nkm_find_best_with_parent_adj(parent_hw, &_nkm, parent_rate, rate); + rate = ccu_nkm_find_best_with_parent_adj(parent_hw, &_nkm, &nkm->common, + parent_rate, rate); if (nkm->common.features & CCU_FEATURE_FIXED_POSTDIV) rate /= nkm->fixed_post_div; @@ -223,7 +221,7 @@ static int ccu_nkm_set_rate(struct clk_hw *hw, unsigned long rate, _nkm.min_m = 1; _nkm.max_m = nkm->m.max ?: 1 << nkm->m.width; - ccu_nkm_find_best(parent_rate, rate, &_nkm); + ccu_nkm_find_best(parent_rate, rate, &_nkm, &nkm->common); spin_lock_irqsave(nkm->common.lock, flags); From patchwork Mon Jul 17 13:34:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121347 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1127500vqt; Mon, 17 Jul 2023 06:59:11 -0700 (PDT) X-Google-Smtp-Source: APBJJlF3nTGuDnWT5NKxekkhwfWqGAq3NBIdmZTjYk5Iqt0idm00WXCQbwUOVY1LrXt1xMI0tk7y X-Received: by 2002:a2e:9a85:0:b0:2b6:bb08:91c4 with SMTP id p5-20020a2e9a85000000b002b6bb0891c4mr8674372lji.42.1689602351612; Mon, 17 Jul 2023 06:59:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689602351; cv=none; d=google.com; s=arc-20160816; b=q7UiXBwaSGMGRsSD5UEnslsv6PkJHBxlsHUy+Dkx3703w9Lm606IOJ6iXnVy7cwXHo 7n5g/3tNs9vX5hWcaS+lGFd+oDgotiazinUKeAehfm++dru0ekkMtOVlUNvMQFVBuB/y aldJDFl1yCqjBaMp/UlrE2a8UGN+tkBDdZwpqZGJ1YZwph9ViIkSc8lbG6z4RmjVYg4m XveSzDkL5MJwyv2ouPr3usuZNhTD5cjtoJmPGkzst0sgHviaAnxbcsJEn0vLQ+fvYyUq dErNXcOv9J9XwSEI40rK/EzzOCK8/JbPXtEA+G+nZQfmJmfdkus3PWAhBuyTm2meT9qR O7Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=0E2YxyVlvlZZLwdZIaLYPAboPPaw9Lb7xi7G+ICAFTw=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=Q5EDyXN2wWjdLY5uZmWsvU6rwuUFSZo+SE2N4SQCeAqh0iExRu1hi50hzDGegwJl45 464VUPL5h7QTWsy29c5ESHhsxoJ/E48IRtBjHgVj85DHbVbCrPr+C8923qfRRjlSFOwD YHXwhCYjt+o9YWWb6osvlf9MUFoYqIr70W92bFsHlV+GSzB1h7WLVUaLh7qs7tySWPxY RVfyj47im9B+ZonF0xp6Lo5YHqDPvoKf9Y2jHGaK5JGJEIlnYGB4Vng+ETjPHKdHKmv1 0TV269RDtu0NLqDS3aGVmPms5HISh12e5R1HC+DkrUEVhMa75NdzDKJ9tEtG3bcROD7b ju+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b="FyIcD/32"; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id rk9-20020a170907214900b00997ba1c6f3dsi2787704ejb.403.2023.07.17.06.58.47; Mon, 17 Jul 2023 06:59:11 -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=@oltmanns.dev header.s=MBO0001 header.b="FyIcD/32"; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230449AbjGQNfj (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43996 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231849AbjGQNfR (ORCPT ); Mon, 17 Jul 2023 09:35:17 -0400 Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [IPv6:2001:67c:2050:0:465::102]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 31EDD1989; Mon, 17 Jul 2023 06:35:02 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4R4NNy508Lz9smT; Mon, 17 Jul 2023 15:34:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600898; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0E2YxyVlvlZZLwdZIaLYPAboPPaw9Lb7xi7G+ICAFTw=; b=FyIcD/32deuQaum5goVHMwLDtKH7iTTNDwQs2ixSQ6wzkQrMz/XwePjexhMFIXXpqgcZ9Q dWIXIzFBl6cxpjSCYVLT1dPph2NwV41Cxw4A1QKCEj6l6I5pTtIqRuMbbDVwYlFwI9vabZ g/eERyKcbv+CxK0HXiihkyVB5RDcpjNrAntvyvEcL44S4vIZEv3p7H9hTWx5fProwTHcTZ ETczpQ2gLa6ExtLsbAVGBWqPPIaOmXhU0mf36VE8krmi2FlOJBp4k3MRQbWCFwLzUdZI2J efDeZ846y8em+9VTFGbftKteBWp4VPkzJbi5xnwl4u9d3x/8QNWOL1GBc+PGyA== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:33 +0200 Subject: [PATCH v4 09/11] clk: sunxi-ng: mux: Support finding closest rate MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-9-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=3394; i=frank@oltmanns.dev; h=from:subject:message-id; bh=50b4yF0rWOhBsSCHTe8QISi0j6DZgAFg9IkJskDKbcA=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNoQCABQZ+UW9bcK8zqLkpe0sHTTdGyKRvGH KV3OkdhSymJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDaAAKCRCaaaIIlErT x6ZCC/4in/1eidqlsbszdf0V5rn0nsO6q7eGNli2d1qJr783q3LJtVh9W8djbZAHchX1ogIVCLN +/U4kit5eNCvhlO5G064PsjuR0o8utyETStzULBKBNH7/ILI17gpjAPP45qHOf0B+f0dcDclmbZ y875noRynh/q323kDDC7kpUjqrOKxO3KdA6J4rDK4Y0VIIkvnr2bzD8+erU2ds9H799eENL1px6 EIKb+IOPgQmxWaFtgBhCdgVcwNnYBChGdZZDTTcFjzw/v+CPAMLkd5Wfz9WFng/x5ecrLS9C9ls jXakCjbn15YBZAoVW8g1YSCUXy2JoVH36iYPhhuPWuKfgWs1iAEjkNlJdkWRNcpo6JhZjiyg64t in0XwwIOrO8r24Uhx7zqbBJw20WbXc2a5L+FEWT/Pt4Q6stAfIuxHw6BVBVx4c41/oDJC3vcyCZ yXl+hVJnTdXXPLHil7JtedPONFlEMz9kt0rI9TTurRYFrWNZvorKmYRgoKMdKC8qZP/NM= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Rspamd-Queue-Id: 4R4NNy508Lz9smT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771676475045405586 X-GMAIL-MSGID: 1771676475045405586 When finding the best rate for a mux clock, consider rates that are higher than the requested rate when CCU_FEATURE_ROUND_CLOSEST is used. Furthermore, introduce an initialization macro that sets this flag. Signed-off-by: Frank Oltmanns Acked-by: Maxime Ripard --- drivers/clk/sunxi-ng/ccu_mux.c | 13 ++++++++++++- drivers/clk/sunxi-ng/ccu_mux.h | 38 +++++++++++++++++++++++++++----------- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu_mux.c b/drivers/clk/sunxi-ng/ccu_mux.c index 3ca695439620..5edc63b46651 100644 --- a/drivers/clk/sunxi-ng/ccu_mux.c +++ b/drivers/clk/sunxi-ng/ccu_mux.c @@ -242,6 +242,17 @@ static int ccu_mux_set_parent(struct clk_hw *hw, u8 index) return ccu_mux_helper_set_parent(&cm->common, &cm->mux, index); } +static int ccu_mux_determine_rate(struct clk_hw *hw, + struct clk_rate_request *req) +{ + struct ccu_mux *cm = hw_to_ccu_mux(hw); + + if (cm->common.features & CCU_FEATURE_CLOSEST_RATE) + return clk_mux_determine_rate_flags(hw, req, CLK_MUX_ROUND_CLOSEST); + + return clk_mux_determine_rate_flags(hw, req, 0); +} + static unsigned long ccu_mux_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { @@ -259,7 +270,7 @@ const struct clk_ops ccu_mux_ops = { .get_parent = ccu_mux_get_parent, .set_parent = ccu_mux_set_parent, - .determine_rate = __clk_mux_determine_rate, + .determine_rate = ccu_mux_determine_rate, .recalc_rate = ccu_mux_recalc_rate, }; EXPORT_SYMBOL_NS_GPL(ccu_mux_ops, SUNXI_CCU); diff --git a/drivers/clk/sunxi-ng/ccu_mux.h b/drivers/clk/sunxi-ng/ccu_mux.h index 2c1811a445b0..eb1172ebbd94 100644 --- a/drivers/clk/sunxi-ng/ccu_mux.h +++ b/drivers/clk/sunxi-ng/ccu_mux.h @@ -46,20 +46,36 @@ struct ccu_mux { struct ccu_common common; }; +#define SUNXI_CCU_MUX_TABLE_WITH_GATE_FEAT(_struct, _name, _parents, _table, \ + _reg, _shift, _width, _gate, \ + _flags, _features) \ + struct ccu_mux _struct = { \ + .enable = _gate, \ + .mux = _SUNXI_CCU_MUX_TABLE(_shift, _width, _table), \ + .common = { \ + .reg = _reg, \ + .hw.init = CLK_HW_INIT_PARENTS(_name, \ + _parents, \ + &ccu_mux_ops, \ + _flags), \ + .features = _features, \ + } \ + } + +#define SUNXI_CCU_MUX_TABLE_WITH_GATE_CLOSEST(_struct, _name, _parents, \ + _table, _reg, _shift, \ + _width, _gate, _flags) \ + SUNXI_CCU_MUX_TABLE_WITH_GATE_FEAT(_struct, _name, _parents, \ + _table, _reg, _shift, \ + _width, _gate, _flags, \ + CCU_FEATURE_CLOSEST_RATE) + #define SUNXI_CCU_MUX_TABLE_WITH_GATE(_struct, _name, _parents, _table, \ _reg, _shift, _width, _gate, \ _flags) \ - struct ccu_mux _struct = { \ - .enable = _gate, \ - .mux = _SUNXI_CCU_MUX_TABLE(_shift, _width, _table), \ - .common = { \ - .reg = _reg, \ - .hw.init = CLK_HW_INIT_PARENTS(_name, \ - _parents, \ - &ccu_mux_ops, \ - _flags), \ - } \ - } + SUNXI_CCU_MUX_TABLE_WITH_GATE_FEAT(_struct, _name, _parents, \ + _table, _reg, _shift, \ + _width, _gate, _flags, 0) #define SUNXI_CCU_MUX_WITH_GATE(_struct, _name, _parents, _reg, \ _shift, _width, _gate, _flags) \ From patchwork Mon Jul 17 13:34:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121361 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1145060vqt; Mon, 17 Jul 2023 07:24:54 -0700 (PDT) X-Google-Smtp-Source: APBJJlH/qM04lwdBM3+/hAxeQ+XDZ9Fh3gLG+FlN5dPINea8O46o6M9FtT63uQObNIjFk45mfjXI X-Received: by 2002:a05:6a20:549c:b0:134:dc23:2994 with SMTP id i28-20020a056a20549c00b00134dc232994mr3691488pzk.31.1689603894291; Mon, 17 Jul 2023 07:24:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689603894; cv=none; d=google.com; s=arc-20160816; b=Q0QWGFwXXXv+np3QAU/nkJNFvhpuxTpFIr10fmLnOZ74RzTVF/2xQy2ES7KL7pAIP5 kM7wqOuW0klirpw1aSExYkO13qZcsRJc+nxA/LJJjNRu0dfJzqGpxWPV9wW6vx8EU7Qu XuMlBBvn7nOcaLdLBNipsJwo9mCeOz6ysAQEm2DEEt0xwyZP0NJk7mytVg0xD/YDWUTt zBEEiiiADoX/QEp6nN56Ypi+3+n8wfdspvSdrsC7GpsoURw2/MfPSHV96dWpCVX4hFzM yMQsgHhOYzrPWqO3ZSMHzD/Stj4GdsD4Gjye8V8JQQvARpncef2YSIze9Ps3r5MmGkJf iL3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=4/3jUW02TnjdYtDtyTpuIK2UaIeAHqfX2p8U1BU0MxI=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=S+Kkf1bytZusVs5pPfEoNPTKkJjz/h/h1jAMdKmAy/gQybvYSWo2kwFdWj+nuDra4e sTzEHGD99mwpkbQ1csUN2gTKs8tD/F/Ll+AOZ/Kr6Glu3PiRrma8Xrs48ctmgumqYOR5 aNzaaI0UQSwbd7rzoG/ehwy+baXtAVcOu2cGcHbtSRvY7DfX6R0y8puq/IsdysXD/oF8 UGH+aYNiB6WVmYetIdhkNabDV6RhdugdSb83S8fJJPUegvFy41YDX5Eknn4zsQo8dHaB GMolUXf8vRwaQUmrbtGzx+o64gO6ribzSStsZ5go/ELoEJkPSILem/G68dZZISHiVFm5 hcjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=tOkN5pKO; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ds13-20020a056a004acd00b0067b2f265d2asi11540792pfb.262.2023.07.17.07.24.41; Mon, 17 Jul 2023 07:24:54 -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=@oltmanns.dev header.s=MBO0001 header.b=tOkN5pKO; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229765AbjGQNfn (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44818 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231500AbjGQNfR (ORCPT ); Mon, 17 Jul 2023 09:35:17 -0400 Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [IPv6:2001:67c:2050:0:465::101]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 55DF319A; Mon, 17 Jul 2023 06:35:03 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [10.196.197.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4R4NP01KS4z9snf; Mon, 17 Jul 2023 15:35:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600900; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=4/3jUW02TnjdYtDtyTpuIK2UaIeAHqfX2p8U1BU0MxI=; b=tOkN5pKOx/QG66krLStl+PVvmmizHhe6WeGPOaHcsKbRx0zyT9QEL9xH5fbcBgmndHgaSl jEwpeR5witjvILRLvw+wXqCwiyUPDZQfWpfvZJouX35rxgZop454TQGi2xEbTy1oSFebF3 LwmvMkuCnzMK4FLu5vUYJy7fyid1jWRUoBgi72iGhNLLpYu6p8LUXoLn006oXWb7eIVcav XvQSWS8bGD6AX3j1aL9yUJm5JzvijZo6vqLYJ+Qh6NBVnsxZERBQbqYlNJ6/18+8uPDmMf h7Qml49y2dVuslyPbD2qj5Niz2ICPX9M+/gSUJrrSO8Q8AO3MWqsaLrK+93MGg== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:34 +0200 Subject: [PATCH v4 10/11] clk: sunxi-ng: div: Support finding closest rate MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-10-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=2120; i=frank@oltmanns.dev; h=from:subject:message-id; bh=BCjq/TvLd7Vyg2yzlkEqCcyLfH3Gamqs91hzh7NVMYE=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNoT0Lb/4aaPfEOSUZsD95gYYYEFGS8osezM eZygrPXQfWJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDaAAKCRCaaaIIlErT x3jmC/9sXIxogKJxgU6bUUqiFwW1lk3xSpv3r/WTMY+DG0XznivmpDmsp9Sm5kyboIMsiqO0w6W mfp86U/AfzP96aY1SdfyF6ELHDsHc3mAt6qrbcx3Nueiu8OQsfuneHb2l3TANOjI5Iilh0jeUoi 941jnUi8UgAIBo/iEJmRkEAkAe04OnIg/pmfFiFN45PLOkNw/FmERTDHzbbaQpZEQ0RJcurxQuc x5b9yE38lNteWYtAsMFZ2h5pAzhVzLN80EtNbQTa3CWkDWV1GN29zdbUa25Ptc9agSFo9emHgwy TKYFEgYIqs35pYJ1tCp+Dr0o4JD7LUwsAnev2DPweEYNqsNRgGw7uCN9uL8VT2VqehJCoR2hcmO mul8vBYdlSA8sOxfRnhOK3aZAM8a8CgZwvOojoVElE0s/JWCUB3g6NObldSuhRlSERph1TIpdSV 75uMLcAPwkgbw7a6w8AWvW7heRPRDpes/+QZYAWl3mFrjNxGKvYkvMHr7N8po0YGGF3fQ= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771678093464719497 X-GMAIL-MSGID: 1771678093464719497 Add initalization macros for divisor clocks with mux (SUNXI_CCU_M_WITH_MUX) to support finding the closest rate. This clock type requires the appropriate flags to be set in the .common structure (for the mux part of the clock) and the .div part. Acked-by: Maxime Ripard Signed-off-by: Frank Oltmanns --- drivers/clk/sunxi-ng/ccu_div.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/drivers/clk/sunxi-ng/ccu_div.h b/drivers/clk/sunxi-ng/ccu_div.h index 948e2b0c0c3b..90d49ee8e0cc 100644 --- a/drivers/clk/sunxi-ng/ccu_div.h +++ b/drivers/clk/sunxi-ng/ccu_div.h @@ -143,6 +143,26 @@ struct ccu_div { }, \ } +#define SUNXI_CCU_M_WITH_MUX_TABLE_GATE_CLOSEST(_struct, _name, \ + _parents, _table, \ + _reg, \ + _mshift, _mwidth, \ + _muxshift, _muxwidth, \ + _gate, _flags) \ + struct ccu_div _struct = { \ + .enable = _gate, \ + .div = _SUNXI_CCU_DIV_FLAGS(_mshift, _mwidth, CLK_DIVIDER_ROUND_CLOSEST), \ + .mux = _SUNXI_CCU_MUX_TABLE(_muxshift, _muxwidth, _table), \ + .common = { \ + .reg = _reg, \ + .hw.init = CLK_HW_INIT_PARENTS(_name, \ + _parents, \ + &ccu_div_ops, \ + _flags), \ + .features = CCU_FEATURE_CLOSEST_RATE, \ + }, \ + } + #define SUNXI_CCU_M_WITH_MUX_GATE(_struct, _name, _parents, _reg, \ _mshift, _mwidth, _muxshift, _muxwidth, \ _gate, _flags) \ @@ -152,6 +172,16 @@ struct ccu_div { _muxshift, _muxwidth, \ _gate, _flags) +#define SUNXI_CCU_M_WITH_MUX_GATE_CLOSEST(_struct, _name, _parents, \ + _reg, _mshift, _mwidth, \ + _muxshift, _muxwidth, \ + _gate, _flags) \ + SUNXI_CCU_M_WITH_MUX_TABLE_GATE_CLOSEST(_struct, _name, \ + _parents, NULL, \ + _reg, _mshift, _mwidth, \ + _muxshift, _muxwidth, \ + _gate, _flags) + #define SUNXI_CCU_M_WITH_MUX(_struct, _name, _parents, _reg, \ _mshift, _mwidth, _muxshift, _muxwidth, \ _flags) \ From patchwork Mon Jul 17 13:34:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frank Oltmanns X-Patchwork-Id: 121346 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp1127421vqt; Mon, 17 Jul 2023 06:59:04 -0700 (PDT) X-Google-Smtp-Source: APBJJlFW+YrgM6cW7j27q5QKGao7JpU0RlgBxZmv1lj7Uu0vfzR9ikL2PwopMhI06++mQgeHb1yi X-Received: by 2002:a17:90b:2284:b0:263:661e:e0dc with SMTP id kx4-20020a17090b228400b00263661ee0dcmr10218567pjb.25.1689602344326; Mon, 17 Jul 2023 06:59:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689602344; cv=none; d=google.com; s=arc-20160816; b=YUoBmCyeK66WNdI4tzX/8khhwKudwtkyO+5DfuGHun2R/29wBx15NUD3lA8l95iGm2 ByZF03xa3rfnVII8qzs912+DVxljYAs0P01YOFUa0B9mxKg8myormuwYjpmVmZ7sLOuj duqLJdvzJUF6VqJ4fipvu9EpDrSD2LELwjZMeMElpzKZHwwEcmM1YeCZ5ZiOB+gLrWTZ tUj2mHzUHzgd4Be17sVpUMfdzDiEE4Stxs5HWPvrT0ws/rIPce6ctfnjKUlV2UySQOie yqqZQ4E2jDkRwzj6MIjxBK91jKtwTfdUEkCQs05qYSEWcg2GvTyJLSOBbqqsmuhBjRBs GPVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=OJ8q9pTL81Tc/TWJNsV0MmsER+aXTbba/DFvUTK1urY=; fh=M9yx7jU6gfL0XqpiqAwzTAv2FmAT4GrM9Su5qEJ6kqE=; b=pXtsLloqQnI0IT3x+FCjdAEJj700Ahg2y3FLmt3+p8uGKl225zs1lyb3FmPPqNBOzt Q23FkTZDxUfbWXvKyX3SGu1sBgUzBAREGF12q8hnwBGywVvbcOuYm6uRcCGJU/rT1d4m CZ7PeH9QfUmY+nA6KSTZvWjX0cR0l9r1YEEi7086h4ZSA6ycvTe611KzHT8Tx8a5mVnT 4KFXBK9UOXiYZ03uawoh/yUU8nuSf8lGGbvV5+VO12P0qx2gFtHNGtbq7L5TJ6ggXbRV Ez2WQibeDd6DkOWgpVwCZSQ0IZr2bHRmMct2CJSCVHUnn0Smk2jynDIqgZrPpg3y4PP6 r+Gw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oltmanns.dev header.s=MBO0001 header.b=RyjvvacV; 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=oltmanns.dev Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s10-20020a17090b070a00b00262fa96d9e6si5680185pjz.142.2023.07.17.06.58.51; Mon, 17 Jul 2023 06:59:04 -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=@oltmanns.dev header.s=MBO0001 header.b=RyjvvacV; 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=oltmanns.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231924AbjGQNfp (ORCPT + 99 others); Mon, 17 Jul 2023 09:35:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44156 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231128AbjGQNfU (ORCPT ); Mon, 17 Jul 2023 09:35:20 -0400 Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [IPv6:2001:67c:2050:0:465::102]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24F84E49; Mon, 17 Jul 2023 06:35:05 -0700 (PDT) Received: from smtp202.mailbox.org (smtp202.mailbox.org [IPv6:2001:67c:2050:b231:465::202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4R4NP15rWvz9sb3; Mon, 17 Jul 2023 15:35:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oltmanns.dev; s=MBO0001; t=1689600901; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OJ8q9pTL81Tc/TWJNsV0MmsER+aXTbba/DFvUTK1urY=; b=RyjvvacVElds1v9SVihgtHTAJ5WZcV/ma4doRQAdtPycHMb7YtW2zzXwwOjyvtuXpKsxK8 3WJFAiNKmuI4uMe+WXlvhqyLDjY2Qp3uDY078xIcH1BiLphCJV7Qzu6zaaFJ1my07/Fxt1 TE8PXd6bEiJ6a12JI/p49m7qhqm3cfaerwfMAHapnIz6Oxg/zhuEN/lQ1H27SBYWqd/WaG EvWks4/LemYtRLBjbkC2ILcEiqeG0lWhcyqG/iMCc8eT5KL8XbohPESoAXBADTgoqyCjlm NK+5iz+rrG6CmlrzsFS/rvIVARXRzV3dH9Rfog4naZsFmFZHWfpwN15X1Xp2aA== From: Frank Oltmanns Date: Mon, 17 Jul 2023 15:34:35 +0200 Subject: [PATCH v4 11/11] clk: sunxi-ng: a64: select closest rate for pll-video0 MIME-Version: 1.0 Message-Id: <20230717-pll-mipi_set_rate_parent-v4-11-04acf1d39765@oltmanns.dev> References: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> In-Reply-To: <20230717-pll-mipi_set_rate_parent-v4-0-04acf1d39765@oltmanns.dev> To: Maxime Ripard , Michael Turquette , Stephen Boyd , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Andre Przywara , Roman Beranek Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, Frank Oltmanns X-Developer-Signature: v=1; a=openpgp-sha256; l=4299; i=frank@oltmanns.dev; h=from:subject:message-id; bh=jbnrLs6Wz/DZblxpFGtXN3DOQE/Va3X1a9GFPqxAmdg=; b=owEB7QES/pANAwAIAZppogiUStPHAcsmYgBktUNoFZsC7quYPm3VlK7cJ6Gb3ocsdztxFbMi+ kj/FSNkNECJAbMEAAEIAB0WIQQC/SV7f5DmuaVET5aaaaIIlErTxwUCZLVDaAAKCRCaaaIIlErT x5MzC/901SBdHj/WRYrs67Egfj+3aeeouvEYMGGdbS2AdxoneAoPP09JkPwjoygvwxHN+j6Z6WT DiLG61Wt4z+IId7IbXdPGPjpxd9RvPVk7gsdb1JzmNMXCbV10iEIcgqmlOCMwVxaKiCqTfTcny/ jU7TIXn8aseG01l9lebjncm2Ds/tRT1my90mh46LKyNnWKpXWXixx/BGG0Qq50vk5ipRteeM1vq QM/7DK/lfjp83fsywR4GaIhqYvRbhgXvci4JSgnqnHl/BR8qpiH/zSViv11aSd+aIFIDhUAT1eF FvYqTnWXWzm+a6CxlaXGvEtaGBI/Ax6lKf+KMSX8W1lD2Kuvu2cVMXVuK4E4N0M8YQwPYiMreNJ WSnSyPGKAi6izQVzMLSInHNJ2MbfEf4SyTXOLpaM6ZLT0MidPPAWyjvvRRJ3ZttnbqiigTwQV/Z tMZSiPshYbYW+uTHSNB3WV6Mh4iKE8U2u8ddQNYSnlI9Kul1Tf4zEO7crsoRKhfC+ctGA= X-Developer-Key: i=frank@oltmanns.dev; a=openpgp; fpr=02FD257B7F90E6B9A5444F969A69A208944AD3C7 X-Rspamd-Queue-Id: 4R4NP15rWvz9sb3 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, 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: INBOX X-GMAIL-THRID: 1771676467886414687 X-GMAIL-MSGID: 1771676467886414687 Selecting the closest rate for pll-video0 instead of the closest rate that is less than the requested rate has no downside for this clock, while allowing for selecting a more suitable rate, e.g. for the connected panels. Furthermore, the algorithm that sets an NKM clock's parent benefits from the closest rate. Without it, the NKM clock's rate might drift away from the requested rate in the multiple successive calls to ccu_nkm_determine_rate that the clk framework performs when setting a clock rate. Therefore, configure pll-video0 and, in consequence, all of its descendents to select the closest rate. Signed-off-by: Frank Oltmanns Acked-by: Maxime Ripard --- drivers/clk/sunxi-ng/ccu-sun50i-a64.c | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c index a139a5c438d4..73c84d20f3ee 100644 --- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c @@ -68,7 +68,7 @@ static SUNXI_CCU_NM_WITH_SDM_GATE_LOCK(pll_audio_base_clk, "pll-audio-base", BIT(28), /* lock */ CLK_SET_RATE_UNGATE); -static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX(pll_video0_clk, "pll-video0", +static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN_MAX_CLOSEST(pll_video0_clk, "pll-video0", "osc24M", 0x010, 192000000, /* Minimum rate */ 1008000000, /* Maximum rate */ @@ -181,6 +181,7 @@ static struct ccu_nkm pll_mipi_clk = { .hw.init = CLK_HW_INIT("pll-mipi", "pll-video0", &ccu_nkm_ops, CLK_SET_RATE_UNGATE | CLK_SET_RATE_PARENT), + .features = CCU_FEATURE_CLOSEST_RATE, }, }; @@ -531,24 +532,18 @@ static SUNXI_CCU_M_WITH_MUX_GATE(de_clk, "de", de_parents, static const char * const tcon0_parents[] = { "pll-mipi", "pll-video0-2x" }; static const u8 tcon0_table[] = { 0, 2, }; -static SUNXI_CCU_MUX_TABLE_WITH_GATE(tcon0_clk, "tcon0", tcon0_parents, +static SUNXI_CCU_MUX_TABLE_WITH_GATE_CLOSEST(tcon0_clk, "tcon0", tcon0_parents, tcon0_table, 0x118, 24, 3, BIT(31), CLK_SET_RATE_PARENT); static const char * const tcon1_parents[] = { "pll-video0", "pll-video1" }; static const u8 tcon1_table[] = { 0, 2, }; -static struct ccu_div tcon1_clk = { - .enable = BIT(31), - .div = _SUNXI_CCU_DIV(0, 4), - .mux = _SUNXI_CCU_MUX_TABLE(24, 2, tcon1_table), - .common = { - .reg = 0x11c, - .hw.init = CLK_HW_INIT_PARENTS("tcon1", - tcon1_parents, - &ccu_div_ops, - CLK_SET_RATE_PARENT), - }, -}; +static SUNXI_CCU_M_WITH_MUX_TABLE_GATE_CLOSEST(tcon1_clk, "tcon1", tcon1_parents, + tcon1_table, 0x11c, + 0, 4, /* M */ + 24, 2, /* mux */ + BIT(31), /* gate */ + CLK_SET_RATE_PARENT); static const char * const deinterlace_parents[] = { "pll-periph0", "pll-periph1" }; static SUNXI_CCU_M_WITH_MUX_GATE(deinterlace_clk, "deinterlace", deinterlace_parents, @@ -578,8 +573,8 @@ static SUNXI_CCU_GATE(avs_clk, "avs", "osc24M", 0x144, BIT(31), 0); static const char * const hdmi_parents[] = { "pll-video0", "pll-video1" }; -static SUNXI_CCU_M_WITH_MUX_GATE(hdmi_clk, "hdmi", hdmi_parents, - 0x150, 0, 4, 24, 2, BIT(31), CLK_SET_RATE_PARENT); +static SUNXI_CCU_M_WITH_MUX_GATE_CLOSEST(hdmi_clk, "hdmi", hdmi_parents, + 0x150, 0, 4, 24, 2, BIT(31), CLK_SET_RATE_PARENT); static SUNXI_CCU_GATE(hdmi_ddc_clk, "hdmi-ddc", "osc24M", 0x154, BIT(31), 0); @@ -591,9 +586,9 @@ static SUNXI_CCU_M_WITH_MUX_GATE(mbus_clk, "mbus", mbus_parents, static const char * const dsi_dphy_parents[] = { "pll-video0", "pll-periph0" }; static const u8 dsi_dphy_table[] = { 0, 2, }; -static SUNXI_CCU_M_WITH_MUX_TABLE_GATE(dsi_dphy_clk, "dsi-dphy", - dsi_dphy_parents, dsi_dphy_table, - 0x168, 0, 4, 8, 2, BIT(15), CLK_SET_RATE_PARENT); +static SUNXI_CCU_M_WITH_MUX_TABLE_GATE_CLOSEST(dsi_dphy_clk, "dsi-dphy", + dsi_dphy_parents, dsi_dphy_table, + 0x168, 0, 4, 8, 2, BIT(15), CLK_SET_RATE_PARENT); static SUNXI_CCU_M_WITH_GATE(gpu_clk, "gpu", "pll-gpu", 0x1a0, 0, 3, BIT(31), CLK_SET_RATE_PARENT);