From patchwork Wed Nov 26 13:08:13 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 41536 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-wi0-f198.google.com (mail-wi0-f198.google.com [209.85.212.198]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 0468D25E18 for ; Wed, 26 Nov 2014 13:09:45 +0000 (UTC) Received: by mail-wi0-f198.google.com with SMTP id r20sf1932480wiv.5 for ; Wed, 26 Nov 2014 05:09:44 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:cc:subject :date:message-id:in-reply-to:references:sender:precedence:list-id :x-original-sender:x-original-authentication-results:mailing-list :list-post:list-help:list-archive:list-unsubscribe; bh=9pCt+lraEk9TpZQtsuILj+fx2GafJC2+d+MajVqf2G4=; b=aQA/PtiO3YtnrsXqpbg+Nr4dOHO9zCKdUqFY+gNnwIFgYfPcsCi8NyOaNhPBGW0Vtt mqM8injcil4GVU6Alm4JRZCAwaLzQwYXMUGbKYhwIxdaYOee/7Q30kRLrYA8TlRSNrWB ECHB8o2hXHdkNxKMjaOosFIdBlKkyWGEgTHgcxHDkpQ5BrGNolrbCq4BtbQWjNWdjcO0 kWktVCohq6JlXFl9h9+Q3botr8vN7L3p1K3szBQ805hVQZjoRFs1Io6h3boeKcvJsnyt JiC63L4rl9ObuLeMSEIVtnFjqtrZqWNA9RlPRnFpN+q/fvVa7goxyK8Xq8HQ+E7Ue7RE 3Wrw== X-Gm-Message-State: ALoCoQlOWt7MwihzyyrqK1TsJjH9z94yEyfRLtKWtEb0Z/8LW4FBndYq1Et/0wHvWJ9NmCNSi9S6 X-Received: by 10.152.10.233 with SMTP id l9mr9152822lab.0.1417007384186; Wed, 26 Nov 2014 05:09:44 -0800 (PST) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.152.22.130 with SMTP id d2ls776581laf.32.gmail; Wed, 26 Nov 2014 05:09:44 -0800 (PST) X-Received: by 10.152.6.228 with SMTP id e4mr33895282laa.71.1417007384008; Wed, 26 Nov 2014 05:09:44 -0800 (PST) Received: from mail-lb0-f172.google.com (mail-lb0-f172.google.com. [209.85.217.172]) by mx.google.com with ESMTPS id r5si4390327lal.3.2014.11.26.05.09.43 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 26 Nov 2014 05:09:43 -0800 (PST) Received-SPF: pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.217.172 as permitted sender) client-ip=209.85.217.172; Received: by mail-lb0-f172.google.com with SMTP id u10so2426555lbd.17 for ; Wed, 26 Nov 2014 05:09:43 -0800 (PST) X-Received: by 10.152.37.69 with SMTP id w5mr33314853laj.67.1417007383874; Wed, 26 Nov 2014 05:09:43 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.112.184.201 with SMTP id ew9csp615833lbc; Wed, 26 Nov 2014 05:09:42 -0800 (PST) X-Received: by 10.68.132.198 with SMTP id ow6mr53033745pbb.61.1417007382035; Wed, 26 Nov 2014 05:09:42 -0800 (PST) Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id bm11si6702977pdb.136.2014.11.26.05.09.35 for ; Wed, 26 Nov 2014 05:09:42 -0800 (PST) Received-SPF: none (google.com: linux-kernel-owner@vger.kernel.org does not designate permitted sender hosts) client-ip=209.132.180.67; Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752632AbaKZNJe (ORCPT + 26 others); Wed, 26 Nov 2014 08:09:34 -0500 Received: from mail-wg0-f43.google.com ([74.125.82.43]:49145 "EHLO mail-wg0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751393AbaKZNIY (ORCPT ); Wed, 26 Nov 2014 08:08:24 -0500 Received: by mail-wg0-f43.google.com with SMTP id l18so3648272wgh.30 for ; Wed, 26 Nov 2014 05:08:23 -0800 (PST) X-Received: by 10.180.81.102 with SMTP id z6mr40886951wix.69.1417007303575; Wed, 26 Nov 2014 05:08:23 -0800 (PST) Received: from mai.lan (135-224-190-109.dsl.ovh.fr. [109.190.224.135]) by mx.google.com with ESMTPSA id c5sm7244307wik.3.2014.11.26.05.08.21 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 26 Nov 2014 05:08:22 -0800 (PST) From: Daniel Lezcano To: tglx@linutronix.de Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ezequiel.garcia@free-electrons.com, yl22@csr.com Subject: [PATCH 3/4] watchdog: orion: Use the reference clock on Armada 375 SoC Date: Wed, 26 Nov 2014 14:08:13 +0100 Message-Id: <1417007294-19869-3-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1417007294-19869-1-git-send-email-daniel.lezcano@linaro.org> References: <5475D044.5060607@linaro.org> <1417007294-19869-1-git-send-email-daniel.lezcano@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: list List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: daniel.lezcano@linaro.org X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of patch+caf_=patchwork-forward=linaro.org@linaro.org designates 209.85.217.172 as permitted sender) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , From: Ezequiel Garcia The 25 MHz reference clock has better stability so its use is prefered over the core clock. Change the Armada 375 clock initialization to use this reference clock. To ensure the driver is compatible with an old devicetree, also provide a fallback path which will silently return to the previous behavior. While here, add the clock specification to the binding documentation. Acked-by: Jason Cooper Acked-by: Gregory CLEMENT Acked-by: Wim Van Sebroeck Reviewed-by: Thomas Petazzoni Tested-by: Thomas Petazzoni Signed-off-by: Ezequiel Garcia Signed-off-by: Daniel Lezcano --- .../devicetree/bindings/watchdog/marvel.txt | 13 +++++++ drivers/watchdog/orion_wdt.c | 42 +++++++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/watchdog/marvel.txt b/Documentation/devicetree/bindings/watchdog/marvel.txt index 97223fd..858ed92 100644 --- a/Documentation/devicetree/bindings/watchdog/marvel.txt +++ b/Documentation/devicetree/bindings/watchdog/marvel.txt @@ -17,6 +17,18 @@ For "marvell,armada-375-wdt" and "marvell,armada-380-wdt": - reg : A third entry is mandatory and should contain the shared mask/unmask RSTOUT address. +Clocks required for compatibles = "marvell,orion-wdt", + "marvell,armada-370-wdt": +- clocks : Must contain a single entry describing the clock input + +Clocks required for compatibles = "marvell,armada-xp-wdt" + "marvell,armada-375-wdt" + "marvell,armada-380-wdt": +- clocks : Must contain an entry for each entry in clock-names. +- clock-names : Must include the following entries: + "nbclk" (L2/coherency fabric clock), + "fixed" (Reference 25 MHz fixed-clock). + Optional properties: - interrupts : Contains the IRQ for watchdog expiration @@ -30,4 +42,5 @@ Example: interrupts = <3>; timeout-sec = <10>; status = "okay"; + clocks = <&gate_clk 7>; }; diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c index 00d0741..8cb1ff3 100644 --- a/drivers/watchdog/orion_wdt.c +++ b/drivers/watchdog/orion_wdt.c @@ -114,6 +114,46 @@ static int armada370_wdt_clock_init(struct platform_device *pdev, return 0; } +static int armada375_wdt_clock_init(struct platform_device *pdev, + struct orion_watchdog *dev) +{ + int ret; + + dev->clk = of_clk_get_by_name(pdev->dev.of_node, "fixed"); + if (!IS_ERR(dev->clk)) { + ret = clk_prepare_enable(dev->clk); + if (ret) { + clk_put(dev->clk); + return ret; + } + + atomic_io_modify(dev->reg + TIMER_CTRL, + WDT_AXP_FIXED_ENABLE_BIT, + WDT_AXP_FIXED_ENABLE_BIT); + dev->clk_rate = clk_get_rate(dev->clk); + + return 0; + } + + /* Mandatory fallback for proper devicetree backward compatibility */ + dev->clk = clk_get(&pdev->dev, NULL); + if (IS_ERR(dev->clk)) + return PTR_ERR(dev->clk); + + ret = clk_prepare_enable(dev->clk); + if (ret) { + clk_put(dev->clk); + return ret; + } + + atomic_io_modify(dev->reg + TIMER_CTRL, + WDT_A370_RATIO_MASK(WDT_A370_RATIO_SHIFT), + WDT_A370_RATIO_MASK(WDT_A370_RATIO_SHIFT)); + dev->clk_rate = clk_get_rate(dev->clk) / WDT_A370_RATIO; + + return 0; +} + static int armadaxp_wdt_clock_init(struct platform_device *pdev, struct orion_watchdog *dev) { @@ -394,7 +434,7 @@ static const struct orion_watchdog_data armada375_data = { .rstout_mask_bit = BIT(10), .wdt_enable_bit = BIT(8), .wdt_counter_offset = 0x34, - .clock_init = armada370_wdt_clock_init, + .clock_init = armada375_wdt_clock_init, .enabled = armada375_enabled, .start = armada375_start, .stop = armada375_stop,