From patchwork Fri Nov 23 08:41:54 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tushar Behera X-Patchwork-Id: 13130 Return-Path: X-Original-To: patchwork@peony.canonical.com Delivered-To: patchwork@peony.canonical.com Received: from fiordland.canonical.com (fiordland.canonical.com [91.189.94.145]) by peony.canonical.com (Postfix) with ESMTP id 6FA5F23FCD for ; Fri, 23 Nov 2012 08:48:42 +0000 (UTC) Received: from mail-ia0-f180.google.com (mail-ia0-f180.google.com [209.85.210.180]) by fiordland.canonical.com (Postfix) with ESMTP id 12958A19476 for ; Fri, 23 Nov 2012 08:48:41 +0000 (UTC) Received: by mail-ia0-f180.google.com with SMTP id t4so3632981iag.11 for ; Fri, 23 Nov 2012 00:48:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf:from:to:cc :subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=Ul6goK8AEHu2Qt48moRQ1oJ4TecRMUCap/pN+1W+TjQ=; b=bB0Gs90E+emxFonFDlV3vjo03SH3baugg3yOdfTmL6O/kCGgfStWY9ik8i4kNKPH8c Q23JFOT2i/ddrhG2FMLgK0d2vSic8NUyjyzHBJLpolcYrOim7ZpgV7jlOR/1eNsCOL7r UmDJEpVPP8GWGWOEOdf+TX22jk37wS6mBBSt0EWZxm27QBsTJboDHG/cnxGn9ZHj/0O0 K1GJ8yUh5hyBEszBsklsVdCFJ+pDitPPr2ljIGCw6hfm5G768QcIdYOI1t7B8rcPeNjO HnRxRPydzBweP/SO5qzlg5WBb97ZDpgH/NgPczURlPFjtLvQaxJInRPRmdsrOT8UC0I0 otig== Received: by 10.50.161.169 with SMTP id xt9mr5420813igb.62.1353660521814; Fri, 23 Nov 2012 00:48:41 -0800 (PST) X-Forwarded-To: linaro-patchwork@canonical.com X-Forwarded-For: patch@linaro.org linaro-patchwork@canonical.com Delivered-To: patches@linaro.org Received: by 10.50.67.148 with SMTP id n20csp320673igt; Fri, 23 Nov 2012 00:48:41 -0800 (PST) Received: by 10.68.251.197 with SMTP id zm5mr12416568pbc.30.1353660521252; Fri, 23 Nov 2012 00:48:41 -0800 (PST) Received: from mail-pa0-f51.google.com (mail-pa0-f51.google.com [209.85.220.51]) by mx.google.com with ESMTPS id j9si7478575pay.57.2012.11.23.00.48.41 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 23 Nov 2012 00:48:41 -0800 (PST) Received-SPF: neutral (google.com: 209.85.220.51 is neither permitted nor denied by best guess record for domain of tushar.behera@linaro.org) client-ip=209.85.220.51; Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.220.51 is neither permitted nor denied by best guess record for domain of tushar.behera@linaro.org) smtp.mail=tushar.behera@linaro.org Received: by mail-pa0-f51.google.com with SMTP id fb11so3690428pad.38 for ; Fri, 23 Nov 2012 00:48:41 -0800 (PST) Received: by 10.68.253.226 with SMTP id ad2mr12462377pbd.38.1353660521019; Fri, 23 Nov 2012 00:48:41 -0800 (PST) Received: from localhost.localdomain ([115.113.119.130]) by mx.google.com with ESMTPS id jw10sm3495481pbb.20.2012.11.23.00.48.30 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 23 Nov 2012 00:48:35 -0800 (PST) From: Tushar Behera To: linux-kernel@vger.kernel.org, linux-i2c@vger.kernel.org, linux-samsung-soc@vger.kernel.org Cc: w.sang@pengutronix.de, kgene.kim@samsung.com, patches@linaro.org Subject: [PATCH V2 3/4] i2c: s3c2410: Move location of clk_prepare_enable() call in probe function Date: Fri, 23 Nov 2012 14:11:54 +0530 Message-Id: <1353660115-9710-4-git-send-email-tushar.behera@linaro.org> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1353660115-9710-1-git-send-email-tushar.behera@linaro.org> References: <1353660115-9710-1-git-send-email-tushar.behera@linaro.org> X-Gm-Message-State: ALoCoQnzGn7DBKEN9KwdOHPF62Y/Da/hRq3NKJSkP6IDNhdpoizCR0pJEQKu4PkGQrRfb9yLmAcI In i2c-s3c2410 driver probe, only s3c24xx_i2c_init() needs the I2C clock to be enabled. Moving clk_prepare_enable() and clk_disable_unprepare() calls to around this function simplifies the return path of probe call. Signed-off-by: Tushar Behera --- Changes since V1: * Rebased as per the V2 patch series. drivers/i2c/busses/i2c-s3c2410.c | 26 +++++++++++--------------- 1 files changed, 11 insertions(+), 15 deletions(-) diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c index a203917..3f2d632 100644 --- a/drivers/i2c/busses/i2c-s3c2410.c +++ b/drivers/i2c/busses/i2c-s3c2410.c @@ -975,23 +975,20 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) dev_dbg(&pdev->dev, "clock source %p\n", i2c->clk); - clk_prepare_enable(i2c->clk); /* map the registers */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (res == NULL) { dev_err(&pdev->dev, "cannot find IO resource\n"); - ret = -ENOENT; - goto err_clk; + return -ENOENT; } i2c->regs = devm_request_and_ioremap(&pdev->dev, res); if (i2c->regs == NULL) { dev_err(&pdev->dev, "cannot request and map IO\n"); - ret = -ENXIO; - goto err_clk; + return -ENXIO; } dev_dbg(&pdev->dev, "registers %p (%p)\n", @@ -1004,10 +1001,13 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) /* initialise the i2c controller */ + clk_prepare_enable(i2c->clk); ret = s3c24xx_i2c_init(i2c); - if (ret != 0) - goto err_clk; - + clk_disable_unprepare(i2c->clk); + if (ret != 0) { + dev_err(&pdev->dev, "I2C controller init failed\n"); + return ret; + } /* find the IRQ for this unit (note, this relies on the init call to * ensure no current IRQs pending */ @@ -1015,7 +1015,7 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) i2c->irq = ret = platform_get_irq(pdev, 0); if (ret <= 0) { dev_err(&pdev->dev, "cannot find IRQ\n"); - goto err_clk; + return ret; } ret = devm_request_irq(&pdev->dev, i2c->irq, s3c24xx_i2c_irq, 0, @@ -1023,13 +1023,13 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) if (ret != 0) { dev_err(&pdev->dev, "cannot claim IRQ %d\n", i2c->irq); - goto err_clk; + return ret; } ret = s3c24xx_i2c_register_cpufreq(i2c); if (ret < 0) { dev_err(&pdev->dev, "failed to register cpufreq notifier\n"); - goto err_clk; + return ret; } /* Note, previous versions of the driver used i2c_add_adapter() @@ -1054,14 +1054,10 @@ static int s3c24xx_i2c_probe(struct platform_device *pdev) pm_runtime_enable(&i2c->adap.dev); dev_info(&pdev->dev, "%s: S3C I2C adapter\n", dev_name(&i2c->adap.dev)); - clk_disable_unprepare(i2c->clk); return 0; err_cpufreq: s3c24xx_i2c_deregister_cpufreq(i2c); - - err_clk: - clk_disable_unprepare(i2c->clk); return ret; }