Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp457166yba; Wed, 15 May 2019 04:26:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqziJlE3OvIDXBVg+pjL4e1j/mKuXLKdQFajPH3ZCjzwoCsScm9k/3/lfxGRmos0vYXOt/NK X-Received: by 2002:a17:902:bb96:: with SMTP id m22mr43119768pls.5.1557919604586; Wed, 15 May 2019 04:26:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557919604; cv=none; d=google.com; s=arc-20160816; b=NjXU/SJ8bcwDyxXI6UGFrFqOem5LnlKGO3EBKQW26KhqodwwxCJv6m/teQkDFT/2VY vosBrx9DMzQu98Dq0j34/zBBFJhXRfHmw0GBftgC23JEmqPNn32RZpE2NtmfQfZ2HUsu cPMun/F2nxLqJIACqeJfREhjArnCnHgXRIGKKluT3Uzu7kBHrmmhj8wdN2P2Opd2jetK IOIKYerhcNaO90kAYloosG1Wql5b6okbsaHb2tD2H85wwlpA1MQMwr/JNgOeT1X7lBQ+ /qHEvzs2DbHERijOm/bhixLUqmPe8+Ck8p0z7BvnqHz1iXqMFxIaShO6EwE4x4rP51gw pcNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Pd5/kS0Sm5sxwk6vXNFwULuEdg8pp4DnGbAGtDNMS24=; b=v2lxzHA7Hul+YHbSvXg4aI519aFB/+E97Z8G0JUFvjngG8xATX4kUZxdpSInL4mcld 4OlTtHkMvEICU2bkiQBvlGt7gB/vMOfrZSCyvoXgdrYOXfbXzQsV9JHTgwYbMi0I967C EP67icW7xDGSZeFsHiD11Rj4ZVZsl98Y2A5x/gGCx0jJNDEgH0hFay+lZWG5+ZhPWwCF /zWVzbJrg8rnA30CKQQDXAhvzd0M6f3W6ChnTdEZoNckACPmLvHqknr+K4xvEPg2k800 6I/byd1I85qnVNT5sWauXd241M5Yqyhtd2rwYijB/pc+jyrcau61tHHQxrhAb4Nbu20R kyqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=c0sVzK5M; 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 h68si1662237pgc.270.2019.05.15.04.26.29; Wed, 15 May 2019 04:26:44 -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=@kernel.org header.s=default header.b=c0sVzK5M; 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 S1731744AbfEOLX5 (ORCPT + 99 others); Wed, 15 May 2019 07:23:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:34404 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731733AbfEOLXy (ORCPT ); Wed, 15 May 2019 07:23:54 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9CA1320881; Wed, 15 May 2019 11:23:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1557919433; bh=YpaRltusz5HUgRwQJezvHkc0zwN1UqsAkslKGnYyXT8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=c0sVzK5MLjCUwIRzDeG8aX+u355JPBShZL6rY0iFT19Sw5TCEVwrKmnOk48M+I9yV 47AM+RVngHgHhWPTVjlc/GYywL+S91HFeu3VDfDuAQd10hbOlsYFu+dgPtrUVURWGA nxFc3Od75gYNU5LGmRVP+UImSX8SJOgTX+9XjRW8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Fugang Duan , "David S. Miller" , Sasha Levin Subject: [PATCH 4.19 072/113] net: fec: manage ahb clock in runtime pm Date: Wed, 15 May 2019 12:56:03 +0200 Message-Id: <20190515090658.997993148@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190515090652.640988966@linuxfoundation.org> References: <20190515090652.640988966@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit d7c3a206e6338e4ccdf030719dec028e26a521d5 ] Some SOC like i.MX6SX clock have some limits: - ahb clock should be disabled before ipg. - ahb and ipg clocks are required for MAC MII bus. So, move the ahb clock to runtime management together with ipg clock. Signed-off-by: Fugang Duan Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/freescale/fec_main.c | 30 ++++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 7b98bb75ba8ac..ad41ace0a27a5 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1850,13 +1850,9 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable) int ret; if (enable) { - ret = clk_prepare_enable(fep->clk_ahb); - if (ret) - return ret; - ret = clk_prepare_enable(fep->clk_enet_out); if (ret) - goto failed_clk_enet_out; + return ret; if (fep->clk_ptp) { mutex_lock(&fep->ptp_clk_mutex); @@ -1876,7 +1872,6 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable) phy_reset_after_clk_enable(ndev->phydev); } else { - clk_disable_unprepare(fep->clk_ahb); clk_disable_unprepare(fep->clk_enet_out); if (fep->clk_ptp) { mutex_lock(&fep->ptp_clk_mutex); @@ -1895,8 +1890,6 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable) failed_clk_ptp: if (fep->clk_enet_out) clk_disable_unprepare(fep->clk_enet_out); -failed_clk_enet_out: - clk_disable_unprepare(fep->clk_ahb); return ret; } @@ -3485,6 +3478,9 @@ fec_probe(struct platform_device *pdev) ret = clk_prepare_enable(fep->clk_ipg); if (ret) goto failed_clk_ipg; + ret = clk_prepare_enable(fep->clk_ahb); + if (ret) + goto failed_clk_ahb; fep->reg_phy = devm_regulator_get(&pdev->dev, "phy"); if (!IS_ERR(fep->reg_phy)) { @@ -3578,6 +3574,9 @@ fec_probe(struct platform_device *pdev) pm_runtime_put(&pdev->dev); pm_runtime_disable(&pdev->dev); failed_regulator: + clk_disable_unprepare(fep->clk_ahb); +failed_clk_ahb: + clk_disable_unprepare(fep->clk_ipg); failed_clk_ipg: fec_enet_clk_enable(ndev, false); failed_clk: @@ -3701,6 +3700,7 @@ static int __maybe_unused fec_runtime_suspend(struct device *dev) struct net_device *ndev = dev_get_drvdata(dev); struct fec_enet_private *fep = netdev_priv(ndev); + clk_disable_unprepare(fep->clk_ahb); clk_disable_unprepare(fep->clk_ipg); return 0; @@ -3710,8 +3710,20 @@ static int __maybe_unused fec_runtime_resume(struct device *dev) { struct net_device *ndev = dev_get_drvdata(dev); struct fec_enet_private *fep = netdev_priv(ndev); + int ret; - return clk_prepare_enable(fep->clk_ipg); + ret = clk_prepare_enable(fep->clk_ahb); + if (ret) + return ret; + ret = clk_prepare_enable(fep->clk_ipg); + if (ret) + goto failed_clk_ipg; + + return 0; + +failed_clk_ipg: + clk_disable_unprepare(fep->clk_ahb); + return ret; } static const struct dev_pm_ops fec_pm_ops = { -- 2.20.1