Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp832314imm; Tue, 15 May 2018 09:47:54 -0700 (PDT) X-Google-Smtp-Source: AB8JxZonS235jlXr0SErKjFLSLurMcBFABxnwTs5g7eU8kd/jZ6VaKMTG1UNFv3RujobU4gHRVCC X-Received: by 2002:a17:902:14cb:: with SMTP id y11-v6mr14899026plg.229.1526402874601; Tue, 15 May 2018 09:47:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526402874; cv=none; d=google.com; s=arc-20160816; b=AedIjydtJdweLWBz9X0ndPj+ARoREOXb8iekYnDyydrEO8NXYA/8gbM+KLFGSBlSJI 748s2te3PM1nix+1+QsECFgSlUzEGq8HlqMusaq9cujq8x/EdimeXqpUP9z//rHLes7b sdhOS8xFX/aCDTQZmzKGTDgMgWpsrQaAfQUTB4SS0ePQPN9rfCzuyYjjk+yUFqr/mVcg ZOeyuH0MWwK71QKRQ7n8xLoJ/TszW4VWMXNQyQgzjUhy9fnqm2BU75C+fMpCOATRM0dU IqvaiT0DJVgA7gaWVbyPEd9pUMQ9PEq3SgeAB+MdV9fqnA7HLPwqNeWre43HG5D/cV8F MZ5w== 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=pjMDl2iF2MvfhLe6MzwhG99mZIV2ene36R8BxZEfrJw=; b=TOnsSOEOHdIAfuAofXxu+OgozaOd5vfU/ThVTL1YGltH8bz/9HCYhUjR9m33NF5hOd hnBwfFziMlp0HG8ScwAidr3jKOOZXNuhXdmMrOgdZgRxC77nqPvYUXT+KDX8FhnMdNIj alWG8Eehqj4/q0RdHBiUXMOydQWbKGS2+VQ27YKF536apOYC7DEZOTatZ/ckYNHBEQ4+ fU3IX5rON4BS2QdSEWFJQQYwaTCW4q3gyaTU7tKH3C1arzHlRAVETI6YP0g3gbTChkxh 8iXtPHNQ5dhjwKE3G9a1XNuKFDmxn4lP6YGOAwQu9/7iE22qVzkDh87QhCTQkIFd7erk N1BA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=zhUm5NG+; 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 z25-v6si290453pge.483.2018.05.15.09.47.26; Tue, 15 May 2018 09:47:54 -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=zhUm5NG+; 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 S1754230AbeEOQpx (ORCPT + 99 others); Tue, 15 May 2018 12:45:53 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:39958 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754208AbeEOQpv (ORCPT ); Tue, 15 May 2018 12:45:51 -0400 Received: by mail-qt0-f196.google.com with SMTP id h2-v6so1127298qtp.7 for ; Tue, 15 May 2018 09:45:51 -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=pjMDl2iF2MvfhLe6MzwhG99mZIV2ene36R8BxZEfrJw=; b=zhUm5NG+cxBjYw9btOk1ZceQt41bz6YdjzbgxnyXIM5LC6OfTTmH2X0461IcpKPsqF N2FVlPJnuwz7x6dx5zPD+S1ALzP14O3RqEjSYCeXjHg13a3dYhkYTB2d+VJbiECIQcfy BrkCIs1ouRHERSlbPyQwrCeu793V9ZOMVnVWQiZalCgoWZFi3yXCZmu60I5XV3cpq8Xk Xq2TdyX/7fQMZ1jA1R0oBQBQgbK0PSEcnczhJmlYSJS3V/5VZHY+v7ULKiptLeeo8Ac+ ShkTM1taeVfm32JEBgEF3Bf1AZY0Yu/QERvSBw/0ZXuvDNalWqBCXRO1Vj4fS2JfgV3Z 4Law== 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=pjMDl2iF2MvfhLe6MzwhG99mZIV2ene36R8BxZEfrJw=; b=HYFQyGHoWgRGaaO6D0TuFEGuIINzW/V6/NB8pqFpZlpK/UgCMzXhULpPaGny5zLsVI ORJApobpsgyUuXRovUOdlvR7T/7izRHwfMOGgQKx4ZttAA+WFv70SXuVDFRRZCNzISNA 72ZDeuEkXtbLknLGDQd2KwLPgzfRphcxaeWC+YpI9bgOWf3XZydQaRoZoJNrEWTLCNPN xM+JFehqo4CY2Oz0t7dKLm5QqyTl2ov5gRtumMxqwrksxViVTLYRpH0jlmXvF9fYh+6b 277Me/H1+7RP487fBlILkEcHDY7i0DQ8GtEinh5CnO5sGK+kFhIFA+ivnEhdwlu8s/Ct fUEA== X-Gm-Message-State: ALKqPwdUFbNKsFOXMHTdc7F6xv61IyzFxHHlXhlkM87s2l0Ywp+uybiA 5yRPgGqAc1R2zWWwlbN96U+CmMCIngs= X-Received: by 2002:ac8:18c8:: with SMTP id o8-v6mr13636095qtk.400.1526402750330; Tue, 15 May 2018 09:45:50 -0700 (PDT) Received: from ?IPv6:2620:0:1043:fd00:748b:2433:2688:e1f? ([2620:0:1043:fd00:748b:2433:2688:e1f]) by smtp.gmail.com with ESMTPSA id q33-v6sm344761qkq.72.2018.05.15.09.45.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 15 May 2018 09:45:49 -0700 (PDT) Subject: Re: [PATCH v2 1/2] clk: meson: mpll: add round closest support To: Jerome Brunet , Martin Blumenstingl , Kevin Hilman , Carlo Caione Cc: linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org References: <20180515163652.19980-1-jbrunet@baylibre.com> <20180515163652.19980-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: <5deb8162-fc88-5c9e-3d56-bd96794ed6e9@baylibre.com> Date: Tue, 15 May 2018 18:45:47 +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: <20180515163652.19980-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 15/05/2018 18:36, 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 | 24 +++++++++++++++++++----- > drivers/clk/meson/clkc.h | 3 +++ > 2 files changed, 22 insertions(+), 5 deletions(-) > > diff --git a/drivers/clk/meson/clk-mpll.c b/drivers/clk/meson/clk-mpll.c > index 0df1227b65b3..d233549de244 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); > + > + frac *= SDM_DEN; > + > + if (flags & CLK_MESON_MPLL_ROUND_CLOSEST) > + *sdm = DIV_ROUND_CLOSEST_ULL(frac, requested_rate); > + else > + *sdm = DIV_ROUND_UP_ULL(frac, requested_rate); > + > + if (*sdm == SDM_DEN) { > + *sdm = 0; > + div += 1; > + } > > if (div < N2_MIN) { > *n2 = N2_MIN; > @@ -102,7 +115,6 @@ 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); > } > } > > @@ -125,9 +137,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 +154,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