From patchwork Thu Feb 25 13:37:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Daniel Lezcano X-Patchwork-Id: 8423461 Return-Path: X-Original-To: patchwork-linux-rockchip@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id E31909F314 for ; Thu, 25 Feb 2016 13:38:44 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 143E120361 for ; Thu, 25 Feb 2016 13:38:44 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D5E23202E6 for ; Thu, 25 Feb 2016 13:38:34 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aYw7k-0001NX-IU; Thu, 25 Feb 2016 13:38:32 +0000 Received: from mail-wm0-x22d.google.com ([2a00:1450:400c:c09::22d]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aYw7Q-0001H7-Kn for linux-rockchip@lists.infradead.org; Thu, 25 Feb 2016 13:38:14 +0000 Received: by mail-wm0-x22d.google.com with SMTP id c200so28921667wme.0 for ; Thu, 25 Feb 2016 05:37:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=eiXdZi8kHRNePpuU//blHZKR+gan11TSUl2eyyupY0s=; b=jDJmPy0O9LXmFaD7WDZZMBExue9kxRShaSWdwsR2c3nUgtdHMrvA3S+CJWbqzQrCHi tTIlvG4TKh+j7ZHUcQ/XDUSFf9eHyqKB8Iiq7bu+gzaDuh6bEKlWl3FEgfZufdlacZfW N1n/KI8IILtQw9tQfkStS0en6As25b+XE/f+M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=eiXdZi8kHRNePpuU//blHZKR+gan11TSUl2eyyupY0s=; b=CXg926PnDo4/ixuL3shd311o2bhuB+ipocAgHSJMXxQTox3DuoNcoFQqJ5KcCFjWAD teR1RGtfmS90fkq9KFQF7LHPICk1Tf6rfMkA7FpVP2RrsHA0yH5fhNInzk8furM/tmPP GzLyhPF8ay3GSR/GzrOcjsmcwsrdjlW2M3/+DAqnc/vIKoNIa4iFBwz1Y0ePNiEcK76Z dDEs/m5xmTBpjn0ccC6Q/XzJnthZQW00L/iecuSA+bYzjjdNgL8dPSm0MIXI3Pqbpegg 8FyQM2+ifh5JYuUyWeHZnA0546yvdsipwdaz2ZNV7Q4CUwWZqKrC0v3vmjb9AupTztux H6zw== X-Gm-Message-State: AG10YOQnFKNu44XhZQLAza3XOIdgQzS0BRKAf3zOorqpOSTWTfHFgEiS6dMDlBrvo/rtA3Of X-Received: by 10.28.72.132 with SMTP id v126mr3829610wma.88.1456407469837; Thu, 25 Feb 2016 05:37:49 -0800 (PST) Received: from mai.com (sju31-1-78-210-255-2.fbx.proxad.net. [78.210.255.2]) by smtp.gmail.com with ESMTPSA id g1sm4056053wmc.0.2016.02.25.05.37.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 25 Feb 2016 05:37:49 -0800 (PST) From: Daniel Lezcano To: tglx@linutronix.de Subject: [PATCH 2/9] clocksource/drivers/rockchip: Add err handle for rk_timer_init Date: Thu, 25 Feb 2016 14:37:10 +0100 Message-Id: <1456407438-6131-2-git-send-email-daniel.lezcano@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1456407438-6131-1-git-send-email-daniel.lezcano@linaro.org> References: <56CF00F6.9010301@linaro.org> <1456407438-6131-1-git-send-email-daniel.lezcano@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160225_053812_892051_CDC5BCC6 X-CRM114-Status: GOOD ( 10.12 ) X-Spam-Score: -2.0 (--) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "open list:ARM/Rockchip SoC..." , Shawn Lin , Heiko Stuebner , "moderated list:ARM/Rockchip SoC..." , "open list:CLOCKSOURCE, CLOC..." MIME-Version: 1.0 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, UNPARSEABLE_RELAY autolearn=no version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Shawn Lin Currently rockchip_timer doesn't do some basic cleanup work when failing to init the timer. Let's add err handle routine to deal with all the err cases. Signed-off-by: Shawn Lin Signed-off-by: Daniel Lezcano --- drivers/clocksource/rockchip_timer.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/clocksource/rockchip_timer.c b/drivers/clocksource/rockchip_timer.c index 8c77a52..b991b28 100644 --- a/drivers/clocksource/rockchip_timer.c +++ b/drivers/clocksource/rockchip_timer.c @@ -122,23 +122,23 @@ static void __init rk_timer_init(struct device_node *np) pclk = of_clk_get_by_name(np, "pclk"); if (IS_ERR(pclk)) { pr_err("Failed to get pclk for '%s'\n", TIMER_NAME); - return; + goto out_unmap; } if (clk_prepare_enable(pclk)) { pr_err("Failed to enable pclk for '%s'\n", TIMER_NAME); - return; + goto out_unmap; } timer_clk = of_clk_get_by_name(np, "timer"); if (IS_ERR(timer_clk)) { pr_err("Failed to get timer clock for '%s'\n", TIMER_NAME); - return; + goto out_timer_clk; } if (clk_prepare_enable(timer_clk)) { pr_err("Failed to enable timer clock\n"); - return; + goto out_timer_clk; } bc_timer.freq = clk_get_rate(timer_clk); @@ -146,7 +146,7 @@ static void __init rk_timer_init(struct device_node *np) irq = irq_of_parse_and_map(np, 0); if (!irq) { pr_err("Failed to map interrupts for '%s'\n", TIMER_NAME); - return; + goto out_irq; } ce->name = TIMER_NAME; @@ -164,10 +164,19 @@ static void __init rk_timer_init(struct device_node *np) ret = request_irq(irq, rk_timer_interrupt, IRQF_TIMER, TIMER_NAME, ce); if (ret) { pr_err("Failed to initialize '%s': %d\n", TIMER_NAME, ret); - return; + goto out_irq; } clockevents_config_and_register(ce, bc_timer.freq, 1, UINT_MAX); + + return; + +out_irq: + clk_disable_unprepare(timer_clk); +out_timer_clk: + clk_disable_unprepare(pclk); +out_unmap: + iounmap(bc_timer.base); } CLOCKSOURCE_OF_DECLARE(rk_timer, "rockchip,rk3288-timer", rk_timer_init);