Received: by 10.192.165.148 with SMTP id m20csp1758828imm; Thu, 26 Apr 2018 01:41:19 -0700 (PDT) X-Google-Smtp-Source: AIpwx48lclNcRRwYiLg3NDlb3NNOMZmD/2iM7rPRipBl6CLxRnBEg5/KmQl+PZk7mbBlhkvHx+Ar X-Received: by 2002:a17:902:aa90:: with SMTP id d16-v6mr32706891plr.189.1524732079654; Thu, 26 Apr 2018 01:41:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524732079; cv=none; d=google.com; s=arc-20160816; b=h8fubv/eqowhdx3mzvOvCZIq6JMA7awIAngo/FsD1BQ6wTp0TfbcmLcYv/hUvpxdYe bwtK7l1symgvWk6KuvMF0ZuRXFPGlTQOqSO9X+ebwKeLYuNPoAAdFUob069HQtbWC3pg GTT2FlxNHd8qWbq3wnC6dguQ444GBwkj6AQiZ7QIU0rSBRK33/0Laofolr5UBo9vRb78 s36RE1hBS/98RF4fbj2PowxXI++ugNMWeGkk53xMfB4Xs3utihbPNXzv6DnVUFtm3d6Q uglKYHelU8FH2Kl9NRw/VWBcT8mVnWkFly7vUD/mJw5J8U2+jj+FosIP/qjBNTlrf2CC 0wRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:organization:autocrypt:openpgp:from:references:cc:to :subject:dkim-signature:arc-authentication-results; bh=aZn+Kret8OLMdqhIVCIE5Gql7IJfOLhdk+XfilC0CUM=; b=xpGCKpFNX4rAbIVN+oGt9pgxirm7bOg0nJFwdrjE3YwiNDx5+6QJqlrC9dV5IaF9Vg iG82fMOMqs0cwLwNAMNyxaQ6BOwbcKKqMIwgiMuV2k6JVh3voJlrX+zxPQC8eM4bNMLV bmyZEzuoDXlEeCuzwXUucx0l0l1uUfA/2XV9+SScS1Bhnb9RqUxzQ1QUrZTF0laNj1t8 DV3Ln8PUIYEK2DegGTZmjc8dcff9qMtwJFAeGo2vOAIcfuqOyjBRvOPXawI9tkWEF325 FYN5/llChgLm/J3hR0MlyJpJJWTbZITUwK/85bilrKdyfAjvKiM7+Mapmxsumu499doY xoAA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=VPfBIJkA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k90si12079106pfh.50.2018.04.26.01.41.05; Thu, 26 Apr 2018 01:41:19 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=VPfBIJkA; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753879AbeDZIkE (ORCPT + 99 others); Thu, 26 Apr 2018 04:40:04 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:39091 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753256AbeDZIj7 (ORCPT ); Thu, 26 Apr 2018 04:39:59 -0400 Received: by mail-wm0-f65.google.com with SMTP id b21so11613752wme.4 for ; Thu, 26 Apr 2018 01:39:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=subject:to:cc:references:from:openpgp:autocrypt:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=aZn+Kret8OLMdqhIVCIE5Gql7IJfOLhdk+XfilC0CUM=; b=VPfBIJkAwNCvRvjUIlth05i+3zphlX4mk+VcA43sRvzZSkDahJFm8+4yQymLZWjlhp ObrtwH1AMYtDEMg1ElvOXZ+UKAHE65WtcKYBc6E/GcF5SksIyLYd0VzJFv7AUnu/3GYk s7OW7Eiz9eDxN8/UNiu3MdtKC54zky7LJBmzp3tIHLp18MlGe03Mf3NmKVoF80xzUubg MRZ5RRvqICnjcVqCWTVwyeRaErBzpL3OnE/UdCz2TtoJ1TWJ1AMeK8wOh48jHLUwJcaU uoxfJakA/O2lDrmu4MIBgqsB72qYZOptxNzq2FLQffQI3Efw1Jdk3xBmv077JhlWz8TH E2vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:openpgp:autocrypt :organization:message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=aZn+Kret8OLMdqhIVCIE5Gql7IJfOLhdk+XfilC0CUM=; b=blmWTirLkin2DRDl+RaAXGgqZsY3s6X3yVtn9JMLRUcqQ0ObSO2RBhEB4jR7Z4MiNE 142B++M39Lummdzyt9PXuL3lWVeWi3gT2XD4q/EPlmTvrB3I+Iw6dJDGnWlIM/Rjknz/ dQzP+BwJ3nWA/UOQTfpyxwiGA2QthbFUiycqisCmoSPwSMYy9aEMOTNISmvY4QPn4/4h qQxDaqSeaVkkVVFzV3b/y3c+Ht43zlVfKrJkWYwLSPOW7k6husDXainykBJzHbK+Ec18 nTNjgNDxGYnBGvyVa5Fgejel7bhvmwcUsfrY4NnF7JsIQqk5+6J9w3wOOBbHOSOU7UQ3 zYSw== X-Gm-Message-State: ALQs6tCMXP4efvCcO63X4CJmS7kiTE/2Yj66Tmk8f+wmYGaPTHpySZBi utL2cEzWYh+5pJqY8veY/QGP2/+epzQ= X-Received: by 10.28.122.3 with SMTP id v3mr16429941wmc.81.1524731997961; Thu, 26 Apr 2018 01:39:57 -0700 (PDT) Received: from [10.1.2.12] ([90.63.244.31]) by smtp.gmail.com with ESMTPSA id x70sm17723582wma.9.2018.04.26.01.39.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Apr 2018 01:39:57 -0700 (PDT) Subject: Re: [PATCH 1/2] clk: meson: mpll: add round closest support To: Jerome Brunet , Kevin Hilman Cc: linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org References: <20180420095603.29964-1-jbrunet@baylibre.com> <20180420095603.29964-2-jbrunet@baylibre.com> From: Neil Armstrong Openpgp: preference=signencrypt Autocrypt: addr=narmstrong@baylibre.com; prefer-encrypt=mutual; keydata= xsBNBE1ZBs8BCAD78xVLsXPwV/2qQx2FaO/7mhWL0Qodw8UcQJnkrWmgTFRobtTWxuRx8WWP GTjuhvbleoQ5Cxjr+v+1ARGCH46MxFP5DwauzPekwJUD5QKZlaw/bURTLmS2id5wWi3lqVH4 BVF2WzvGyyeV1o4RTCYDnZ9VLLylJ9bneEaIs/7cjCEbipGGFlfIML3sfqnIvMAxIMZrvcl9 qPV2k+KQ7q+aXavU5W+yLNn7QtXUB530Zlk/d2ETgzQ5FLYYnUDAaRl+8JUTjc0CNOTpCeik 80TZcE6f8M76Xa6yU8VcNko94Ck7iB4vj70q76P/J7kt98hklrr85/3NU3oti3nrIHmHABEB AAHNKE5laWwgQXJtc3Ryb25nIDxuYXJtc3Ryb25nQGJheWxpYnJlLmNvbT7CwHsEEwEKACUC GyMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheABQJXDO2CAhkBAAoJEBaat7Gkz/iubGIH/iyk RqvgB62oKOFlgOTYCMkYpm2aAOZZLf6VKHKc7DoVwuUkjHfIRXdslbrxi4pk5VKU6ZP9AKsN NtMZntB8WrBTtkAZfZbTF7850uwd3eU5cN/7N1Q6g0JQihE7w4GlIkEpQ8vwSg5W7hkx3yQ6 2YzrUZh/b7QThXbNZ7xOeSEms014QXazx8+txR7jrGF3dYxBsCkotO/8DNtZ1R+aUvRfpKg5 ZgABTC0LmAQnuUUf2PHcKFAHZo5KrdO+tyfL+LgTUXIXkK+tenkLsAJ0cagz1EZ5gntuheLD YJuzS4zN+1Asmb9kVKxhjSQOcIh6g2tw7vaYJgL/OzJtZi6JlIXOwE0ETVkGzwEIALyKDN/O GURaHBVzwjgYq+ZtifvekdrSNl8TIDH8g1xicBYpQTbPn6bbSZbdvfeQPNCcD4/EhXZuhQXM coJsQQQnO4vwVULmPGgtGf8PVc7dxKOeta+qUh6+SRh3vIcAUFHDT3f/Zdspz+e2E0hPV2hi SvICLk11qO6cyJE13zeNFoeY3ggrKY+IzbFomIZY4yG6xI99NIPEVE9lNBXBKIlewIyVlkOa YvJWSV+p5gdJXOvScNN1epm5YHmf9aE2ZjnqZGoMMtsyw18YoX9BqMFInxqYQQ3j/HpVgTSv mo5ea5qQDDUaCsaTf8UeDcwYOtgI8iL4oHcsGtUXoUk33HEAEQEAAcLAXwQYAQIACQUCTVkG zwIbDAAKCRAWmrexpM/4rrXiB/sGbkQ6itMrAIfnM7IbRuiSZS1unlySUVYu3SD6YBYnNi3G 5EpbwfBNuT3H8//rVvtOFK4OD8cRYkxXRQmTvqa33eDIHu/zr1HMKErm+2SD6PO9umRef8V8 2o2oaCLvf4WeIssFjwB0b6a12opuRP7yo3E3gTCSKmbUuLv1CtxKQF+fUV1cVaTPMyT25Od+ RC1K+iOR0F54oUJvJeq7fUzbn/KdlhA8XPGzwGRy4zcsPWvwnXgfe5tk680fEKZVwOZKIEuJ C3v+/yZpQzDvGYJvbyix0lHnrCzq43WefRHI5XTTQbM0WUIBIcGmq38+OgUsMYu4NzLu7uZF Acmp6h8g Organization: Baylibre Message-ID: Date: Thu, 26 Apr 2018 10:39:56 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180420095603.29964-2-jbrunet@baylibre.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 20/04/2018 11:56, Jerome Brunet wrote: > Allow the mpll driver to round the requested rate up if > CLK_MESON_MPLL_ROUND_CLOSEST is set and it provides a rate closer to the > requested rate. > > Signed-off-by: Jerome Brunet > --- > drivers/clk/meson/clk-mpll.c | 25 ++++++++++++++++++++----- > drivers/clk/meson/clkc.h | 3 +++ > 2 files changed, 23 insertions(+), 5 deletions(-) > > diff --git a/drivers/clk/meson/clk-mpll.c b/drivers/clk/meson/clk-mpll.c > index 0df1227b65b3..4e5283eb892a 100644 > --- a/drivers/clk/meson/clk-mpll.c > +++ b/drivers/clk/meson/clk-mpll.c > @@ -89,10 +89,23 @@ static long rate_from_params(unsigned long parent_rate, > static void params_from_rate(unsigned long requested_rate, > unsigned long parent_rate, > unsigned int *sdm, > - unsigned int *n2) > + unsigned int *n2, > + u8 flags) > { > uint64_t div = parent_rate; > - unsigned long rem = do_div(div, requested_rate); > + uint64_t frac = do_div(div, requested_rate); > + unsigned long rem; > + > + frac *= SDM_DEN; > + rem = do_div(frac, requested_rate); > + > + /* Should we round up ? */ > + if (flags & CLK_MESON_MPLL_ROUND_CLOSEST > + && rem > (requested_rate / 2)) { > + frac = (frac + 1) % SDM_DEN; > + if (frac == 0) > + div += 1; > + } > > if (div < N2_MIN) { > *n2 = N2_MIN; > @@ -102,7 +115,7 @@ static void params_from_rate(unsigned long requested_rate, > *sdm = SDM_DEN - 1; > } else { > *n2 = div; > - *sdm = DIV_ROUND_UP_ULL((u64)rem * SDM_DEN, requested_rate); > + *sdm = frac; > } > } > > @@ -125,9 +138,11 @@ static long mpll_round_rate(struct clk_hw *hw, > unsigned long rate, > unsigned long *parent_rate) > { > + struct clk_regmap *clk = to_clk_regmap(hw); > + struct meson_clk_mpll_data *mpll = meson_clk_mpll_data(clk); > unsigned int sdm, n2; > > - params_from_rate(rate, *parent_rate, &sdm, &n2); > + params_from_rate(rate, *parent_rate, &sdm, &n2, mpll->flags); > return rate_from_params(*parent_rate, sdm, n2); > } > > @@ -140,7 +155,7 @@ static int mpll_set_rate(struct clk_hw *hw, > unsigned int sdm, n2; > unsigned long flags = 0; > > - params_from_rate(rate, parent_rate, &sdm, &n2); > + params_from_rate(rate, parent_rate, &sdm, &n2, mpll->flags); > > if (mpll->lock) > spin_lock_irqsave(mpll->lock, flags); > diff --git a/drivers/clk/meson/clkc.h b/drivers/clk/meson/clkc.h > index 8fe73c4edca8..8cc265cd3d2b 100644 > --- a/drivers/clk/meson/clkc.h > +++ b/drivers/clk/meson/clkc.h > @@ -97,8 +97,11 @@ struct meson_clk_mpll_data { > struct parm ssen; > struct parm misc; > spinlock_t *lock; > + u8 flags; > }; > > +#define CLK_MESON_MPLL_ROUND_CLOSEST BIT(0) > + > struct meson_clk_audio_div_data { > struct parm div; > u8 flags; > Acked-by: Neil Armstrong