From patchwork Sun Dec 15 08:41:42 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Shiyan X-Patchwork-Id: 301327 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from mail-fa0-x23d.google.com (mail-fa0-x23d.google.com [IPv6:2a00:1450:4001:c02::23d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 401722C009B for ; Sun, 15 Dec 2013 19:45:46 +1100 (EST) Received: by mail-fa0-f61.google.com with SMTP id n1sf299693fan.6 for ; Sun, 15 Dec 2013 00:45:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20120806; h=mime-version:from:to:cc:subject:date:message-id:in-reply-to :references:x-original-sender:x-original-authentication-results :reply-to:precedence:mailing-list:list-id:list-post:list-help :list-archive:sender:list-subscribe:list-unsubscribe:content-type; bh=iw3BG6+5RDidTgIxvrvbPwTD6RrUP0mv7M7t5yaj59M=; b=l29vfPWlGkdpbNzQufNYLjsbVrC7nRWnFpU8Bffb/QzIpU86Hsq+w0BR/cu3bMFygZ nByGgPp+btLJnZM9UEu+H1MJjr41hD8mSFv+g+a+0G2PIRkGTtezW2b+uWVxBLwTkhG2 fimnx2lVeaQ238Af6Jtn+ahJD/FnRP9Zf2F/z21/QDorupMrBm+BAxt9B8ATgTUhIXiS i34AimrLPbgKTuB4NbjCtFOKnK6yIfncCg8rOgTfbx8matvOeJ57k1RFO2MIpT7E2pT7 HD5t5I8yzlEY1iNB8b1soo+NbVZs+BCtdAgBVkR0aCwLjnwN82Tcz6MxgfIFgr1ejGyJ aYzA== X-Received: by 10.153.6.35 with SMTP id cr3mr1974lad.22.1387097142879; Sun, 15 Dec 2013 00:45:42 -0800 (PST) MIME-Version: 1.0 X-BeenThere: rtc-linux@googlegroups.com Received: by 10.152.5.98 with SMTP id r2ls157086lar.55.gmail; Sun, 15 Dec 2013 00:45:42 -0800 (PST) X-Received: by 10.112.132.161 with SMTP id ov1mr3128582lbb.0.1387097142445; Sun, 15 Dec 2013 00:45:42 -0800 (PST) Received: from smtp41.i.mail.ru (smtp41.i.mail.ru. [94.100.177.101]) by gmr-mx.google.com with ESMTPS id rk7si917129bkb.2.2013.12.15.00.45.42 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Sun, 15 Dec 2013 00:45:42 -0800 (PST) Received-SPF: pass (google.com: domain of shc_work@mail.ru designates 94.100.177.101 as permitted sender) client-ip=94.100.177.101; Received: from [188.134.40.128] (port=3034 helo=shc.zet) by smtp41.i.mail.ru with esmtpa (envelope-from ) id 1Vs7Gy-0000Y6-Om; Sun, 15 Dec 2013 12:42:00 +0400 From: Alexander Shiyan To: rtc-linux@googlegroups.com Cc: Alessandro Zummo , Sascha Hauer , Alexander Shiyan Subject: [rtc-linux] [PATCH 2/6] rtc: mc13xxx: Request IRQs after RTC registration Date: Sun, 15 Dec 2013 12:41:42 +0400 Message-Id: <1387096907-10054-2-git-send-email-shc_work@mail.ru> X-Mailer: git-send-email 1.8.3.2 In-Reply-To: <1387096907-10054-1-git-send-email-shc_work@mail.ru> References: <1387096907-10054-1-git-send-email-shc_work@mail.ru> X-Spam: Not detected X-Mras: Ok X-Original-Sender: shc_work@mail.ru X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of shc_work@mail.ru designates 94.100.177.101 as permitted sender) smtp.mail=shc_work@mail.ru; dkim=pass header.i=@mail.ru Reply-To: rtc-linux@googlegroups.com Precedence: list Mailing-list: list rtc-linux@googlegroups.com; contact rtc-linux+owners@googlegroups.com List-ID: X-Google-Group-Id: 712029733259 List-Post: , List-Help: , List-Archive: Sender: rtc-linux@googlegroups.com List-Subscribe: , List-Unsubscribe: , Interrupts can appear after request_irq and interrupt handlers can use the RTC device, but currently we register RTC after IRQs. This patch changes this order and simplify error path a bit. Signed-off-by: Alexander Shiyan --- drivers/rtc/rtc-mc13xxx.c | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/drivers/rtc/rtc-mc13xxx.c b/drivers/rtc/rtc-mc13xxx.c index 480d51f..2db0dfc 100644 --- a/drivers/rtc/rtc-mc13xxx.c +++ b/drivers/rtc/rtc-mc13xxx.c @@ -325,6 +325,11 @@ static int __init mc13xxx_rtc_probe(struct platform_device *pdev) platform_set_drvdata(pdev, priv); + priv->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, + &mc13xxx_rtc_ops, THIS_MODULE); + if (IS_ERR(priv->rtc)) + return PTR_ERR(priv->rtc); + mc13xxx_lock(mc13xxx); ret = mc13xxx_irq_request(mc13xxx, MC13XXX_IRQ_RTCRST, @@ -342,35 +347,23 @@ static int __init mc13xxx_rtc_probe(struct platform_device *pdev) ret = mc13xxx_irq_request_nounmask(mc13xxx, MC13XXX_IRQ_1HZ, mc13xxx_rtc_update_handler, DRIVER_NAME, priv); if (ret) - goto err_update_irq_request; + goto err_reset_irq_status; ret = mc13xxx_irq_request_nounmask(mc13xxx, MC13XXX_IRQ_TODA, mc13xxx_rtc_alarm_handler, DRIVER_NAME, priv); - if (ret) - goto err_alarm_irq_request; - - mc13xxx_unlock(mc13xxx); - - priv->rtc = devm_rtc_device_register(&pdev->dev, pdev->name, - &mc13xxx_rtc_ops, THIS_MODULE); - if (IS_ERR(priv->rtc)) { - ret = PTR_ERR(priv->rtc); - - mc13xxx_lock(mc13xxx); + if (!ret) { + mc13xxx_unlock(mc13xxx); - mc13xxx_irq_free(mc13xxx, MC13XXX_IRQ_TODA, priv); -err_alarm_irq_request: + return 0; + } - mc13xxx_irq_free(mc13xxx, MC13XXX_IRQ_1HZ, priv); -err_update_irq_request: + mc13xxx_irq_free(mc13xxx, MC13XXX_IRQ_1HZ, priv); err_reset_irq_status: + mc13xxx_irq_free(mc13xxx, MC13XXX_IRQ_RTCRST, priv); - mc13xxx_irq_free(mc13xxx, MC13XXX_IRQ_RTCRST, priv); err_reset_irq_request: - - mc13xxx_unlock(mc13xxx); - } + mc13xxx_unlock(mc13xxx); return ret; }