From patchwork Wed Aug 9 04:48:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arvind Yadav X-Patchwork-Id: 9889497 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 67757602D7 for ; Wed, 9 Aug 2017 04:49:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4D2D428971 for ; Wed, 9 Aug 2017 04:49:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 418442897A; Wed, 9 Aug 2017 04:49:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 97EA728971 for ; Wed, 9 Aug 2017 04:49:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1750798AbdHIEsi (ORCPT ); Wed, 9 Aug 2017 00:48:38 -0400 Received: from mail-yw0-f194.google.com ([209.85.161.194]:38611 "EHLO mail-yw0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750797AbdHIEsi (ORCPT ); Wed, 9 Aug 2017 00:48:38 -0400 Received: by mail-yw0-f194.google.com with SMTP id p68so3684293ywg.5; Tue, 08 Aug 2017 21:48:37 -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; bh=yu5QRq9BDZy8WdklYzuldOHvJsB6Yuw41q8mCrKSvLM=; b=HfLawW48315JLU96ej0PsJL1Ax4nwmMeEiZflPx4AMGRzuB/oM1uRqZX6vwpb5Gctb qJKV+hPgHHWQOEpN+aJf4hVjC7H+1xj0KICmay5xFu1/enH1ifpKxdQT/svN1qAj6XYC 9dTohn2Mx/4/ZgSwMwAygUitcerWeQC8kqYJ/wEXZE3Nm3EnaM1EQCi4fEdvqbrkQcI+ b3ytwPZ9gsNpoT1QnpGiiUu6TMhAzxNuQw63HXRSDsq1bYIC+QZX3ZMhKMvijnOP4uP8 7V1mtAMgGZcCTdBdiIL0EkxiU/F2JgINYaEUXBwR6uZfAaFsVSWawWl+VFKcq4tdE+20 3yUw== 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; bh=yu5QRq9BDZy8WdklYzuldOHvJsB6Yuw41q8mCrKSvLM=; b=N+bK0/aSfFlYF8bzlU5ItXA5JlwS1w9NIYBoxMKnqRmd2PMXF+cW45+aZAcflK0IdZ Ad0kEbxDcCd1IurEFTLQTXemk4Wp2m/nafZ0OHhrJl0opLfcCwTCVr2vT39hsY5XTa/c 1gy2Gym7/nM8YsC2HV75LXcEWDmc5Axxwh473ylE/qmEfaRMQ2uhaccvLiRbGWEwingN SJS1wK5ayss60f4PDjhdMKwrGk2ijwRKmu18NIku5jxPlLsOGJZZf48g2jT6q2OOaGTF 8AAiTF90vgBTaa4lahRBwwpvH0KPRyUQyGkSUHUQNVFpZxTOUTDLe9tnMqFoRqvFjB5e ffGg== X-Gm-Message-State: AHYfb5iiTurNvhkg2pgAdP5lc/bwJkDWUqwcck1e2bk8THEpTgGG5WBA +IOYwGvLf7bH9A== X-Received: by 10.129.4.138 with SMTP id 132mr5667756ywe.286.1502254117572; Tue, 08 Aug 2017 21:48:37 -0700 (PDT) Received: from symbol-HP-Z420-Workstation.zebra.lan ([223.31.70.102]) by smtp.googlemail.com with ESMTPSA id e130sm1030736ywh.69.2017.08.08.21.48.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 08 Aug 2017 21:48:37 -0700 (PDT) From: Arvind Yadav To: lee.jones@linaro.org, kgene@kernel.org, krzk@kernel.org Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org Subject: [RFT v2] mfd: exynos-lpass: Handle return value of clk_prepare_enable Date: Wed, 9 Aug 2017 10:18:10 +0530 Message-Id: <8de486cf36afdf97792313a6b21432e04374e47e.1502253715.git.arvind.yadav.cs@gmail.com> X-Mailer: git-send-email 1.9.1 Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP clk_prepare_enable() can fail here and we must check its return value. we must call pm_runtime_disable() and pm_runtime_set_suspended(), If exynos_lpass_probe is not successful. Signed-off-by: Arvind Yadav Tested-by: Marek Szyprowski --- changes in v2: added regmap_exit(lpass->top) and blank line before return. drivers/mfd/exynos-lpass.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/mfd/exynos-lpass.c b/drivers/mfd/exynos-lpass.c index ca829f8..1ab7210 100644 --- a/drivers/mfd/exynos-lpass.c +++ b/drivers/mfd/exynos-lpass.c @@ -73,9 +73,13 @@ static void exynos_lpass_core_sw_reset(struct exynos_lpass *lpass, int mask) regmap_write(lpass->top, SFR_LPASS_CORE_SW_RESET, val); } -static void exynos_lpass_enable(struct exynos_lpass *lpass) +static int exynos_lpass_enable(struct exynos_lpass *lpass) { - clk_prepare_enable(lpass->sfr0_clk); + int ret; + + ret = clk_prepare_enable(lpass->sfr0_clk); + if (ret) + return ret; /* Unmask SFR, DMA and I2S interrupt */ regmap_write(lpass->top, SFR_LPASS_INTR_CA5_MASK, @@ -87,6 +91,8 @@ static void exynos_lpass_enable(struct exynos_lpass *lpass) exynos_lpass_core_sw_reset(lpass, LPASS_I2S_SW_RESET); exynos_lpass_core_sw_reset(lpass, LPASS_DMA_SW_RESET); exynos_lpass_core_sw_reset(lpass, LPASS_MEM_SW_RESET); + + return 0; } static void exynos_lpass_disable(struct exynos_lpass *lpass) @@ -112,6 +118,7 @@ static int exynos_lpass_probe(struct platform_device *pdev) struct exynos_lpass *lpass; void __iomem *base_top; struct resource *res; + int ret; lpass = devm_kzalloc(dev, sizeof(*lpass), GFP_KERNEL); if (!lpass) @@ -136,7 +143,13 @@ static int exynos_lpass_probe(struct platform_device *pdev) platform_set_drvdata(pdev, lpass); pm_runtime_set_active(dev); pm_runtime_enable(dev); - exynos_lpass_enable(lpass); + ret = exynos_lpass_enable(lpass); + if (ret) { + pm_runtime_disable(dev); + pm_runtime_set_suspended(dev); + regmap_exit(lpass->top); + return ret; + } return devm_of_platform_populate(dev); } @@ -167,9 +180,7 @@ static int __maybe_unused exynos_lpass_resume(struct device *dev) { struct exynos_lpass *lpass = dev_get_drvdata(dev); - exynos_lpass_enable(lpass); - - return 0; + return exynos_lpass_enable(lpass); } static const struct dev_pm_ops lpass_pm_ops = {