From patchwork Mon Apr 9 13:59:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 133041 Delivered-To: patch@linaro.org Received: by 10.46.84.29 with SMTP id i29csp284960ljb; Mon, 9 Apr 2018 06:59:54 -0700 (PDT) X-Google-Smtp-Source: AIpwx494tjQEFY34SPOqVVuAVdUXJN4syKFTC36yU+VnOmKcV+NzsfW2mlM3rKyTcMon4bpJpBxG X-Received: by 2002:a17:902:bd91:: with SMTP id q17-v6mr37055752pls.330.1523282393932; Mon, 09 Apr 2018 06:59:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523282393; cv=none; d=google.com; s=arc-20160816; b=v1vWT6z7VqJzsBpJ8MW9CnlQ19iRyunA2js/tXnnS6mtZTgMyAARH0/qLgp7fa171I TwSp5bBPe2ey3CP2kDk6SpYLutXBTEoJ6vmZQeWrsqPhTUyqk+KjflA9ANgW0S5rbaU1 f1oi7WymXx7traI06RHcxeTDT7zSYvLNyyw3ziEco1nX/8Qw8uy3K0xVEDk6wpzmgyCO yph1jirjSy7/G0aDzn0EJLWlP97gcZLomrMLL8lS29/lpD/XXZMymtHVdajU+oKusWDs wfLbbNjtzEbI/VM8keUV/Q8HwjcBGep5Km7tl0Ba/vyMoOEEOSEg/x0loxSwRirGeVoO 4zTw== 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=GI4FUymi0R/xKzktLIpXIResY883RjcpOMo91hbTtqI=; b=MqOjsj5J0mTgfmFKTHhlVp0B1gfuFN0vzG+DZEdBzaniP+HA7zlqo2KoNk5KseXSUn shUiNRTg8A/f0eDD0Vg3XSkga1ooHFlMicTnzt3Wa0wQlXFmYRhzoiEpqvcJToRZ+PSy jrhRWIC+TkJABTOqjvMGVOGltMUuKrN3nhoo4Frbz/CFZT2ri7QjvsPZmFDyH4QAaAsS BQcyrdMudyt41ExF5obmvI+AwERg/f7nRY5P+QBhDSRJf2Fbc5Z7dxiU8XKON6CiE8p9 JNYBRguB4riOSkXRttJE/V4rgIWCPqwubeDBmCoqZxtFbpHcC0cGaYeC7cjVl/2m8FAQ bmVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=M/Fnko6b; 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 q90si302756pfa.415.2018.04.09.06.59.53; Mon, 09 Apr 2018 06:59:53 -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=M/Fnko6b; 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 S1752925AbeDIN7v (ORCPT + 29 others); Mon, 9 Apr 2018 09:59:51 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:39191 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752498AbeDIN72 (ORCPT ); Mon, 9 Apr 2018 09:59:28 -0400 Received: by mail-wr0-f193.google.com with SMTP id c24so9688993wrc.6 for ; Mon, 09 Apr 2018 06:59:27 -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=GI4FUymi0R/xKzktLIpXIResY883RjcpOMo91hbTtqI=; b=M/Fnko6bYLPQKE2O0J5RY7dYnSaO/Lx2X2yhcP75oj2/bG+H7v39abPuBlnreRBuj4 QmcZnYjyvsXbCf/y/8rJ/ymUovvwiVTiNJUKT3oilXb4exfftY7dM9e9tXJDw08lpJp4 VPkr1F54+9ginFAE2U2aB/xJYgQjvjLLFaxFFj8izzinMauTymRT3a6wHTnn57nY+dVy 8X1mzrozsE0LevYWqeM66EVZGXtu6VHLm0nXaxOwKwgol62i3ZrKlDQNVA+g0tfn+wHj WvpTI5QI5TQER3HghodJpt2vI5PKZyI3ISOhLOVAoW6KZgFvYInGs5rJEtfcGo+vrakL i7WA== 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=GI4FUymi0R/xKzktLIpXIResY883RjcpOMo91hbTtqI=; b=P2M3HEv9YlTVQ5SpfbyH35dOVrVsxSH+YSyriJyoNNd0Ppt/61QViShL3BJB1eaIIS pKJXWtV0e+osO+H1VqbThZGEEpdkogAVk6Jp8hoArwmX7NFAs2FHZAsUPq3QpkTCrTJQ peJKmkmTE2ZK0KNEgDuGyv6FwL5tpT4+XzwRk3Z2fR5C4YmMMOGtFGxprGFWpiC6f8BG 8tIfYWOfaZtBdXlm5EJGUuk6iRtXPZqeesamocuWRK2LupWTZl4Dxszq3ULY047Yj1Fo bSFwHYM03vnLZjIYbENRSxk88SzRIzsdmzrxsR09Ooxo0TBeealHUetI9VpKUGdIxREC QV6g== X-Gm-Message-State: AElRT7EweHKXwmWtjYAYU37ShYofvHwN04bTuprXLJTQbpXkzRYXSMfw T4J60sW4770IAEcNWF5XdEIPqQ== X-Received: by 10.223.195.205 with SMTP id d13mr29328676wrg.0.1523282367129; Mon, 09 Apr 2018 06:59:27 -0700 (PDT) Received: from boomer.baylibre.local ([90.63.244.31]) by smtp.googlemail.com with ESMTPSA id h7sm944684wme.0.2018.04.09.06.59.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 09 Apr 2018 06:59:26 -0700 (PDT) From: Jerome Brunet To: Stephen Boyd , Michael Turquette , Neil Armstrong Cc: Jerome Brunet , Kevin Hilman , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org Subject: [PATCH 1/2] clk: honor CLK_MUX_ROUND_CLOSEST in generic clk mux Date: Mon, 9 Apr 2018 15:59:20 +0200 Message-Id: <20180409135921.5617-2-jbrunet@baylibre.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180409135921.5617-1-jbrunet@baylibre.com> References: <20180409135921.5617-1-jbrunet@baylibre.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org CLK_MUX_ROUND_CLOSEST is part of the clk_mux documentation but clk_mux directly calls __clk_mux_determine_rate(), which overrides the flag. As result, if clk_mux is instantiated with CLK_MUX_ROUND_CLOSEST, the flag will be ignored and the clock rounded down. To solve this, this patch expose clk_mux_determine_rate_flags() in the clk-provider API and uses it in the determine_rate() callback of clk_mux. Fixes: 15a02c1f6dd7 ("clk: Add __clk_mux_determine_rate_closest") Signed-off-by: Jerome Brunet --- drivers/clk/clk-mux.c | 10 +++++++++- drivers/clk/clk.c | 7 ++++--- include/linux/clk-provider.h | 3 +++ 3 files changed, 16 insertions(+), 4 deletions(-) -- 2.14.3 Reviewed-by: Ezequiel Garcia diff --git a/drivers/clk/clk-mux.c b/drivers/clk/clk-mux.c index ac4a042f8658..1628b93655ed 100644 --- a/drivers/clk/clk-mux.c +++ b/drivers/clk/clk-mux.c @@ -112,10 +112,18 @@ static int clk_mux_set_parent(struct clk_hw *hw, u8 index) return 0; } +static int clk_mux_determine_rate(struct clk_hw *hw, + struct clk_rate_request *req) +{ + struct clk_mux *mux = to_clk_mux(hw); + + return clk_mux_determine_rate_flags(hw, req, mux->flags); +} + const struct clk_ops clk_mux_ops = { .get_parent = clk_mux_get_parent, .set_parent = clk_mux_set_parent, - .determine_rate = __clk_mux_determine_rate, + .determine_rate = clk_mux_determine_rate, }; EXPORT_SYMBOL_GPL(clk_mux_ops); diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index ea67ac81c6f9..7af555f0e60c 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -426,9 +426,9 @@ static bool mux_is_better_rate(unsigned long rate, unsigned long now, return now <= rate && now > best; } -static int -clk_mux_determine_rate_flags(struct clk_hw *hw, struct clk_rate_request *req, - unsigned long flags) +int clk_mux_determine_rate_flags(struct clk_hw *hw, + struct clk_rate_request *req, + unsigned long flags) { struct clk_core *core = hw->core, *parent, *best_parent = NULL; int i, num_parents, ret; @@ -488,6 +488,7 @@ clk_mux_determine_rate_flags(struct clk_hw *hw, struct clk_rate_request *req, return 0; } +EXPORT_SYMBOL_GPL(clk_mux_determine_rate_flags); struct clk *__clk_lookup(const char *name) { diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 210a890008f9..1d25e149c1c5 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -765,6 +765,9 @@ int __clk_mux_determine_rate(struct clk_hw *hw, int __clk_determine_rate(struct clk_hw *core, struct clk_rate_request *req); int __clk_mux_determine_rate_closest(struct clk_hw *hw, struct clk_rate_request *req); +int clk_mux_determine_rate_flags(struct clk_hw *hw, + struct clk_rate_request *req, + unsigned long flags); void clk_hw_reparent(struct clk_hw *hw, struct clk_hw *new_parent); void clk_hw_set_rate_range(struct clk_hw *hw, unsigned long min_rate, unsigned long max_rate); From patchwork Mon Apr 9 13:59:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 133040 Delivered-To: patch@linaro.org Received: by 10.46.84.29 with SMTP id i29csp284704ljb; Mon, 9 Apr 2018 06:59:36 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/a7eUq2BL6GTLmBP9N7eAR2ULNMULuEh6QnBMoOnuLxGo6auLGFyj3Pk756uLzhkydPWCs X-Received: by 10.99.160.25 with SMTP id r25mr24329022pge.95.1523282375970; Mon, 09 Apr 2018 06:59:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523282375; cv=none; d=google.com; s=arc-20160816; b=aZbVKEjF+p8CDEtQCRM4ptyXzYZrN4wmyplbqB1qS3BHa+LXc1wRebp9A9h87EWLSO m9OonNcPl7aBYKuGlvkxUTxafRB3HU8bhgfeBR4XnqmNno4zJQcqxIJfIqDKUFg2jnbB 7IPDxvRcKwK/BI+DH/BFuOzM2Ce7Z3b3hnPahmSIltv5YVhkSxZLXJVffKYsvIzwF9Xf TUSnpfy+3k60+AjAkYHaslX+mnsYFgKbfVSLHBdiIQyt3s3vg/2yZAco52WdPblnd971 NQeyU1KTQyD61NRVBVqzU0VUdiyAdHJmqgx8vaZeFctbzmvwvIHELdwVNHl8kGnDSIOk HQ4A== 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=BOAfj0iWUbatIOUZMICI87rUsfw/TA4iaHHCD15/opg=; b=Cl97CmouLIpULVmRghJirMwSdVAWobZNXZXtS6HJXCz4uKVrQHGAtANyDlQj4Le1dy B8n3d+W7gzzlxVDNEbURJp2wZo6VhA6H0YbKvjLtZrZLqBJFj7wIITiPOPu27jOEQZtx PA06iiG1W82cO1kOh6Dv885iRaIxCflo+h/IoHCDcsRBx/+Rst5W8JMCAa3ghx/kmOAe FQUoe0lPrs9lDoLzRkxttmWuX4OtpiiYhveoZF4iU4+3G1W/PrsmrR9TCMVs8U2MoN58 xt08ZFHYXiWZgERF4fqPNms6s+LWQ/FRxcm0ckUKqO5yykZt4NghdesYoh16grU8jdl5 tFKw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=Xjy1mePr; 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 x21-v6si363630pln.749.2018.04.09.06.59.35; Mon, 09 Apr 2018 06:59:35 -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=Xjy1mePr; 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 S1752917AbeDIN7d (ORCPT + 29 others); Mon, 9 Apr 2018 09:59:33 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:53410 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752581AbeDIN73 (ORCPT ); Mon, 9 Apr 2018 09:59:29 -0400 Received: by mail-wm0-f67.google.com with SMTP id 66so13060471wmd.3 for ; Mon, 09 Apr 2018 06:59:28 -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=BOAfj0iWUbatIOUZMICI87rUsfw/TA4iaHHCD15/opg=; b=Xjy1mePrfoTHlRLtlJ2sYelvcoYXMaQIP34kBaIrmiwFtzTPps0JihEzGn21bjkTqd T62MScT55Gi8tv7jObOIRA3ST7mHo9GGsQOw1krl/KyJcox8cLHoDocj6DV1K5HmbL54 ilz4vMD0KS1L/GBXoCQhn1mJFBjCcBjZp+2YNfy8eleGcjUPzFg4Yk5tbh/CtPPuaqc6 xFxn+2qvWgau3aSLCz1lT1lHClgUmOHZwMjjFHu2alFM25/eILcran66ks8h2qFuyktA gRXKqn/dieFqfKZ2B7DCrrGnOE3ofGA9kBMgjlqzsFQfnNWn26ZROCIfio/u4/G739mU RdBA== 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=BOAfj0iWUbatIOUZMICI87rUsfw/TA4iaHHCD15/opg=; b=lvjPd8QcwRKWnRgCKciE/VOH97qTtEuyI6aT2H8W659fzzRyIUffu2/3GEfRbNMDPh FUQW/vSzv0Tc8W+WMngmsm5LtCMl33ejF6ZZdVQ7EXKpVYN0vf7yIGkfdfHtVDT2yMmy QTsIqrTjIWkm85EXM3JV9M6Vwx0yNmltIhZ2X0OMn84ojf8qllx53ehCxPOiKACKLvlU p35UFzTjOPLZkA46ri41Z5ytH4GtJ6d2wmKJDw9Z+iI5vFRvKeoGfXJX9Rp/9jerW1aR T252hM/OD6+aNuzhbnBphnYtSZ61+GPjfT+CxNxR3lzEl4MaPPYK//ELW2DJyOdEXBDy tVjA== X-Gm-Message-State: ALQs6tCDICJbEaaLtKaZozUgdTd6HmPmem3y4xPiqo6SW/5I074aAtID v2b2b+nKV09Yve5752DC25Vybw== X-Received: by 10.28.157.68 with SMTP id g65mr74478wme.31.1523282368172; Mon, 09 Apr 2018 06:59:28 -0700 (PDT) Received: from boomer.baylibre.local ([90.63.244.31]) by smtp.googlemail.com with ESMTPSA id h7sm944684wme.0.2018.04.09.06.59.27 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 09 Apr 2018 06:59:27 -0700 (PDT) From: Jerome Brunet To: Stephen Boyd , Michael Turquette , Neil Armstrong Cc: Jerome Brunet , Kevin Hilman , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, linux-amlogic@lists.infradead.org Subject: [PATCH 2/2] clk: meson: honor CLK_MUX_ROUND_CLOSEST in clk_regmap Date: Mon, 9 Apr 2018 15:59:21 +0200 Message-Id: <20180409135921.5617-3-jbrunet@baylibre.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180409135921.5617-1-jbrunet@baylibre.com> References: <20180409135921.5617-1-jbrunet@baylibre.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Using __clk_mux_determine_rate effectively ignores CLK_MUX_ROUND_CLOSEST if set the related clk_regmap mux instance. Use clk_mux_determine_rate_flags() to make sure the flag is honored. Fixes: ea11dda9e091 ("clk: meson: add regmap clocks") Signed-off-by: Jerome Brunet --- drivers/clk/meson/clk-regmap.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) -- 2.14.3 diff --git a/drivers/clk/meson/clk-regmap.c b/drivers/clk/meson/clk-regmap.c index 3645fdb62343..ab7a3556f5b2 100644 --- a/drivers/clk/meson/clk-regmap.c +++ b/drivers/clk/meson/clk-regmap.c @@ -153,10 +153,19 @@ static int clk_regmap_mux_set_parent(struct clk_hw *hw, u8 index) val << mux->shift); } +static int clk_regmap_mux_determine_rate(struct clk_hw *hw, + struct clk_rate_request *req) +{ + struct clk_regmap *clk = to_clk_regmap(hw); + struct clk_regmap_mux_data *mux = clk_get_regmap_mux_data(clk); + + return clk_mux_determine_rate_flags(hw, req, mux->flags); +} + const struct clk_ops clk_regmap_mux_ops = { .get_parent = clk_regmap_mux_get_parent, .set_parent = clk_regmap_mux_set_parent, - .determine_rate = __clk_mux_determine_rate, + .determine_rate = clk_regmap_mux_determine_rate, }; EXPORT_SYMBOL_GPL(clk_regmap_mux_ops);