From patchwork Mon Mar 11 21:13:37 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Soren Brinkmann X-Patchwork-Id: 2251221 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id CC9873FC8F for ; Mon, 11 Mar 2013 21:16:44 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UFA2v-0005FS-PG; Mon, 11 Mar 2013 21:14:13 +0000 Received: from mail-db8lp0186.outbound.messaging.microsoft.com ([213.199.154.186] helo=db8outboundpool.messaging.microsoft.com) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1UFA2q-0005E5-Ta for linux-arm-kernel@lists.infradead.org; Mon, 11 Mar 2013 21:14:09 +0000 Received: from mail207-db8-R.bigfish.com (10.174.8.248) by DB8EHSOBE018.bigfish.com (10.174.4.81) with Microsoft SMTP Server id 14.1.225.23; Mon, 11 Mar 2013 21:14:00 +0000 Received: from mail207-db8 (localhost [127.0.0.1]) by mail207-db8-R.bigfish.com (Postfix) with ESMTP id 42C9C10015B; Mon, 11 Mar 2013 21:14:00 +0000 (UTC) X-Forefront-Antispam-Report: CIP:149.199.60.83; KIP:(null); UIP:(null); IPV:NLI; H:xsj-gw1; RD:unknown-60-83.xilinx.com; EFVD:NLI X-SpamScore: 0 X-BigFish: VPS0(zzc89bh4015Izz1f42h1ee6h1de0h1202h1e76h1d1ah1d2ahzz8275bhz2fh95h668h839h93fhd24hf0ah119dh1288h12a5h12a9h12bdh137ah139eh13b6h1441h14ddh1504h1537h162dh1631h1758h1898h18e1h1946h19b5h1b0ah906i1155h) Received-SPF: pass (mail207-db8: domain of xilinx.com designates 149.199.60.83 as permitted sender) client-ip=149.199.60.83; envelope-from=soren.brinkmann@xilinx.com; helo=xsj-gw1 ; helo=xsj-gw1 ; Received: from mail207-db8 (localhost.localdomain [127.0.0.1]) by mail207-db8 (MessageSwitch) id 13630364385522_2125; Mon, 11 Mar 2013 21:13:58 +0000 (UTC) Received: from DB8EHSMHS017.bigfish.com (unknown [10.174.8.249]) by mail207-db8.bigfish.com (Postfix) with ESMTP id EE28018004B; Mon, 11 Mar 2013 21:13:57 +0000 (UTC) Received: from xsj-gw1 (149.199.60.83) by DB8EHSMHS017.bigfish.com (10.174.4.27) with Microsoft SMTP Server id 14.1.225.23; Mon, 11 Mar 2013 21:13:57 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-smtp1.xilinx.com) by xsj-gw1 with esmtp (Exim 4.63) (envelope-from ) id 1UFA2e-000294-3y; Mon, 11 Mar 2013 14:13:56 -0700 From: Soren Brinkmann To: Mike Turquette , Shawn Guo , Rajendra Nayak , Andrew Lunn , James Hogan Subject: [PATCH RFC] clk: divider: Tolerate 0 divider for one based dividers Date: Mon, 11 Mar 2013 14:13:37 -0700 X-Mailer: git-send-email 1.8.1.5 MIME-Version: 1.0 X-OriginalArrivalTime: 11 Mar 2013 21:13:54.0075 (UTC) FILETIME=[55EF06B0:01CE1E9D] X-RCIS-Action: ALLOW Message-ID: X-OriginatorOrg: xilinx.com X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130311_171409_181952_398020B0 X-CRM114-Status: GOOD ( 14.10 ) X-Spam-Score: -1.9 (-) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-1.9 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [213.199.154.186 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: Soren Brinkmann , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Handle a zero divider value as one/bypass for dividers which have the CLK_DIVIDER_ONE_BASED flag set. Signed-off-by: Soren Brinkmann --- In Zynq we have a lot of dividers which are one based, but at the same time zero is a valid value which is handled as one/bypass. Also, the reset value of some of these registers is zero, resulting in warnings when the clock framework encounters this. So, my question here is: Are our dividers odd? Does it make sense to allow zero for all one based dividers, as shown in this patch? Or does this behavior qualify for another flag for the divider clocks (e.g. CLK_DIVIDER_ZERO_OKAY)? Thanks, Sören drivers/clk/clk-divider.c | 5 +++-- include/linux/clk-provider.h | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c index 68b4021..6c2a431 100644 --- a/drivers/clk/clk-divider.c +++ b/drivers/clk/clk-divider.c @@ -109,8 +109,9 @@ static unsigned long clk_divider_recalc_rate(struct clk_hw *hw, div = _get_div(divider, val); if (!div) { - WARN(1, "%s: Invalid divisor for clock %s\n", __func__, - __clk_get_name(hw->clk)); + WARN(!(divider->flags & CLK_DIVIDER_ONE_BASED), + "%s: Invalid divisor for clock %s\n", __func__, + __clk_get_name(hw->clk)); return parent_rate; } diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h index 7f197d7..5b19b13 100644 --- a/include/linux/clk-provider.h +++ b/include/linux/clk-provider.h @@ -238,8 +238,8 @@ struct clk_div_table { * Flags: * CLK_DIVIDER_ONE_BASED - by default the divisor is the value read from the * register plus one. If CLK_DIVIDER_ONE_BASED is set then the divider is - * the raw value read from the register, with the value of zero considered - * invalid + * the raw value read from the register. A zero divider is considered to be + * the same as the a value of one. * CLK_DIVIDER_POWER_OF_TWO - clock divisor is 2 raised to the value read from * the hardware register */