From patchwork Fri Apr 20 09:56:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 133865 Delivered-To: patch@linaro.org Received: by 10.46.66.142 with SMTP id h14csp75732ljf; Fri, 20 Apr 2018 02:56:42 -0700 (PDT) X-Google-Smtp-Source: AIpwx49OVSWs6UsRhT2N/J6UKn5INl7cTS5bCGwWWIUrs4CpcpNgDhjWgnCGiZoG063jguzu/3bK X-Received: by 10.99.125.75 with SMTP id m11mr7948655pgn.391.1524218202010; Fri, 20 Apr 2018 02:56:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524218201; cv=none; d=google.com; s=arc-20160816; b=LxDCSEJkQwKqzX+Qe7jzATrcAF59DK3b9H5YqNRMkABxyqsm542/gbSy39WRkk+wf+ BGPoCdlQaj8NtorUPnXdR4x0WWbHrWD3lVeUiwuNIHC61TY7IU+IzcfRzComIxvpFKfB lD2VccSGN5BB1Y9QL7E9TTI5HG3wdD6zU2iGjUcs0zSYH5BHKrGH+i8jsPGAU2jdhqNm fa4pmGxZib/3E1AKCElRJ70WHd0IHvBn+mnzWR44CVGsMrdZGrffD2t9D9pyw3ekPr+Q NzxMJk7Qs8olrN5EnDJjJIK4JW9508qF8lvO8OmJK7hyWJeQx9lkPhdH3tmtCb+eAw0Z lV7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=iPrwfZ7DzwN7hGK+/Xytwg1LtjtIlIenjfy+iPgBCF8=; b=q80YPPdTJ469btEBh/mXz6ePtV7Y1/JTzWTgMqNTUYinvDKm9QI/pxg1tqfTJBWKsz 6YTG0WNDEN75PpKkuRPtaHP9bkFs8lD93y2ED7qIFYaOvB8mYS0fdN/FQN7bZPJAxluX 4AGdKQL7TLaYJWzNGtjpLpKjSX7U33nH1RBUlltgGljlmd1ccjHTxTer14beauSVboXq /R12C/XhN/1h8zWhwuZlf1sZpS7ZntZ41l8/f/vdj9wq+F8Favd3SuAZVUUAmSoV+oSZ Hdxr0P4ZEPRDv2Q44+Zk7/wugVSUjAvbNV6PWABXxgpl+eAJnKTXdiV9drzC1F1SAxNx JOwg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=d4qPkE/+; 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 b4si4590240pgu.79.2018.04.20.02.56.41; Fri, 20 Apr 2018 02:56:41 -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=d4qPkE/+; 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 S1754579AbeDTJ4i (ORCPT + 29 others); Fri, 20 Apr 2018 05:56:38 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:35889 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754308AbeDTJ4L (ORCPT ); Fri, 20 Apr 2018 05:56:11 -0400 Received: by mail-wr0-f196.google.com with SMTP id m26-v6so3514533wrb.3 for ; Fri, 20 Apr 2018 02:56:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=iPrwfZ7DzwN7hGK+/Xytwg1LtjtIlIenjfy+iPgBCF8=; b=d4qPkE/+fD1k/tU/sLNJ+kv67ywzs7gT9mxPIoTgCSa8y82ODruF0l1iW2wVuM/hx4 8TbAoTrizeoX9PZsEC+Cc+aHLeNRbGNOn80ut4xyXyNdOh/GEE1Zo+yxnGyXkrpYeS8a MyaSxSurierjLxPROfd67XUpJ2smvlU5j7VqF8rmselEsoyBNEIJzDxaQWBVSPMbJ+Wa 77wVSpf7vlw1u9LeKduxOG/fMZeA9TAwKlDoCvJGgZb37VKoM95tGrAkG1Unf+0EvmEC C4eGHRpI+EZCuq4wxdoCcI29AYWgl6BLnaTIH9kxzzEQR3gy0DjIg7AoQXlfIkIe/OhD QqXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=iPrwfZ7DzwN7hGK+/Xytwg1LtjtIlIenjfy+iPgBCF8=; b=ZMy28EQ7l8lq4sj8AkEW9BqEJ5y0BvJF5e5PIwqd7dVGraXhf1BFls0g3Z4GHKEdQQ VwjV1gVzlbfZnL6ayobTy7no9bqC3bbUviT73Kg/B5XiNC9eqLsJYe6N3VB38VO+hIp9 S/ePto8AaL39sjD5b30c+1AmXCorB+N+vzGTV8kb8L7NbAM3/WuGRl93UIuwL0om6ZGM jYNx6WwNX/LsqA2TX2z5ItECwXgDru3peXo86ok66WeJn26P1y7zuZZs4dNfLJ59+GvX EJ2wZ52i9Z7gK/h+s49yXE5TCyKbkQBoaGBgib+OOxBO4F1oUkx5JxEFi6RUDcY6JOzO 8UJQ== X-Gm-Message-State: ALQs6tDUvI7XddIVIJgc8j3fnt3diAAMvJvRxOCXwJNZGnVkjYEfdSm+ HEMHop+3ozgrsvnLtP72CG6Vkw== X-Received: by 10.28.17.18 with SMTP id 18mr1517591wmr.125.1524218170470; Fri, 20 Apr 2018 02:56:10 -0700 (PDT) Received: from boomer.lan (cag06-3-82-243-161-21.fbx.proxad.net. [82.243.161.21]) by smtp.googlemail.com with ESMTPSA id t46-v6sm4477100wrc.95.2018.04.20.02.56.09 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Apr 2018 02:56:09 -0700 (PDT) From: Jerome Brunet To: Neil Armstrong , Kevin Hilman Cc: Jerome Brunet , linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/2] clk: meson: mpll: add round closest support Date: Fri, 20 Apr 2018 11:56:02 +0200 Message-Id: <20180420095603.29964-2-jbrunet@baylibre.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180420095603.29964-1-jbrunet@baylibre.com> References: <20180420095603.29964-1-jbrunet@baylibre.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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(-) -- 2.14.3 Acked-by: Neil Armstrong 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; From patchwork Fri Apr 20 09:56:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 133864 Delivered-To: patch@linaro.org Received: by 10.46.66.142 with SMTP id h14csp75551ljf; Fri, 20 Apr 2018 02:56:25 -0700 (PDT) X-Google-Smtp-Source: AIpwx49ZvHy/0GqoKZeYhZDeBfQKXAAa/efhUHo+00XZzfAI4g+5m6FmUkvjDy+Kv5FFhXN+QSAp X-Received: by 10.98.196.19 with SMTP id y19mr4465494pff.97.1524218184925; Fri, 20 Apr 2018 02:56:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524218184; cv=none; d=google.com; s=arc-20160816; b=OFKqeGklMacOXNFz/HgzQNzkw6d46PWN+QBAV1PXRlFzX9W+3bHMMDRqvSVCGlKOT8 Ujx38Jd08+gJNDatn6BBbE98Cvewgjn/g9K04gy2JgUdWE9HNxTziNiqyNkyVcjubmIl Xyb+moq0un9IT5C78otptuKhhjJyRpDZKUXUEg6QImLHB/cNr9NFSy/uC6npjAgdJcPa /dzqITo4A8dTkA+JwRktouZ4q22ZevHuP1dLlgMDhjNM0Uz0VH3smiJHzH8eZpnrQlEk 2Hv52GbHM4nsgY+5SiK8echeasHlKI/g2dlawM8KgZYEpTJE+6ou/uaOUZrcjPUleq+s K8Mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=xlipNCPIHP1kQTkEVMNyH8fmfI1WeuC8PKe0sQw0lXc=; b=D+3LEV9mOCaHPXEkwvJe/dPnPBCjLDOh1ByGkxUe12/bYHi94/jy10EYW+/pngrA/Y 6INXAq4kLjgJtPamWgnx/2rdEvV2fICLCpbjpum3vt30QRSCfp0KEFFILZZxpH7sPHvs qBWpQKz9VLDeDyY3Xxuk5nssWQW5ifqdSlgD448Kp9ZD2eYhLZ/x8OzYhZ6nmBJo4VDL areNplwzNS8jaakiHwgg7+nyA+fHnu87wpsemplrhNZYFNhS4efufSs/h+U/5sv6njrI OQKmZYSJeg16GS7Qwm0dn1wkDcdYjNFgqsOLs2appYia/T4uIr0E34ZX8ZtUz6koSz8K AtjA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=VveLRaQA; 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 7-v6si5427542plc.164.2018.04.20.02.56.24; Fri, 20 Apr 2018 02:56:24 -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=VveLRaQA; 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 S1754563AbeDTJ4U (ORCPT + 29 others); Fri, 20 Apr 2018 05:56:20 -0400 Received: from mail-wr0-f194.google.com ([209.85.128.194]:37416 "EHLO mail-wr0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754523AbeDTJ4M (ORCPT ); Fri, 20 Apr 2018 05:56:12 -0400 Received: by mail-wr0-f194.google.com with SMTP id f14-v6so21374082wre.4 for ; Fri, 20 Apr 2018 02:56:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=xlipNCPIHP1kQTkEVMNyH8fmfI1WeuC8PKe0sQw0lXc=; b=VveLRaQAzLogQxGKDk+UBHsZ0kbj/m0zgUKFnEhr/cdhY98u/+xi7Rj+HIPyRKnuII h4LAVO7RULOrmOrQbFExkGQVGxSNqrQlAe6EVjoWoYYqMlrnPy6rs6oeeaWj2jp6h0hT vkaAy49dUfSpvYnNby0v3j6sDYt8yaqD4ySZKtPI+RQoL/bQkxA06rRLhYaTRHpHQ7rj 2tDpwZIQ9KZhnMqi5GZOXHn41KVyzMGqhDV+iZZF6gWag1ZR+5JqO5py08fFgGwI0Qae VOwB5rBObQ19L0HmABg1JqzdE1Z5gCU4lMIXuGPyryW5KSoca1RemfUJVvpxYzvzsKXQ EILQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=xlipNCPIHP1kQTkEVMNyH8fmfI1WeuC8PKe0sQw0lXc=; b=WQnG4RHSVSkbNYLoCL2U4ceCBjcTlEMy1bD6rEl7M2OtAcLg9fd6ca93xZJh5GY3xS yVf01NgjNQm8gU6TJ4rxPZkTFLmJ0e/Lhy5neJBjzOlqHTpaq7FrXvRzRN55+4Gs+IAt +732MDAWhcHbb6oe/FKtEAov6olqx3wRRbYVgki+GT9rziha4XNoIeZr9EvtDTXDNKwm P6pDdOSpWTFgdJ2AyttVcEKra4bKYI1hS5OPgIXzprGxr+0WAQma7xflxsoFmJoq0hFO yMxDqpJ4e1aE6qTWbf1d2+SMFGrlf/AQrLGJpOjn02rGOZepRVJXwOe5wqnhWc9JZMlP v1UA== X-Gm-Message-State: ALQs6tCaYv3wV+tCzqMB4gs2u5h2Etcbkqpp2FxJ1E3r7HwS+m4I8Xlz pPwnehGpjJKlcvjIbi5ZJ6c8Qg== X-Received: by 2002:adf:b859:: with SMTP id u25-v6mr7679106wrf.162.1524218171583; Fri, 20 Apr 2018 02:56:11 -0700 (PDT) Received: from boomer.lan (cag06-3-82-243-161-21.fbx.proxad.net. [82.243.161.21]) by smtp.googlemail.com with ESMTPSA id t46-v6sm4477100wrc.95.2018.04.20.02.56.10 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 20 Apr 2018 02:56:11 -0700 (PDT) From: Jerome Brunet To: Neil Armstrong , Kevin Hilman Cc: Jerome Brunet , linux-amlogic@lists.infradead.org, linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/2] clk: meson: axg: let mpll clocks round closest Date: Fri, 20 Apr 2018 11:56:03 +0200 Message-Id: <20180420095603.29964-3-jbrunet@baylibre.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180420095603.29964-1-jbrunet@baylibre.com> References: <20180420095603.29964-1-jbrunet@baylibre.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Let the mpll dividers achieve the closest rate possible, even if it means rounding the requested rate up. This is done to improve the accuracy of the rates provided by these plls to the audio subsystem Signed-off-by: Jerome Brunet --- drivers/clk/meson/axg.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.14.3 Acked-by: Neil Armstrong diff --git a/drivers/clk/meson/axg.c b/drivers/clk/meson/axg.c index 5f5d468c1efe..bd4dbc696b88 100644 --- a/drivers/clk/meson/axg.c +++ b/drivers/clk/meson/axg.c @@ -461,6 +461,7 @@ static struct clk_regmap axg_mpll0_div = { .width = 1, }, .lock = &meson_clk_lock, + .flags = CLK_MESON_MPLL_ROUND_CLOSEST, }, .hw.init = &(struct clk_init_data){ .name = "mpll0_div", @@ -507,6 +508,7 @@ static struct clk_regmap axg_mpll1_div = { .width = 1, }, .lock = &meson_clk_lock, + .flags = CLK_MESON_MPLL_ROUND_CLOSEST, }, .hw.init = &(struct clk_init_data){ .name = "mpll1_div", @@ -553,6 +555,7 @@ static struct clk_regmap axg_mpll2_div = { .width = 1, }, .lock = &meson_clk_lock, + .flags = CLK_MESON_MPLL_ROUND_CLOSEST, }, .hw.init = &(struct clk_init_data){ .name = "mpll2_div", @@ -599,6 +602,7 @@ static struct clk_regmap axg_mpll3_div = { .width = 1, }, .lock = &meson_clk_lock, + .flags = CLK_MESON_MPLL_ROUND_CLOSEST, }, .hw.init = &(struct clk_init_data){ .name = "mpll3_div",