From patchwork Fri Jul 21 21:20:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Vasut X-Patchwork-Id: 792338 X-Patchwork-Delegate: iwamatsu@nigauri.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="WmxN6IvA"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3xDkMg5Vvdz9s81 for ; Sat, 22 Jul 2017 07:25:51 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 76C7CC21D92; Fri, 21 Jul 2017 21:25:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id DA795C21DD8; Fri, 21 Jul 2017 21:21:10 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 7F13DC21C4F; Fri, 21 Jul 2017 21:20:46 +0000 (UTC) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by lists.denx.de (Postfix) with ESMTPS id BCEE1C21DB8 for ; Fri, 21 Jul 2017 21:20:40 +0000 (UTC) Received: by mail-wr0-f194.google.com with SMTP id y43so13043799wrd.0 for ; Fri, 21 Jul 2017 14:20:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5quixC9bnFqWLRdQg7RvRgiZnWlJehoyfR+rzgSe7MA=; b=WmxN6IvAxm1fv9jM5VlDhU769EOm6UEICqeX2UyOHKCGWCL6sKp3AyuV/louY9VGoE N+SvhZ+rtRsJv3Iszx62hkQl/wz4Wz47pPUSois9of4FtMn8U/lUcH33gn+1vTUJl7vq Y0YXhuI0tSkcsNgXOGvJhhsPAiSCWytuJDwkFa3v5Ps5u7IwQeRY2oKH884nQLYlPA2V tkYeWcCISmruNBtayQR9ZtwN2fsPulB+aiiuFXlkqZ9Lc05fbnYXbQHAuTyVm0yw41lP TkOQ3P6F1ox39cyF3EVvH+J0/Y2E3C83A6ebwaXJWyGziaYbRBkPhLoFspo9XVPn8mbu wGHA== 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=5quixC9bnFqWLRdQg7RvRgiZnWlJehoyfR+rzgSe7MA=; b=eLoqvKeHn9a5XcONvyxwRmtnAz0x0dFZQ7QOGWpiAAzwDsrNRagE/UYK8QVx2ivZ0C JlUAFzjJEfS6uylmm9T8jwC1P6n/bfQBJKxWxlSXCZLeE2RUq/U+YAxWU7QxeGeXX7Xq I1rHBFDfg542IpDYQiMcLq6cJd7MxpionKGBDFCYlkXKitThUpRlvr0rW1G2l4CMwjck 6AwogKfvqPIIxSfb7hJCyLDeEW0VNVUDDMDsPXviVIt7oGaoLBfrQCZM0kWYZZ7XSt5E l79mJnlK/75IdCcLFcqgum37R9k0KbnF0u5gALs1Cv3Pdqh5uZ/4e6/iOsY/XR135Riv 1iKw== X-Gm-Message-State: AIVw112EPMnhiRwlJbDtpH2Iq8QXwWFCS4a2FyZbGcYs4Pk59cU8h6FK fMJ4CbKS6VTwyaMF62o= X-Received: by 10.223.176.68 with SMTP id g4mr11100664wra.26.1500672040262; Fri, 21 Jul 2017 14:20:40 -0700 (PDT) Received: from kurokawa.lan (ip-86-49-107-50.net.upcbroadband.cz. [86.49.107.50]) by smtp.gmail.com with ESMTPSA id y12sm16820631wrb.39.2017.07.21.14.20.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 21 Jul 2017 14:20:39 -0700 (PDT) From: Marek Vasut X-Google-Original-From: Marek Vasut To: u-boot@lists.denx.de Date: Fri, 21 Jul 2017 23:20:35 +0200 Message-Id: <20170721212035.25910-3-marek.vasut+renesas@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170721212035.25910-1-marek.vasut+renesas@gmail.com> References: <20170721212035.25910-1-marek.vasut+renesas@gmail.com> Cc: Joe Hershberger , Marek Vasut Subject: [U-Boot] [PATCH 3/3] net: ravb: Add clock handling support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add support for enabling and disabling the clock using the clock framework based on the content of OF instead of doing it manually in the board file. Signed-off-by: Marek Vasut Cc: Joe Hershberger Cc: Nobuhiro Iwamatsu Acked-by: Joe Hershberger --- drivers/net/ravb.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c index ce0eacceb6..8db127ba06 100644 --- a/drivers/net/ravb.c +++ b/drivers/net/ravb.c @@ -10,6 +10,7 @@ */ #include +#include #include #include #include @@ -120,6 +121,7 @@ struct ravb_priv { struct phy_device *phydev; struct mii_dev *bus; void __iomem *iobase; + struct clk clk; }; static inline void ravb_flush_dcache(u32 addr, u32 len) @@ -432,27 +434,38 @@ int ravb_start(struct udevice *dev) struct ravb_priv *eth = dev_get_priv(dev); int ret; - ret = ravb_reset(dev); + ret = clk_enable(ð->clk); if (ret) return ret; + ret = ravb_reset(dev); + if (ret) + goto err; + ravb_base_desc_init(eth); ravb_tx_desc_init(eth); ravb_rx_desc_init(eth); ret = ravb_config(dev); if (ret) - return ret; + goto err; /* Setting the control will start the AVB-DMAC process. */ writel(CCC_OPC_OPERATION, eth->iobase + RAVB_REG_CCC); return 0; + +err: + clk_disable(ð->clk); + return ret; } static void ravb_stop(struct udevice *dev) { + struct ravb_priv *eth = dev_get_priv(dev); + ravb_reset(dev); + clk_disable(ð->clk); } static int ravb_probe(struct udevice *dev) @@ -466,6 +479,10 @@ static int ravb_probe(struct udevice *dev) iobase = map_physmem(pdata->iobase, 0x1000, MAP_NOCACHE); eth->iobase = iobase; + ret = clk_get_by_index(dev, 0, ð->clk); + if (ret < 0) + goto err_mdio_alloc; + mdiodev = mdio_alloc(); if (!mdiodev) { ret = -ENOMEM;