Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp2914080imc; Wed, 13 Mar 2019 04:33:17 -0700 (PDT) X-Google-Smtp-Source: APXvYqzimGNL6HXFRGw9UroSp2wAmeq7ZzfeacW7e6nw00oHXeV2v58l6ymO4wsjqufl3tXCUOQU X-Received: by 2002:a17:902:6a4:: with SMTP id 33mr45339808plh.140.1552476797073; Wed, 13 Mar 2019 04:33:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552476797; cv=none; d=google.com; s=arc-20160816; b=ziCra9WfN6Re0CqxVQ4T61ucAhdoWFH7QJJevP2wlotlhM86RXsGK+I8lyA0J8Ns2t 1XUpxGedc/lDLX5itwz4x+nUjbeMyqt6uRweC8Q7q3mveLCtlDYIQxmBOCWGTIHHXAfR SqiM6NMWabq4VKTWD6uI64IZ2IboMSs2zSoYKSsleHvlLNwLatP+KYYyIJiOac1j6DPG TNJ9DOIqORLaYsqoBj9qsrJ/WaJ2O4561vEAM6QRY7I//Kh6/AgddUc3O3cdGWKXdv0a sTsGapn2cpjQcLpiqQxNsUA9UBsj3KRb5bVd7keIXhn1WgugdspwKoX438E+63BL41wQ +pDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:dkim-signature:mime-version:message-id :date:subject:cc:to:from; bh=A7umo4lz+biXj6Y0lvPP0q+nh1ziQwUXGC6mJcqRD4g=; b=zasN0Kp9RPRAQZCOsKppxrUoS0YAuZ0WoBgUJZDVNEhNpzgA3PCGqhdu23iZPPdarz /3cb4FHdLxmoXWLmR1gpKC82AiM2pNrVtuid8RtJQFOLPCe5buvl2W3wSiC75VOBzJ/I wfGnYUk7htA9REWZeFSPhykq4EKk7z2CSFuCq2CHr+eBXXHaoBaa5WWHOlz+aUEyPqlT lNK15kJzBKQe/DWU+07lBv6r2qB2e5zE1fD0ZdCC5i07QssOx9imnw424e33A32EEzOh NfsjXryQWZGJn48gNJbLPzDpm+dCDErDEydcJxFkM6nFySfkew6B6r4GzWFs5SRvcik/ CaMA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nvidia.com header.s=n1 header.b=rhgMLpOL; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d2si9688222pgb.137.2019.03.13.04.33.00; Wed, 13 Mar 2019 04:33:17 -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=@nvidia.com header.s=n1 header.b=rhgMLpOL; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nvidia.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726155AbfCMLcm (ORCPT + 99 others); Wed, 13 Mar 2019 07:32:42 -0400 Received: from hqemgate16.nvidia.com ([216.228.121.65]:10264 "EHLO hqemgate16.nvidia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725868AbfCMLcm (ORCPT ); Wed, 13 Mar 2019 07:32:42 -0400 Received: from hqpgpgate101.nvidia.com (Not Verified[216.228.121.13]) by hqemgate16.nvidia.com (using TLS: TLSv1.2, DES-CBC3-SHA) id ; Wed, 13 Mar 2019 04:32:39 -0700 Received: from hqmail.nvidia.com ([172.20.161.6]) by hqpgpgate101.nvidia.com (PGP Universal service); Wed, 13 Mar 2019 04:32:40 -0700 X-PGP-Universal: processed; by hqpgpgate101.nvidia.com on Wed, 13 Mar 2019 04:32:40 -0700 Received: from HQMAIL112.nvidia.com (172.18.146.18) by HQMAIL104.nvidia.com (172.18.146.11) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 13 Mar 2019 11:32:39 +0000 Received: from HQMAIL101.nvidia.com (172.20.187.10) by HQMAIL112.nvidia.com (172.18.146.18) with Microsoft SMTP Server (TLS) id 15.0.1473.3; Wed, 13 Mar 2019 11:32:39 +0000 Received: from hqnvemgw01.nvidia.com (172.20.150.20) by HQMAIL101.nvidia.com (172.20.187.10) with Microsoft SMTP Server (TLS) id 15.0.1473.3 via Frontend Transport; Wed, 13 Mar 2019 11:32:39 +0000 Received: from linux.nvidia.com (Not Verified[10.24.34.185]) by hqnvemgw01.nvidia.com with Trustwave SEG (v7,5,8,10121) id ; Wed, 13 Mar 2019 04:32:39 -0700 From: Sameer Pujar To: , CC: , , , , , Sameer Pujar Subject: [PATCH v3 1/2] dmaengine: tegra210-adma: use devm_clk_*() helpers Date: Wed, 13 Mar 2019 17:02:36 +0530 Message-ID: <1552476757-22360-1-git-send-email-spujar@nvidia.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nvidia.com; s=n1; t=1552476759; bh=A7umo4lz+biXj6Y0lvPP0q+nh1ziQwUXGC6mJcqRD4g=; h=X-PGP-Universal:From:To:CC:Subject:Date:Message-ID:X-Mailer: MIME-Version:Content-Type; b=rhgMLpOLqYzpXaEcm6/CGMzSgctLdxKxi8hWHkXPKlKMOaNM5/mEJs2UUFonhnV/W Tg4DJ/51wus40yN1T4xOSvjmhv8KtEvBHPBaIUREKfKmuFwpRv3rLvEDJz5hAg1fBw 61S0gIWH8/rW/aJa0/c8kLCkvZgTXVHp6iSLC9jy/C/NaZE6lruxDDR5/RTrHpl0A+ /aleNtDyPxIyIRgHCzuJ5YDeqSLV0gbGwQb01dSTJui/zy3QRAg2S6K4AvsPh11l23 jq5A7sJAewLWnIEROfYcnASv73CNnMBPKSdWugsVPmaa/81g3fGCpZYDss9TI2FhQh Gke+3IbPvs5/A== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org adma driver is using pm_clk_*() interface for managing clock resources. With this it is observed that clocks remain ON always. This happens on Tegra devices which use BPMP co-processor to manage clock resources, where clocks are enabled during prepare phase. This is necessary because clocks to BPMP are always blocking. When pm_clk_*() interface is used on such Tegra devices, clock prepare count is not balanced till remove call happens for the driver and hence clocks are seen ON always. Thus this patch replaces pm_clk_*() with devm_clk_*() framework. Suggested-by: Mohan Kumar D Reviewed-by: Jonathan Hunter Signed-off-by: Sameer Pujar --- drivers/dma/tegra210-adma.c | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/drivers/dma/tegra210-adma.c b/drivers/dma/tegra210-adma.c index 5ec0dd9..650cd9c 100644 --- a/drivers/dma/tegra210-adma.c +++ b/drivers/dma/tegra210-adma.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include @@ -141,6 +140,7 @@ struct tegra_adma { struct dma_device dma_dev; struct device *dev; void __iomem *base_addr; + struct clk *ahub_clk; unsigned int nr_channels; unsigned long rx_requests_reserved; unsigned long tx_requests_reserved; @@ -637,8 +637,9 @@ static int tegra_adma_runtime_suspend(struct device *dev) struct tegra_adma *tdma = dev_get_drvdata(dev); tdma->global_cmd = tdma_read(tdma, ADMA_GLOBAL_CMD); + clk_disable_unprepare(tdma->ahub_clk); - return pm_clk_suspend(dev); + return 0; } static int tegra_adma_runtime_resume(struct device *dev) @@ -646,10 +647,11 @@ static int tegra_adma_runtime_resume(struct device *dev) struct tegra_adma *tdma = dev_get_drvdata(dev); int ret; - ret = pm_clk_resume(dev); - if (ret) + ret = clk_prepare_enable(tdma->ahub_clk); + if (ret) { + dev_err(dev, "ahub clk_enable failed: %d\n", ret); return ret; - + } tdma_write(tdma, ADMA_GLOBAL_CMD, tdma->global_cmd); return 0; @@ -693,13 +695,11 @@ static int tegra_adma_probe(struct platform_device *pdev) if (IS_ERR(tdma->base_addr)) return PTR_ERR(tdma->base_addr); - ret = pm_clk_create(&pdev->dev); - if (ret) - return ret; - - ret = of_pm_clk_add_clk(&pdev->dev, "d_audio"); - if (ret) - goto clk_destroy; + tdma->ahub_clk = devm_clk_get(&pdev->dev, "d_audio"); + if (IS_ERR(tdma->ahub_clk)) { + dev_err(&pdev->dev, "Error: Missing ahub controller clock\n"); + return PTR_ERR(tdma->ahub_clk); + } pm_runtime_enable(&pdev->dev); @@ -776,8 +776,6 @@ static int tegra_adma_probe(struct platform_device *pdev) pm_runtime_put_sync(&pdev->dev); rpm_disable: pm_runtime_disable(&pdev->dev); -clk_destroy: - pm_clk_destroy(&pdev->dev); return ret; } @@ -794,7 +792,6 @@ static int tegra_adma_remove(struct platform_device *pdev) pm_runtime_put_sync(&pdev->dev); pm_runtime_disable(&pdev->dev); - pm_clk_destroy(&pdev->dev); return 0; } -- 2.7.4