From patchwork Thu May 18 22:09:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suman Anna X-Patchwork-Id: 100140 Delivered-To: patch@linaro.org Received: by 10.140.96.100 with SMTP id j91csp44973qge; Thu, 18 May 2017 15:09:52 -0700 (PDT) X-Received: by 10.84.236.4 with SMTP id q4mr1411921plk.10.1495145392238; Thu, 18 May 2017 15:09:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1495145392; cv=none; d=google.com; s=arc-20160816; b=g12sgK8fs9Gjq9BwxuIHtnbIsOBFBjzyBYKX6h1Ukcv35H+WV61kAXvte7NQ95Km3C bysuJSHopQZ0/om6EgMzFXJkGrQi6AARpZ9HYzOUcnPGhbhnz078dtBNwJsfP5l7foOO uww5Hv7j0FVVjTtSLhr/xKBFVxPUGVg4/zaLFatbrJX108nkax8H8jniqqsHGrYIq9nM 5sw0tEj0sqrHTwoyjQH7C3+ql7yud/lS//lIPoOSDjEGiaotidi+OrII/NqIhgX6403A Hc0+TZkdhgqUDKKu+6eFQmnb2qjHIwxnlcn7Zb67Z1NZwfTYvnJ5QD9w+4RNoNNMqBUQ IuKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=iXwm0HrCrzbybVVuAaueLD3qOIKGJ//KPZjfshCsevM=; b=jnNmr9vQLQyVNfoxwqBhaW/1wUcF9fOIkzlrEa8MuWkM80PKcgRQY1wVtiZGE/i/nJ FNnofReDVEPhVnVnI9uyfgYM6CGPtANKPwvatJ+5OONV89JkOQClLePoBGRDLyWP0gqC oyi1F3X7FtDn/URTEj2sVSytQUkfG7lZvPexVp2MjDwHHwF+zLx3kNh6CZk9dA9H6GVg oUS4vhVHoZIxU7skOa5rjpsUqqRD9iYfIXGTVNyIUwY+bJ2xp08Dabo0mlZqmIjf0+Yg Lht93/7T+HdXFtT19UpEqeieQacQ52JpZebWpJd+zY/xmU2HeRSpUpIUWTkNGYW2MZTP 19fA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com; 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=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y133si6394390pfg.257.2017.05.18.15.09.51; Thu, 18 May 2017 15:09:52 -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=@ti.com; 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=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932350AbdERWJe (ORCPT + 25 others); Thu, 18 May 2017 18:09:34 -0400 Received: from lelnx193.ext.ti.com ([198.47.27.77]:45638 "EHLO lelnx193.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756148AbdERWJ3 (ORCPT ); Thu, 18 May 2017 18:09:29 -0400 Received: from dlelxv90.itg.ti.com ([172.17.2.17]) by lelnx193.ext.ti.com (8.15.1/8.15.1) with ESMTP id v4IM94jS008820; Thu, 18 May 2017 17:09:04 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ti.com; s=ti-com-17Q1; t=1495145344; bh=3XVOSfybEYVtQ34A2jLm0YfC5wtyTIjVbgAx7flWfGc=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=fr2IsHNm+qkUyXdwmfjkOYvq5R7/ypbHIinHT1ppVxb2MpF3P8pTJRLLCSSfZ0m5o NJhf/o9z/LSVWgzwhAIiPztpv7JL8TrJh/flOeSfq+z3yOV1X/Vk7lCjmTMSchC5Mt W6V563ADlgcV7eyb8M75cpm8B40mQP/Q4Y84HjGs= Received: from DLEE71.ent.ti.com (dlee71.ent.ti.com [157.170.170.114]) by dlelxv90.itg.ti.com (8.14.3/8.13.8) with ESMTP id v4IM94T4008791; Thu, 18 May 2017 17:09:04 -0500 Received: from dlep32.itg.ti.com (157.170.170.100) by DLEE71.ent.ti.com (157.170.170.114) with Microsoft SMTP Server id 14.3.294.0; Thu, 18 May 2017 17:09:04 -0500 Received: from legion.dal.design.ti.com (legion.dal.design.ti.com [128.247.22.53]) by dlep32.itg.ti.com (8.14.3/8.13.8) with ESMTP id v4IM94lL031332; Thu, 18 May 2017 17:09:04 -0500 Received: from localhost (irmo.dhcp.ti.com [128.247.58.167]) by legion.dal.design.ti.com (8.11.7p1+Sun/8.11.7) with ESMTP id v4IM94323051; Thu, 18 May 2017 17:09:04 -0500 (CDT) From: Suman Anna To: Bjorn Andersson CC: , Sekhar Nori , Robert Tivy , , , Suman Anna Subject: [PATCH 2/4] remoteproc/davinci: simplify the reset function Date: Thu, 18 May 2017 17:09:00 -0500 Message-ID: <20170518220902.2846-3-s-anna@ti.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170518220902.2846-1-s-anna@ti.com> References: <20170518220902.2846-1-s-anna@ti.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The reset_assert() function is used to make sure the DSP remote processor is in a reset state regardless of its previous state. The driver relies on davinci_clk_reset_{assert,deassert}() functions for reset management which take in a clock parameter. The assert_reset() performs a clk_get()/clk_put() cycle to acquire the clock handle to use with this function. This is totally unnecessary and the code can be simplified to use the clock acquired during probe and directly use the reset functions, so simplify this logic. Signed-off-by: Suman Anna --- drivers/remoteproc/da8xx_remoteproc.c | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) -- 2.12.0 diff --git a/drivers/remoteproc/da8xx_remoteproc.c b/drivers/remoteproc/da8xx_remoteproc.c index 3814de28599c..fcd3cecb4967 100644 --- a/drivers/remoteproc/da8xx_remoteproc.c +++ b/drivers/remoteproc/da8xx_remoteproc.c @@ -157,22 +157,6 @@ static const struct rproc_ops da8xx_rproc_ops = { .kick = da8xx_rproc_kick, }; -static int reset_assert(struct device *dev) -{ - struct clk *dsp_clk; - - dsp_clk = clk_get(dev, NULL); - if (IS_ERR(dsp_clk)) { - dev_err(dev, "clk_get error: %ld\n", PTR_ERR(dsp_clk)); - return PTR_ERR(dsp_clk); - } - - davinci_clk_reset_assert(dsp_clk); - clk_put(dsp_clk); - - return 0; -} - static int da8xx_rproc_probe(struct platform_device *pdev) { struct device *dev = &pdev->dev; @@ -223,6 +207,7 @@ static int da8xx_rproc_probe(struct platform_device *pdev) drproc = rproc->priv; drproc->rproc = rproc; + drproc->dsp_clk = dsp_clk; rproc->has_iommu = false; platform_set_drvdata(pdev, rproc); @@ -241,7 +226,7 @@ static int da8xx_rproc_probe(struct platform_device *pdev) * *not* in reset, but da8xx_rproc_start() needs the DSP to be * held in reset at the time it is called. */ - ret = reset_assert(dev); + ret = davinci_clk_reset_assert(drproc->dsp_clk); if (ret) goto free_rproc; @@ -250,7 +235,6 @@ static int da8xx_rproc_probe(struct platform_device *pdev) drproc->ack_fxn = irq_data->chip->irq_ack; drproc->irq_data = irq_data; drproc->irq = irq; - drproc->dsp_clk = dsp_clk; ret = rproc_add(rproc); if (ret) { @@ -268,7 +252,6 @@ static int da8xx_rproc_probe(struct platform_device *pdev) static int da8xx_rproc_remove(struct platform_device *pdev) { - struct device *dev = &pdev->dev; struct rproc *rproc = platform_get_drvdata(pdev); struct da8xx_rproc *drproc = (struct da8xx_rproc *)rproc->priv; @@ -280,7 +263,7 @@ static int da8xx_rproc_remove(struct platform_device *pdev) * Without the reset, the DSP can lockup permanently when it * begins executing garbage. */ - reset_assert(dev); + davinci_clk_reset_assert(drproc->dsp_clk); /* * The devm subsystem might end up releasing things before